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 分析数据的每日计划

通过数据范围抛出错误在 Bigquery 中查询多个 Google Analytics Raw 表

Bigquery - 安排存储过程不再工作

Bigquery crashlytics 数据集计划间隔

BigQuery 中的相关计划 SQL 查询

如何在视图或计划查询之间进行选择,以对通过 Stitch 导入的 BigQuery 表进行重复数据删除?