比较 ClickHouse 行中的两个数组
Comparing two arrays in ClickHouse rows
是否有在 ClickHouse 中比较两个数组的选项?
有两列colA
和colB
,每列包含一个数组。
如果有任何算法比较 ClickHouse table 中每一行的 colA
和 colB
中的数组,并将 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
我在 ClickHouse Google Group and got this answer 问了 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 │
└────┴────┘
我认为现在平等有效 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.
是否有在 ClickHouse 中比较两个数组的选项?
有两列colA
和colB
,每列包含一个数组。
如果有任何算法比较 ClickHouse table 中每一行的 colA
和 colB
中的数组,并将 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
我在 ClickHouse Google Group and got this answer 问了 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 │
└────┴────┘
我认为现在平等有效 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.