在Google BigQuery中,我试图在使用标准SQL查询分区表时使用$
装饰符。我认为这应该允许我访问分区和表元数据,因为它在遗留SQL中所做的,但它似乎在标准SQL中不起作用。
以下两个查询都返回Error: Table "dataset.partitioned_table$___" cannot include decorator
:
1)直接访问分区:
#StandardSQL
SELECT a, b, c
FROM `mydataset.partitioned_table$20161115`
2)访问表元数据:
#StandardSQL
SELECT partition_id
FROM `mydataset.partitioned_table$__PARTITIONS_SUMMARY__`;
对于第一个查询,显而易见的解决方法是使用_PARTITIONTIME
伪列:
#StandardSQL
SELECT a, b, c
FROM mydataset.partitioned_table
WHERE _PARTITIONTIME = '2016-11-15'
然而,我还没能找到第二个查询的解决方案,这对于检索最近的分区很有用(尽管使用该信息实际查询最近的分区似乎也坏了)。参考:如何在BigQuery表中选择最新分区
在StandardSQL中目前不支持使用修饰符获取分区摘要。我们正在计划这方面的一些工作,但我们目前还没有一个可能可用的预计时间。现在最快的选择是使用遗留SQL在T$__PARTITIONS_SUMMARY__
上运行查询。