使用BigQuery的array UNNEST来返回数组中的唯一值?

3

我有一个包含字符串数组字段的BigQuery表。对于某些记录,数组可以包含重复的字符串值。

在BigQuery的UNNEST子句中,是否可能过滤掉重复项,以便UNNEST仅返回不同的数组字符串值?

2个回答

8

有很多方法可以做到这一点。由于您没有指定所需的输入和输出,我将随意选择一个。

使用 ARRAY_AGG(DISTINCT)

WITH data AS (
  SELECT 1 id, ["a", "a", "b", "e", "a", "c", "b", "a"] strings
)


SELECT id, ARRAY_AGG(DISTINCT string) strings
FROM data, UNNEST(strings) string
GROUP BY id

enter image description here


如果我想在每一行中显示ID,怎么办? - undefined

5

以下内容适用于 BigQuery 标准 SQL

#standardSQL
SELECT * REPLACE(ARRAY(SELECT DISTINCT el FROM t.arr AS el) AS arr)
FROM `project.dataset.table` t    

你可以使用以下示例中的虚拟数据来测试和玩耍。
#standardSQL
WITH `project.dataset.table` AS (
  SELECT 1 col1, 2 col2, ["a", "a", "b", "e", "a", "c", "b", "a"] arr, 3 col3 UNION ALL
  SELECT 4, 5, ["x", "y", "z"], 5
)
SELECT * REPLACE(ARRAY(SELECT DISTINCT el FROM t.arr AS el) AS arr)
FROM `project.dataset.table` t   

带有输出

Row col1    col2    arr col3     
1   1       2       a   3    
                    b        
                    e        
                    c        
2   4       5       x   5    
                    y        
                    z        

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接