我想从连续发生的数组中筛选出值。
我尝试过使用“ array_distinct”和“ transform”函数,但是无法进行。由于array_distinct仅提供不同的值而不是我期望的
Input : [1,2,2,3,4,4,4,2]
Run Code Online (Sandbox Code Playgroud)
预期输出:[1,2,3,4,2]
您可以通过合并检查连续元素ngrams,filter,transform,就像这样:
presto> SELECT
-> ARRAY[a[1]] ||
-> transform(
-> filter(
-> ngrams(a, 2),
-> pair -> pair[1] IS DISTINCT FROM pair[2]),
-> pair -> pair[2])
-> FROM (VALUES ARRAY[1,2,2,3,4,4,4,2]) t(a);
_col0
-----------------
[1, 2, 3, 4, 2]
(1 row)
Run Code Online (Sandbox Code Playgroud)
说明:
ngrams(a, 2) 建立兄弟对filter然后用于仅保留未由相同元素处理的元素;IS DISTINCT FROM用于比NULL普通的更友好的比较=。transform 用于将兄弟姐妹转换回平面数组有关可用的所有数组功能,请参见https://prestosql.io/docs/current/functions/array.html。
| 归档时间: |
|
| 查看次数: |
105 次 |
| 最近记录: |