比较clickhouse行中的两个数组

hivapdat  于 2021-07-15  发布在  ClickHouse
关注(0)|答案(2)|浏览(425)

在clickhouse中有比较两个数组的选项吗?
有两列 colA 以及 colB ,每个包含一个数组。
如果有比较数组的算法 colA 以及 colB 对于clickhouse表和集合中的每一行 colC 价值 1 如果数组相等, 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
llmtgqce

llmtgqce1#

我在clickhouse谷歌集团问了同样的问题,得到了丹尼斯·朱拉夫列夫的回答:
在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之前,您可以使用lambdas或其他东西:

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 │
└────┴────┘
m2xkgtsf

m2xkgtsf2#

我认为现在同等有效20.3.5.21

Cloud10 :) SELECT [2,1] = [1,2]

SELECT [2, 1] = [1, 2]

┌─equals([2, 1], [1, 2])─┐
│                      0 │
└────────────────────────┘

1 rows in set. Elapsed: 0.003 sec. 

Cloud10 :) SELECT [2,1] = [2,1]

SELECT [2, 1] = [2, 1]

┌─equals([2, 1], [2, 1])─┐
│                      1 │
└────────────────────────┘

1 rows in set. Elapsed: 0.003 sec.

相关问题