有没有办法合并Clickhouse列中的所有数组,然后过滤重复项?

时间:2019-04-03 15:51:11

标签: clickhouse

我有一个Clickhouse表格,其中一列是Array(T)。 当我跑步 SELECT array_field FROM my_table 我得到以下信息:

1 | {a, b, c}
--------------
2 | {a, b}
--------------
3 | {d, e}

我需要找到一种方法来获取所有列表中唯一值的列表,就像这样:

{a, b, c, d, e}

我该怎么做?

3 个答案:

答案 0 :(得分:4)

要在一行中获得相同的结果:将groupUniqArray-Array组合器一起使用。选中docs

SELECT *
FROM my_table 

┌─array_field───┐
│ ['a','b','c'] │
│ ['a','b']     │
│ ['d','e']     │
└───────────────┘

3 rows in set. Elapsed: 0.001 sec. 

SELECT DISTINCT arrayJoin(array_field)
FROM my_table 

┌─arrayJoin(array_field)─┐
│ a                      │
│ b                      │
│ c                      │
│ d                      │
│ e                      │
└────────────────────────┘

SELECT groupUniqArrayArray(array_field)
FROM my_table 

┌─groupUniqArrayArray(array_field)─┐
│ ['c','e','d','a','b']            │
└──────────────────────────────────┘

答案 1 :(得分:1)

找到了适合我的解决方案:

SELECT DISTINCT arrayJoin(array_field)
FROM my_table

答案 2 :(得分:0)

另一个解决问题的方法


class CustomButton: UIButton {
    override func awakeFromNib() {
        super.awakeFromNib()
        self.layer.cornerRadius = 20
    }

}