google-bigquery - 计划查询和集群
问题描述
似乎无法在 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 上聚集
解决方案
截至 2018 年 10 月 23 日,BigQuery 计划查询功能似乎不支持 WRITE_TRUNCATE 加载模式与 clustering 结合使用。
然而,真正起作用的是使用 DML 语句写入聚集的目标表。
推荐阅读
- swift - 通过在 Swift 中的复选标记从不同的表视图中检索数据
- android - 带有标题的嵌套选项卡导航器
- javascript - 如何使用带有 setTimeout 的 React 的 getDerivedStateFromProps?
- php - 尽管代码看起来不错,但“禁止覆盖 WordPress 全局变量”
- php - Yii PHP 添加分页到我的网站
- python - 鹡鸰定制管理员
- javascript - 如何从 html 的侧边栏菜单中选择项目详细信息?
- ios - ios swift 创建圆形头像,如 twitter、instagram、
- haskell - Haskell - 无法推断实例
- ios - iOS 中“已弃用”的真正含义是什么