ARRAY_CONTACT() returns 空数组

ARRAY_CONTACT() returns empty array

我正在将来自 2 个不同列的每个用户的值列表编译成一个数组,例如:

with test  as (
    select 1 as userId, 'something' as value1, cast(null as string) as value2
    union all
    select 1 as userId, cast(null as string), cast(null as string)
)

select
       userId,
       ARRAY_CONCAT(
       ARRAY_AGG(distinct value1 ignore nulls ),
       ARRAY_AGG(distinct value2 ignore nulls )
           ) as combo,
from test
group by userId

一切正常,直到 ARRAY_AGG() 但随后 ARRAY_CONCAT() 就没有它了,returns 和空数组 [] 而我希望它是 [ 'something'].

我不知道为什么会发生这种情况,也不知道我是否可以在这里强制执行解决方法。

I am at loss as to why this is happening ...

ARRAY_CONCAT 函数 returns NULL 如果任何输入参数为 NULL

... and whether I can force a workaround here

使用以下解决方法

select
  userid,
  array_concat(
    ifnull(array_agg(distinct value1 ignore nulls ), []),
    ifnull(array_agg(distinct value2 ignore nulls ), [])
  ) as combo,
from test
group by userid    

如果应用于您问题中的示例数据 - 输出为