【发布时间】:2018-07-25 10:04:23
【问题描述】:
我在 BigQuery 中有一个表,其结构如下:
datetime | event | value
==========================
1 | add | 1
---------+--------+-------
2 | remove | 1
---------+--------+-------
6 | add | 2
---------+--------+-------
8 | add | 3
---------+--------+-------
11 | add | 4
---------+--------+-------
23 | remove | 3
---------+--------+-------
我正在尝试构建一个视图,该视图将list 列添加到包含数组当前状态的每一行。数组永远不会包含重复项。结果应该是这样的:
datetime | event | value | list
===================================
1 | add | 1 | [1]
---------+--------+-------+--------
2 | remove | 1 | []
---------+--------+-------+--------
6 | add | 2 | [2]
---------+--------+-------+--------
8 | add | 3 | [2,3]
---------+--------+-------+--------
11 | add | 4 | [2,3,4]
---------+--------+-------+--------
23 | remove | 3 | [2,4]
---------+--------+-------+--------
我尝试使用分析函数,但没有成功。使用数组的 api 非常有限。如果我可以使用递归 WITH 子句,我想我会成功,不幸的是,这在 BigQuery 中是不可能的。
我正在使用启用了标准 SQL 的 BigQuery。
【问题讨论】:
-
同一个数字可以多次出现吗?例如,如果
3有两个“添加”事件,3有一个remove事件,会发生什么?是否删除了所有出现的3,还是只删除了一个? -
@ElliottBrossard 这永远不会发生。
标签: sql google-cloud-platform google-bigquery bigquery-standard-sql