【发布时间】:2019-03-24 05:07:20
【问题描述】:
似乎无法在 BigQuery 中安排写入时间分区和集群目标表的查询(使用 WRITE_TRUNCATE 和分区装饰器):我们收到错误消息:
Invalid value: Incompatible table partitioning specification. Expects partitioning specification interval(type:day) clustering(siteId,channelId), but input partitioning specification is interval(type:day)
我不明白为什么会这样,集群规范不只是表定义的一部分吗?当执行 dml 在已经聚集的表中插入数据时,我们也不需要指定任何额外的内容。或者这与我们在预定查询中不使用 DML 有关吗?
编辑:计划查询结构如下所示:
SELECT
reportDate,
channelId,
siteId,
pageType,
[MORE_COLUMNS_SELECT),
SUM(timeOnPage) AS timeOnPage_agg,
ARRAY_AGG(STRUCT( sessionId,
[MORE_COLUMNS_NESTED)
) AS Details
----
FROM `project.dataset.viewname`
WHERE reportDate >= TIMESTAMP_TRUNC(TIMESTAMP_ADD(@run_time, INTERVAL -1 DAY), DAY)
AND reportDate < TIMESTAMP_TRUNC(@run_time, DAY)
GROUP BY
reportDate,
channelId,
siteId,
pageType,
[MORE_COLUMNS_SELECT)
我正在将此查询的结果写入目标表,如下所示: TARGET_TABLE_NAME${run_time-24h|"%Y%m%d"}
该表在 _PARTITIONTIME(= Reportdate)时间分区并且在 siteId、channelId 上集群
【问题讨论】:
-
请file a bug 尽可能详细地说明您的配置。这听起来像是计划查询功能的一个限制,它没有考虑到集群。
-
请提供上下文!您要运行什么查询,我可以尝试运行类似的查询...
-
嗨@FelipeHoffa,我已经在这篇文章中添加了示例模式。 Elliott Brossard 提到的可能是正确的,我今天要检查它是否适用于预定的 DML 语句
标签: google-bigquery dml