我有两个可以单独正确运行的查询,但在一起有一个错误:
WITH minimum_time AS
(
SELECT DATE (min(_PARTITIONTIME)) AS minimums
FROM `Day`
WHERE DATE (_PARTITIONTIME) = "2020-11-20"
)
SELECT *
FROM `Day`
WHERE DATE (_PARTITIONTIME) > (SELECT minimums
FROM minimum_time)
我得到这个错误:
无法查询表“ Day”,而无需对可用于消除分区的列“ _PARTITION_LOAD_TIME”,“ _ PARTITIONDATE”,“ _ PARTITIONTIME”进行过滤
我不太明白为什么会这样,首先查询返回一个日期。
您收到此错误是因为:
通常,当可以在查询开始时就对过滤器进行评估而无需任何子查询评估或数据扫描时,分区修剪将减少查询成本。
解决方法是使用BigQuery脚本来预先确定分区过滤器,例如:
DECLARE minimums DATE DEFAULT ((SELECT minimums FROM `Day` WHERE ...));
SELECT *
FROM `Day`
WHERE DATE (_PARTITIONTIME) > minimums; -- minimums is a constant to the second query
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句