[英]Bigquery apply subquery to partition time
我有两个单独工作正确的查询,但一起出现错误:
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)
我得到这个错误:
如果没有筛选列“_PARTITION_LOAD_TIME”、“_PARTITIONDATE”、“_PARTITIONTIME”(可用于分区消除),则无法查询表“Day”
我不太明白为什么会这样,第一个查询返回一个日期。
您收到错误是因为:
通常,当过滤器可以在查询开始时进行评估而不需要任何子查询评估或数据扫描时,分区修剪将降低查询成本。
解决方法是使用 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.