BigQuery 动态表分区

Posted

技术标签:

【中文标题】BigQuery 动态表分区【英文标题】:BigQuery Dynamic Table Partitions 【发布时间】:2016-06-06 19:56:14 【问题描述】:

当我尝试在 BigQuery 的 Web UI 中的查询中使用动态表分区时(例如记录在案的 here),即

SELECT * FROM [dataset.table$0-of-3]

我收到以下错误:

Error: Cannot read partition information from a table that is not partitioned: project:dataset.table$0-of-3

当我尝试使用新日期分区 (bq mk --time_partitioning_type=DAY ...) 分区的表时,我没有收到错误,而是:

Query returned zero records.

另外,我再也找不到有关此功能的文档了。是否已弃用?

【问题讨论】:

【参考方案1】:

我没有足够的声誉来评论 Mikhail 的答案——所以在这里添加一个答案。

至少目前,本书中描述的动态表分区已被弃用,取而代之的是最新 BigQuery 文档中描述的表分区。

我们希望在未来提供更丰富的分区风格,但它们不一定可以用作表装饰器。

【讨论】:

嗨,Pavan,这是否意味着现在导出到 Cloud Storage 是从 BigQuery 检索数据的唯一快速方法? 抱歉,我不确定我是否理解您的评论。您可以直接或通过 WHERE 子句查询特定日期的分区。例如,要从分区表中读取该日期的所有数据,请使用:SELECT * from dataset.table$20160602 或 SELECT * from dataset.table WHERE _PARTITIONTIME = TIMESTAMP("2016-06-02")【参考方案2】:

这个 ($0-of-3) 功能从未实现 - 希望它会在某个时候实现。 最近实现的唯一分区装饰器用于日期分区表。在Partitioned Tables 和timePartitioning.type 上查看更多信息

【讨论】:

以上是关于BigQuery 动态表分区的主要内容,如果未能解决你的问题,请参考以下文章

在 BigQuery 中动态查询多个表

带有 BigQuery 的动态表后缀不限制处理的数据

将流数据与 Dataflow SQL 中的动态 BigQuery 表连接起来

是否有任何形式可写入 BigQuery 以动态指定目标表的名称?

如何在 google bigquery 数据集中创建动态表并在 tableau 中访问?

如何在 Google bigquery 中为多个动态表创建授权视图?