BigQuery 计划数据传输抛出“不兼容的表分区规范”。错误 - 但错误消息被截断
Posted
技术标签:
【中文标题】BigQuery 计划数据传输抛出“不兼容的表分区规范”。错误 - 但错误消息被截断【英文标题】:BigQuery Scheduled Data Transfer throws "Incompatible table partitioning specification." Error - but error message is truncated 【发布时间】:2021-01-19 18:48:57 【问题描述】:我正在使用新的 BQ 数据传输 UI,在安排数据传输时,传输失败。 运行历史记录中的错误消息并没有太大帮助,因为错误消息似乎被截断了。
Incompatible table partitioning specification. Expects partitioning specification interval(type:hour), but input partitioning specification is ; JobID: xxxxxxxxxxxx
请注意错误中显示...“但输入分区规范是...”的部分,分号前没有任何内容。似乎此错误已被截断。
关于运行的一些细节: 该运行每晚从位于 GCS 存储桶中的 CSV 文件导入数据。成功摄取后,该过程将删除该文件。 BQ中的目标表是使用默认分区伪列(_PARTITIONTIME)的分区表
到目前为止我做了什么:
-
重新运行计划的数据传输 - 失败并引发了同样的错误
删除 BQ 中的目标表并使用不同的分区规范(日、小时、月)重新创建它 - 然后重新运行计划传输 - 失败并引发相同的错误。
使用 BQ UI(创建表,附加特定表)手动导入数据(我从 GCS 下载文件并从我的机器本地上传) - 完美运行。
检查了这是否是 Stack Overflow 上的一个已知问题,只发现了这个问题(现已关闭)——关闭,但不完全是问题。 (BigQuery Data Transfer Service with BigQuery partitioned table)
我正在推迟做的事情,因为这需要更多的工作。
-
更改目标 BQ 表的架构以包含特定于分区的指定列
在 GCS 内部的原始文件中包含系统生成的时间戳,并确保进程将其识别为分区字段。
我做错了吗?或者这是一个已知问题?
【问题讨论】:
【参考方案1】:好的,我相信我已经解决了这个问题。如果目标表正在分区,您似乎需要在目标表中包含运行时参数。
https://cloud.google.com/bigquery-transfer/docs/gcs-transfer-parameters
这部分具体称为“运行时参数示例”:https://cloud.google.com/bigquery-transfer/docs/gcs-transfer-parameters#loading_a_snapshot_of_all_data_into_an_ingestion-time_partitioned_table
他们还建议不能在这些参数中指定分钟。
您需要将参数附加到目标表详细信息,如下所示:
【讨论】:
以上是关于BigQuery 计划数据传输抛出“不兼容的表分区规范”。错误 - 但错误消息被截断的主要内容,如果未能解决你的问题,请参考以下文章
BigQuery 中使用 Firebase 分析数据的每日计划