Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Bigquery将子查询应用于分区时间_Sql_Google Bigquery - Fatal编程技术网

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脚本预先确定分区过滤器,如:

声明最小值日期默认值从“天”中选择最小值,其中。。。; 挑选* 从`天开始` 其中日期_分区时间>最小值;-最小值是第二个查询的常量
令人惊叹的非常感谢你。