计划查询和集群

时间:2018-10-19 10:01:07

标签: google-bigquery dml

在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(=报告日期)上按时间划分,并在siteId,channelId上聚集

1 个答案:

答案 0 :(得分:0)

截至2018年10月23日,似乎BigQuery计划的查询功能确实支持WRITE_TRUNCATE加载模式结合集群

确实起作用的工作是使用DML语句写入集群目标表。