Sql Bigquery将子查询应用于分区时间
我有两个查询,它们分别正确工作,但一起出现错误:Sql Bigquery将子查询应用于分区时间,sql,google-bigquery,Sql,Google Bigquery,我有两个查询,它们分别正确工作,但一起出现错误: 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
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)
我得到了这个错误:
如果没有对可用于分区消除的列“\u PARTITION\u LOAD\u TIME”、“\u PARTITIONDATE”和“\u PARTITIONTIME”进行筛选,则无法查询表“Day”
我不太明白为什么会发生这种情况,第一个查询返回一个日期。您得到错误是因为: 该表的选项集为:require\u partition\u filter=true,如果未指定分区筛选器,则对该表的查询应失败。 使用子查询作为分区过滤器有一些限制,这些限制是有文档记录的。 通常,如果可以在查询开始时计算过滤器,而不需要任何子查询计算或数据扫描,那么分区修剪将降低查询成本 解决方法是使用BigQuery脚本预先确定分区过滤器,如: 声明最小值日期默认值从“天”中选择最小值,其中。。。; 挑选* 从`天开始` 其中日期_分区时间>最小值;-最小值是第二个查询的常量
令人惊叹的非常感谢你。