google-bigquery - 在 bigquery 中聚合最大日期
问题描述
我在 BQ 中有以下三行数据:
date instance_id value
2020-01-01 2 'hello'
2020-01-04 2 NULL
2020-02-03 3 'new'
我将如何分组以按日期获取“最新”值?我尝试对以下内容进行连接:
SELECT * from `historical_prices` m1 join `historical_prices` m2
ON (m1.instance_id=m2.instance_id and m1.date=max(m2.date))
WHERE date > '2020-01-01'
但出现以下错误:
[7:100] 处的 JOIN ON 子句中不允许使用聚合函数 MAX
获得上述内容的正确模式是什么?
解决方案
以下是 BigQuery 标准 SQL
#standardSQL
SELECT AS VALUE ARRAY_AGG(t ORDER BY date DESC LIMIT 1)[OFFSET(0)]
FROM `project.dataset.historical_prices` t
WHERE date > '2020-01-01'
GROUP BY instance_id
推荐阅读
- c++ - c++17 命名空间,是否可以始终强制限定访问?
- nuget - NuGet 安装匹配模式版本
- wix - Wix:从 msi-file 目录复制任意文件
- java - 如何检查状态并取消异步任务?
- .net-core - 通过 ASP.NET Blazor 中的服务共享数据(客户端)
- jquery - Jquery,附加复选框后无法读取复选框值
- uwp - 使用 xamarin android 通过蓝牙将消息发送到 uwp for windows 10 iot core
- angular - 如何在表格行中显示对象数组
- dataframe - 遍历 Dataset 中具有键值对数组的列,并找出具有最大值的对
- botframework - 自适应卡片列大小在 bot 框架 c# 中不起作用