尚不支持 BigQuery、非分区表上的通配符表和基于字段的分区表

Posted

技术标签:

【中文标题】尚不支持 BigQuery、非分区表上的通配符表和基于字段的分区表【英文标题】:BigQuery, Wildcard table over non partitioning tables and field based partitioning tables is not yet supported 【发布时间】:2021-04-07 14:24:54 【问题描述】:

我正在尝试在 Bigquery 上使用标准 SQL 运行带有通配符表的简单查询。代码如下:

#standardSQL
SELECT dataset_id, SUM(totals.visits) AS sessions
FROM `dataset_*`
WHERE _TABLE_SUFFIX BETWEEN '20150518' AND '20210406'
GROUP BY 1

自 2015 年 5 月 18 日以来,我的分片数据集每天都包含一个表。所以今天的表格将是“dataset_20150518”。

错误是:'不支持非分区表和基于字段的分区表上的通配符表,第一个普通表 dataset_test,第一个列表 dataset_20150518。'

我尝试了不同类型的选择和聚合,但错误无法修复。我只想查询该时间范围内的所有表。

【问题讨论】:

【参考方案1】:

这是因为在通配符中,您必须让所有表都具有相同的架构。在您的情况下,您还添加了 dataset_test 与其他架构不同的架构(dataset_test 是分区表?)

您应该能够通过删除 _test 和其他具有不同架构的表或运行此查询来解决此限制:

#standardSQL
SELECT dataset_id, SUM(totals.visits) AS sessions
FROM `dataset_20*`
WHERE _TABLE_SUFFIX BETWEEN '150518' AND '210406'
GROUP BY 1

Official documentation

【讨论】:

以上是关于尚不支持 BigQuery、非分区表上的通配符表和基于字段的分区表的主要内容,如果未能解决你的问题,请参考以下文章

具有集群和分区的表上的 Bigquery SQL 性能问题

有没有办法在 BigQuery 表上创建自定义日分区?

BigQuery - 分区表上的 DML 支持

从 BigQuery 中的最新表分区通配符查询

Google BigQuery - 将通配符表查询与日期分区表一起使用?

bigquery - 小表上的慢查询