BigQuery - 列出日期分区表的分区?

Posted

技术标签:

【中文标题】BigQuery - 列出日期分区表的分区?【英文标题】:BigQuery - Listing partitions of the date partitioned table? 【发布时间】:2016-10-04 05:00:16 【问题描述】:

查询 -- SELECT partition_id from Mydataset.Table$__PARTITIONS_SUMMARY__; 给出以下错误——表“Mydataset.Table$PARTITIONS_SUMMARY”不能包含装饰器`

【问题讨论】:

【参考方案1】:

在旧版 SQL 中尝试以下操作

SELECT project_id,
    dataset_id,
    table_id,
    partition_id,
    TIMESTAMP(creation_time/1000) AS creation_time
FROM [Mydataset.Table$__PARTITIONS_SUMMARY__]

标准 SQL 及以下

SELECT _PARTITIONTIME as pt
FROM `Mydataset.Table`
GROUP BY 1

这也适用于旧版 SQL

SELECT _PARTITIONTIME as pt
FROM [Mydataset.Table]
GROUP BY 1

【讨论】:

谢谢,它有效。 Big Query 文档说 partition_id 应该可以工作,但不知道为什么会出现该错误,我注意到从日期分区中选择查询的相同错误。 我认为这只适用于摄取时间分区的表。 OP 在询问日期分区 @SteveFaiwiszewski - 在投反对票之前 - 检查提出问题的年份以及该问题被社区接受和相当赞成的事实 今天的答案仍然有效吗?我不这么认为。因此,今天的答案相当具有误导性。如果它在某个时候是正确的,那就无关紧要了。如果您想更新它以声明这不再适用,我将删除我的反对票。 @SteveFaiwiszewski - 不用担心。从只有 12 个答案的人的角度来看,您可能是对的。但对于回答超过 3600 个的人来说,这是不可行的 :o) 我建议您添加自己的答案来解决您在此处看到的相关性问题【参考方案2】:

老问题,但有新答案

select partition_id
from `Mydataset.INFORMATION_SCHEMA.PARTITIONS`
where table_name = 'Table'

这是标准 sql,与使用 group by 相比,您的账单会少得多

【讨论】:

以上是关于BigQuery - 列出日期分区表的分区?的主要内容,如果未能解决你的问题,请参考以下文章

使用 require_partition_filter 列出 BigQuery 分区表中的所有分区

BigQuery 日期分区视图

BigQuery:使用 DML 原子地替换日期分区

列中的 BigQuery 日期分区

BigQuery、日期分区表和装饰器

Google Bigquery:复制日期分区表所需的分区规范