如何在 BigQuery UI 中插入覆盖分区表?

Posted

技术标签:

【中文标题】如何在 BigQuery UI 中插入覆盖分区表?【英文标题】:How to insert overwrite partitioned table in BigQuery UI? 【发布时间】:2018-01-19 13:09:59 【问题描述】:

我们可以将数据插入到分区表的特定分区中,这里我们需要指定分区值。但我的要求是使用UI在一次查询中覆盖表中的所有分区。我们可以执行这个操作吗?

【问题讨论】:

只是出于好奇,您为什么需要这样做? @GrahamPolley 因为 pub/sub 只有 7 天的消息保留期,我们目前正在开发中,我想覆盖已更新日期的分区数据(我们可以看到 youtube 传输文件成功日期在 BigQuery 界面中)。我可以重新创建整个表,但由于有几 TB 的数据,这将花费我们一些美元。感谢您提供以下数据流提示。 【参考方案1】:

咨询了 bigquery 团队成员。您不能在一个查询中写入所有分区。

一次只能写入一个分区。

【讨论】:

【参考方案2】:

正如YY 所指出的那样,您无法通过一个查询直接在 BigQuery/SQL 中执行此操作(您可以编写一些脚本来运行 N 个查询)。但是,如果您启动 Cloud Dataflow 管道并将其配置为具有多个 BigQueryIO 接收器,每个接收器(接收器)覆盖一个分区,这可能是我能想到的一次性完成的一种方式。这将是一个直接启动和运行的管道。

【讨论】:

【参考方案3】:

目前,BigQuery 允许在单个语句中更新多达 2000 个分区。如果您只需要向分区表中插入数据,则可以使用 INSERT DML 语句在一个语句中写入多达 2000 个分区。如果要更新或删除现有分区,可以分别使用 UPDATE 或 DELETE 语句。如果您同时更新和插入新数据,则可以使用 MERGE DML 语句来实现。

【讨论】:

以上是关于如何在 BigQuery UI 中插入覆盖分区表?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 bigquery 中创建分区表

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

将超过 7 天的数据插入分区 BigQuery 表

BigQuery 分区表

BigQuery 从现有表插入分区表

如何将查询结果插入 BigQuery 前缀表