Nel*_*son 5 snowflake-cloud-data-platform
表结构是
+------------+---------+
| Animals | Herbs |
+------------+---------+
| [Cat, Dog] | [Basil] |
| [Dog, Lion]| [] |
+------------+---------+
Run Code Online (Sandbox Code Playgroud)
所需的输出(不关心此列表的排序):
unique_things
+------------+
[Cat, Dog, Lion, Basil]
Run Code Online (Sandbox Code Playgroud)
第一次尝试是这样的
SELECT ARRAY_CAT(ARRAY_AGG(DISTINCT(animals)), ARRAY_AGG(herbs))
Run Code Online (Sandbox Code Playgroud)
但这会产生
[[Cat, Dog], [Dog, Lion], [Basil], []]
Run Code Online (Sandbox Code Playgroud)
由于不同的组件在每个数组上进行操作,因此不会查看所有数组中的不同组件
不使用 FLATTEN 也可以使用ARRAY_UNION_AGG:
返回一个 ARRAY,其中包含列中输入 ARRAY 的不同值的并集。
对于样本数据:
CREATE OR REPLACE TABLE t AS
SELECT ['Cat', 'Dog'] AS Animals, ['Basil'] AS Herbs
UNION SELECT ['Dog', 'Lion'], [];
Run Code Online (Sandbox Code Playgroud)
询问:
SELECT ARRAY_UNION_AGG(ARRAY_CAT(Animals, Herbs)) AS Result
FROM t
Run Code Online (Sandbox Code Playgroud)
或者:
SELECT ARRAY_UNION_AGG(Animals) AS Result
FROM (SELECT Animals FROM t
UNION ALL
SELECT Herbs FROM t);
Run Code Online (Sandbox Code Playgroud)
输出:
您可以展平组合数组,然后聚合回来:
SELECT ARRAY_AGG(DISTINCT F."VALUE") AS unique_things
FROM tab, TABLE(FLATTEN(ARRAY_CAT(tab.Animals, tab.Herbs))) f
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3332 次 |
最近记录: |