gpt4 book ai didi

arrays - 如何在 Presto 中比较两个数组?

转载 作者:行者123 更新时间:2023-12-02 19:54:59 27 4
gpt4 key购买 nike

我想使用 presto 函数比较两个数组。我有两个数组(A 和 B),我需要比较并检查输入数组与给定比较数组(X)匹配的点(索引)。

Input_Array - A[1,2,4,5,3,9]
Input_Array - B[1,2,3,7,0,5,4,9]

Comparison_Array - X[1,2,3,4]

Output:
A - Index : 2
B - Index : 3

最佳答案

您可以使用Presto reduce array reduction function ,与 ROW 下标 [n] 结合(自 Presto 314 起可用)。 (对于较旧的 Presto 版本,这会更冗长,但仍然同样可能。如果您使用的是较旧版本并需要帮助,请告诉我。)

SELECT
reduce(
sequence(0, cardinality(a)), -- numbers [0..n)
ROW(true, 0), -- (still matching, position matched)
(state, i) ->
IF (state[1] AND i < cardinality(a) AND i < cardinality(x) AND a[i + 1] = x[i + 1],
ROW(true, i + 1),
ROW(false, state[2])),
state -> state[2])
FROM (VALUES
(ARRAY[1,2,4,5,3,9], ARRAY[1,2,3,4]),
(ARRAY[1,2,3,7,0,5,4,9], ARRAY[1,2,3,4]),
(ARRAY[1,2], ARRAY[1,2,3,4]),
(ARRAY[], ARRAY[1,2,3,4])) t(a, x);

打印:

 _col0
-------
2
3
2
0
(4 rows)

关于arrays - 如何在 Presto 中比较两个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57266705/

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