在 Bigquery 中的分区表上插入查询

Posted

技术标签:

【中文标题】在 Bigquery 中的分区表上插入查询【英文标题】:Insert query on Partitioned tables in Bigquery 【发布时间】:2017-12-19 15:12:28 【问题描述】:

我有一些在 hive 中编写的插入查询要在 Bigquery 中迁移。 例如:

insert into test.abc partition(yrmth) select * from test.xyz

在 Bigquery 中,仅支持YYYYMMDD 格式的分区。通过加载test.abc$20171125,我可以通过 BQ 命令行工具转储分区表中的数据。

如何在 Bigquery 中使用 DML 语句实现相同的目的?

我了解到 Legacy SQL 不支持编写 DML 语句,Standard SQL 不支持像 test.abc$20171125 这样的表规范,这是在相应分区中加载数据所需的。

【问题讨论】:

见issuetracker.google.com/issues/36383555 【参考方案1】:

您是正确的 - 分区表不支持 DML 语句。

只需简单地选择select * from test.xyz 和目标表test.abc$20171125。 Web UI、bq 命令行、API 和您选择的任何客户端都支持此功能

如果您想尝试alpha release for column based partitioned tables,请查看https://issuetracker.google.com/issues/36383555 - DML over partitioned tables 是其中的一部分

【讨论】:

只是一个问题:您不能通过将值插入 _PARTITIONTIME 列来创建/附加到所需的分区来做同样的事情吗?喜欢:INSERT INTO table (_PARTITIONTIME, column1, ..) SELECT TIMESTAMP('2018-04-05'), value1, .. FROM tableB 检查这个 - cloud.google.com/bigquery/docs/…

以上是关于在 Bigquery 中的分区表上插入查询的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在保留缓存的同时流式传输到 BigQuery 分区表?

bigquery 自动更新表

Bigquery 分区表中的重复项

BigQuery 中的分区表

使用模板表的 BigQuery 流式插入 - 503 错误

bigquery 分区表的分区修剪