首页 > 解决方案 > BigQuery 按最后一个日期过滤并使用分区

问题描述

我问了如何过滤最后一个日期并得到了很好的答案(BigQuery,如何在 where 子句中使用别名?),它们都可以工作,但是,它们扫描整个表,字段 SETTLEMENTDATE 是一个分区字段,有没有办法只扫描一个分区

例如,我正在使用这个查询

#standardSQL
SELECT * EXCEPT(isLastDate) 
FROM (
  SELECT *, DATE(SETTLEMENTDATE) = MAX(DATE(SETTLEMENTDATE)) OVER() isLastDate
  FROM `biengine-252003.aemo2.daily`
)
WHERE isLastDate 

编辑:请最后日期并不总是当前日期,因为数据存在滞后

标签: google-bigquery

解决方案


现在脚本在 BigQuery 中处于测试阶段,您可以声明一个包含目标日期的变量。这是一个例子:

SET max_date DATE DEFAULT (SELECT DATE(MAX(datehour)) FROM `fh-bigquery.wikipedia_v3.pageviews_2019` WHERE wiki='es');

SELECT MAX(views)
FROM `fh-bigquery.wikipedia_v3.pageviews_2019` 
WHERE DATE(datehour) = max_date
AND wiki='es'

推荐阅读