如何基于另一个有条件地聚合列

时间:2017-06-20 13:10:35

标签: google-bigquery

我的一行数据看起来像这样

[someId, someBool, someInt]

我正在寻找一种聚合someInt的方法(专门将它们放在array中)。

我使用GROUP BY子句按someId字段进行分组,然后我可以使用someInt汇总所有ARRAY_AGG,但我只想包含someBool=TRUE行。如何以正确的方式解决这个问题?

PS:可能有必要注意我有几个布尔值,如someBool,并希望每次输出到不同的数组

1 个答案:

答案 0 :(得分:3)

您可以将ARRAY_AGGIGNORE NULLS一起使用,例如:

ARRAY_AGG(IF(someBool IS NOT TRUE, NULL, someId) IGNORE NULLS)

这只会聚合someBool为真的ID。如果您要在条件中使用多个布尔列,则可以AND将它们放在一起或使用CASE WHEN ...或您想要生成NULL的任何其他类型的条件,以便排除一个值。