gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 08:13:56 31 4
gpt4 key购买 nike

我正在尝试找到一种方法来列出使用 require_partition_filter = true 创建的表的分区,但是我还找不到方法。

这是建表脚本

CREATE TABLE mydataset.partitionedtable_partitiontime
(
x INT64 \
)
PARTITION BY DATE(_PARTITIONTIME)
OPTIONS(
require_partition_filter = true
);

一些测试行

INSERT INTO mydataset.partitionedtable_partitiontime (_PARTITIONTIME, x) SELECT TIMESTAMP("2017-05-01"), 10;
INSERT INTO mydataset.partitionedtable_partitiontime (_PARTITIONTIME, x) SELECT TIMESTAMP("2017-04-01"), 20;
INSERT INTO mydataset.partitionedtable_partitiontime (_PARTITIONTIME, x) SELECT TIMESTAMP("2017-03-01"), 30;

正如预期的那样,如果尝试使用以下查询来获取分区,我会收到错误消息,因为我需要在分区列之上使用过滤器

SELECT _PARTITIONTIME as pt, FORMAT_TIMESTAMP("%Y%m%d", _PARTITIONTIME) as partition_id
FROM `mydataset.partitionedtable_partitiontime`
GROUP BY _PARTITIONTIME
ORDER BY _PARTITIONTIME

错误

Cannot query over table 'mydataset.partitionedtable_partitiontime' without a filter over column(s) '_PARTITION_LOAD_TIME', '_PARTITIONDATE', '_PARTITIONTIME' that can be used for partition elimination

关于如何列出分区的任何想法?

编辑:我知道可以添加过滤器,但我正在寻找像 Hive 的“SHOW PARTITIONS TABLENAME”这样的解决方案来列出所有分区(本质上是元数据)

谢谢!

最佳答案

方法如下:

SELECT * FROM `mydataset.partitionedtable_partitiontime$__PARTITIONS_SUMMARY__`

需要 bigquery.jobs.create 权限。

编辑:现在可以使用标准 SQL 获取此信息:

SELECT * FROM `myproject.mydataset.INFORMATION_SCHEMA.PARTITIONS`
WHERE table_name = 'partitionedtable'

关于google-bigquery - 使用 require_partition_filter 列出 BigQuery 分区表中的所有分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55690313/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com