【发布时间】:2019-02-28 08:25:50
【问题描述】:
我想跨行连接数组,然后进行不同的计数。理想情况下,这会起作用:
WITH test AS
(
SELECT
DATE('2018-01-01') as date,
2 as value,
[1,2,3] as key
UNION ALL
SELECT
DATE('2018-01-02') as date,
3 as value,
[1,4,5] as key
)
SELECT
SUM(value) as total_value,
ARRAY_LENGTH(ARRAY_CONCAT_AGG(DISTINCT key)) as unique_key_count
FROM test
很遗憾,ARRAY_CONCAT_AGG 函数不支持 DISTINCT 运算符。我可以取消嵌套数组,但随后我得到一个扇出并且值列的总和是错误的:
WITH test AS
(
SELECT
DATE('2018-01-01') as date,
2 as value,
[1,2,3] as key
UNION ALL
SELECT
DATE('2018-01-02') as date,
3 as value,
[1,4,5] as key
)
SELECT
SUM(value) as total_value,
COUNT(DISTINCT k) as unique_key_count
FROM test
CROSS JOIN UNNEST(key) k
有什么我遗漏的东西可以让我避免加入未嵌套的数组吗?
【问题讨论】: