比较ClickHouse行中的两个数组

伊利亚·鲁辛

在ClickHouse中比较两个数组的任何选项?

有两列colAcolB,每包含一个数组。

如果有,在比较阵列的任何算法colAcolB对于每行中的一个ClickHouse表并设定colC1如果阵列是相等的,0如果阵列是不相等的?

例如:

colA                             |  colB                            | colC
---------------------------------|----------------------------------|-----
{555,571,701,707,741,1470,4965}  |  {555,571,701,707,741,1470,4965} |1
{555,571,701,707,741,1470,4965}  |  {555,571,701,707,741,1470,4964} |0
伊利亚·鲁辛

我在ClickHouse Google Group上问了同样的问题,从Denis Zhuravlev得到了以下答案

在最新版本的CH 18.1.0,2018-07-23 (#2026)中

select [111,222] A,  [111,222] B, [111,333] C, A=B ab, A=C ac

结果是

┌─A─────────┬─B─────────┬─C─────────┬─ab─┬─ac─┐
│ [111,222] │ [111,222] │ [111,333] │  1 │  0 │
└───────────┴───────────┴───────────┴────┴────┘

在18.1.0之前,您可以使用lambda或其他方式:

SELECT 
   NOT has(groupArray(A = B), 0) ab
  ,NOT has(groupArray(A = C), 0) ac
  FROM
    (
      SELECT
         [111,222] A
        ,[111,222] B
        ,[111,333] C
    )
    ARRAY JOIN
         A
        ,B
        ,C 


┌─ab─┬─ac─┐
│  1 │  0 │
└────┴────┘

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章