【问题标题】:Scheduled queries and clustering计划查询和集群
【发布时间】: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


【解决方案1】:

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

然而,DOES 的工作原理是使用 DML 语句写入聚集的目标表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    相关资源
    最近更新 更多