Google bigquery 如何获取每个度量BigQuery的最后一行?
数据: 我想获得某些临时指标的最后一个已知值。我想到了:Google bigquery 如何获取每个度量BigQuery的最后一行?,google-bigquery,Google Bigquery,数据: 我想获得某些临时指标的最后一个已知值。我想到了: +-------+------------+-----------------------+ | value | metric | timestamp | +-------+------------+-----------------------+ | 30 | tempA | 2019-01-12T01:00:00 | | 28 | tempA | 2019-02-1
+-------+------------+-----------------------+
| value | metric | timestamp |
+-------+------------+-----------------------+
| 30 | tempA | 2019-01-12T01:00:00 |
| 28 | tempA | 2019-02-12T02:00:00 |
| 25 | tempB | 2019-03-12T03:00:00 |
| 60 | humidityA | 2019-04-12T04:00:00 |
| 15 | tempC | 2019-05-15T01:00:00 |
+-------+------------+-----------------------+
这将对整个表进行分区,这可能需要一些时间。是否有一种性能更高/效率更高的方法来获取每个度量的最后一行?阵列聚合可以更快,因为由于限制1,它只需要在内存中保留最上面的一行:
选择
米制的
数组_AGG(
结构(值、时间戳)
按时间戳顺序描述限制1
)[抵销(0)]*
从…起
`project.dataset.table`
哪里
度量单位('tempA','tempB')
按度量分组
SELECT
metric,
value,
timestamp,
seqnum
FROM (
SELECT
metric,
value,
timestamp,
ROW_NUMBER() OVER (PARTITION BY metric ORDER BY timestamp DESC) AS seqnum
FROM
`project.dataset.table`
WHERE
metric IN ('tempA', 'tempB') )
WHERE
seqnum = 1