gpt4 book ai didi

clickhouse - 如何比较两个数组并在 Clickhouse 中的数组中找到匹配项 (0/1)

转载 作者:行者123 更新时间:2023-12-02 18:56:02 25 4
gpt4 key购买 nike

Clickhouse 中的爱情数组!

目前,我们正在尝试设计一个解决方案,要求我们查找 array1 中的元素是否存在于 array2 中,无论顺序如何。

例如

array1= ['x','y','z']
array2= ['a','x','c']

Then the return that we want is [1,0,0]

  1. 是否有一种简单的现成方法可以实现此目的?
  2. 这是一个更大查询的一部分,意味着此数组比较的结果将用作 arrayMap((a,b) -> a*b, result, metric_array) 的一部分——更多的是内联过滤。
  3. 如果有任何方法可以做到这一点,性能将会显着提高!

提前致谢!

最佳答案

尝试这个查询:

SELECT
['x', 'y', 'z'] AS a1,
['a', 'x', 'c'] AS a2,
arrayMap(x -> has(a2, x), a1) AS result

/*
┌─a1────────────┬─a2────────────┬─result──┐
│ ['x','y','z'] │ ['a','x','c'] │ [1,0,0] │
└───────────────┴───────────────┴─────────┘
*/

这个解决方案看起来无效,但检查一下也有意义:

SELECT
['x', 'y', 'z'] AS a1,
['a', 'x', 'c'] AS a2,
arrayIntersect(a1, a2) AS a3,
arrayMap(x -> has(a3, x), a1) AS result

/*
┌─a1────────────┬─a2────────────┬─a3────┬─result──┐
│ ['x','y','z'] │ ['a','x','c'] │ ['x'] │ [1,0,0] │
└───────────────┴───────────────┴───────┴─────────┘
*/

关于clickhouse - 如何比较两个数组并在 Clickhouse 中的数组中找到匹配项 (0/1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66181206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com