一、相关函数使用总结:
序号 | 函数 | 解释及用法 |
1 | arrayJoin | 获取每一行并将他们展开到多行 |
2 | arrayFilter | 按照过滤条件筛选数组中的元素 |
3 | arrayMap | arrayMap(func,arr1,...) ,func是一个lambda表达式,通过该方法作用于原始数组中 每一个数据,得到最终结果。 |
4 | arrayZip | 合并多个数组,变为多个数组相同位置元素组成的元组(tuples) |
5 | arrayFirst | 返回数组中第一个匹配元素 |
6 | arrayLast | 返回数组中最后一个匹配元素 |
7 | arrayFirstIndex | 返回数组中第一个匹配元素的索引 |
8 | arrayLastIndex | 返回数组中最后一个匹配元素的索引 |
9 | arrayAvg | 聚合计算,平均值 |
10 | arrayMax | 聚合计算,最大值 |
11 | arrayMin | 聚合计算,最小值 |
12 | arraySum | 聚合计算,求和 |
13 | arrayUniq | 聚合计算,去重计数 |
14 | arrayProduct | 聚合计算,连乘 |
15 | arrayAll | 聚合计算,未知 |
16 | arrayReduce | 聚合计算,可选择各种函数 |
17 | arrayDifference | 返回一个数组,其中包含所有相邻元素对之间的差值 |
18 | arrayCount | 计算数组中包含指定元素的个数countEqual(arr, x) 返回数组中等于x的元素的个数。相当于arrayCount(elem - > elem = x,arr) |
19 | arrayCumSum | 累加求和 |
20 | arrayCumSumNonNegative | 累加求和当返回值包含小于零的值时,该值将被替换为零,并以零参数执行后续计算 |
21 | arrayConcat | 合并参数中传递的所有数组 |
22 | arrayStringConcat | 合并参数中传递的所有数组,数组之间增加字符进行相连 |
23 | arrayElement | 从数组中获取索引为“n”的元素。 |
24 | arraySlice | 截取数组的部分元素,得到一个新的子数组,arraySlice(array, offset[, length]) |
25 | arrayDistinct | 返回一个包含所有数组中不同元素的数组 |
1、arrayJoin
## arrayJoin
select arrayJoin([1, 2, 3] as src) as dst, 'Hello', src
1,Hello,"[1,2,3]"
2,Hello,"[1,2,3]"
3,Hello,"[1,2,3]"
2、arrayFilter
## arrayFilter
select arrayFilter(x -> x like '%World%', ['Hello', 'abc World']) as res; --['abc World']
select
arrayFilter(
(i, x) -> x like '%World%',
arrayEnumerate(arr),
['Hello', 'abc World'] as arr)
as res; --2
3、arrayMap、arrayZip
## arrayMap、arrayZip
select arrayMap(x -> (x + 2), [1, 2, 3]) ; --[3,4,5]
select arrayMap((x, y) -> (x, y), [1, 2, 3], [4, 5, 6]); --[(1,4),(2,5),(3,6)]
select arrayZip(['a', 'b', 'c'], [5, 2, 1]); --[('a',5),('b',2),('c',1)]
4、arrayFirst、arrayLast、arrayFirstIndex、arrayLastIndex
## arrayFirst、arrayLast、arrayFirstIndex、arrayLastIndex
select arrayFirst(x -> x like '%World%', ['Hello', 'abc World','Hello_ya']) as res; --abc World
select arrayFirstIndex(x -> x like '%World%', ['Hello', 'abc World','Hello_ya']) as res; --2
select arrayLast(x -> x like '%World%', ['Hello', 'abc World','acd_World']) as res; --acd_World
select arrayLastIndex(x -> x like '%World%', ['Hello', 'abc World','acd_World']) as res; --3
5、arrayAvg、arrayMax、arrayMin、arraySum、arrayUniq、arrayProduct、arrayAll、arrayReduce
## arrayAvg、arrayMax、arrayMin、arraySum、arrayUniq、arrayProduct、arrayAll、arrayReduce
select arrayAvg([1, 2, 3, 4]) as res; --2.5
select arrayMax([1, 2, 3, 4]) as res; --4
select arrayMin([1, 2, 3, 4]) as res; --1
select arraySum([2, 3]) as res;; --5
select arraySum(x -> x*x, [2, 3]) as res;; --13
select arrayUniq([1,2,2,4,3]); -- 4
select arrayProduct([1,2,3,4,5,6]) as res; --720
select arrayAll([1, 2, 3, 4]) as res; --1
select arrayReduce('median', [2, 11, 7]); --7
select arrayReduce('max', [1,2,3]) as minNum,--最大值 3
select arrayReduce('min', [1,2,3]) as maxNum,--最小值 1
select arrayReduce('sum', [1,2,3]) as sumNum;--求和 6
6、arrayDifference
## arrayDifference
select arrayDifference([1, 2, 3, 4]) --[0,1,1,1]
7、arrayCount
## arrayCount
select arrayCount(x -> x, [1, 2, 3, 4]); --4
select arrayCount(e-> e>=3,[1,2,3,4]); --2
8、arrayCumSum、arrayCumSumNonNegative
## arrayCumSum、arrayCumSumNonNegative
select arrayCumSum([1, 1, 1, 1]) as res; --[1,2,3,4]
select arrayCumSumNonNegative([1, 1, -4, 1]) as res; --[1,2,0,1]
9、arrayConcat、arrayStringConcat
## arrayConcat、arrayStringConcat
select arrayConcat(array(1,2),array(2,3),array(4,5)), -- [1,2,2,3,4,5]
select arrayStringConcat(['a', 'b', 'c', 'd'], '--'); --a--b--c--d
10、arrayElement、arraySlice
## arrayElement、arraySlice
select arrayElement(['a', 'b', 'c', 'd'], 1) -- -1 返回数组第n个元素. 元素是从1开始的
select arrayElement(['a', 'b', 'c', 'd'], 5) -- 无结果
select arraySlice([1,2,3,4,5,6], 1, 3); -- [1,2,3]
11、arrayDistinct
## arrayDistinct
select arrayDistinct( [1, 2, 3,3, 4]); -- [1,2,3,4]