Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.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
Google bigquery 如何获取每个度量BigQuery的最后一行?_Google Bigquery - Fatal编程技术网

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