google-bigquery - BigQuery 按最后一个日期过滤并使用分区
问题描述
我问了如何过滤最后一个日期并得到了很好的答案(BigQuery,如何在 where 子句中使用别名?),它们都可以工作,但是,它们扫描整个表,字段 SETTLEMENTDATE 是一个分区字段,有没有办法只扫描一个分区
例如,我正在使用这个查询
#standardSQL
SELECT * EXCEPT(isLastDate)
FROM (
SELECT *, DATE(SETTLEMENTDATE) = MAX(DATE(SETTLEMENTDATE)) OVER() isLastDate
FROM `biengine-252003.aemo2.daily`
)
WHERE isLastDate
编辑:请最后日期并不总是当前日期,因为数据存在滞后
解决方案
现在脚本在 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'
推荐阅读
- axios - Office JS“网络错误”在桌面上的自定义函数运行时发送带有发布请求的数据(Edge 18)
- html - Center text under image in flex container
- c++ - 理解 ifstream 对象和读取文件
- c# - 同步运行 HttpRequest C#
- r - R new variable by group looped on multiple lagged and lead values
- javascript - Blur event is not triggering in IE - Angular 2+
- python - 循环现有脚本
- php - 如何将数据表过滤器应用于我的 php 代码?
- google-cloud-platform - Google Cloud Platform (GCP) 免费层级 30 GB 月 HDD 包括标准或 SSD 永久性磁盘?
- c++ - Getting the type of a template template parameter with using