ck的array函数
-------------------------------------------------------------------------
一、数组函数:
--1、数组定义:
select array('a','b','b','c');
--2、返回数组下标
select arrayEnumerate(['a','b','c'])
--3、数组求和
select arraySum([1,2,3,4]); --10
select arrayCumSum([1,2,3,4]); --[1,3,6,10]
--4、数组去重:
select arrayDistinct(['a','b','b','c']); --['a','b','c']
--5、数组去重统计个数
select uniqArray(['a','b','b','c']); --3
--6、合并数组:
select arrayConcat(['a','b'],['hello','jim'],['e','f'])
--7、数组添加、移除元素:
select arrayPushBack(['a','b'],'c');
select arrayPopBack(['a','b','c']);
--8、数组排序:
select arraySort(range(2, 10, 2));
select arrayReverseSort(range(2, 10, 2));
--9、数组反转
select arrayReverse(['a','b','b','c']); --['c','b','b','a']
--10、数组拉链操作:
select arrayZip(['a','b','c'],['1','2','3'])
-------------------------------------------------------------------------
二、字符串函数:
select splitByString(',','1,2,3,abcde');
select visitParamExtractString('{"name":"zss","age":21}' , 'name') ;
select number,rand(number),randConstant(number) from numbers(3)
-------------------------------------------------------------------------
三、高阶函数
select arrayMap(a -> a * a ,[1,2,3,4,5]);
select arrayFilter(a -> a % 2 == 0,[1,2,3,4,5]);
--3、符合条件的元素被前面的元素覆盖掉, 如果不满足条件数据不做处理
select arrayFill(a -> not isNull(a) ,[1,2,3,null,4,5]);
--4、符合条件的元素被后面的元素覆盖掉
select arrayReverseFill(a -> not isNull(a) ,[1,2,3,null,4,5]);
--5、数组炸裂 行转列
select arrayJoin(splitByChar(',','a,b,c')) ;
--6、列转行,将所有的列聚合成一个数组
select groupArray(arrayJoin(splitByChar(',','a,b,c')));
select groupUniqArray(arrayJoin(splitByChar(',','a,b,b,c')));
-------------------------------------------------------------------------
四、字符串搜索函数
--position:显示hello在字符串中第一个出现的位置。
select position('ckhelloworldhellospark','hello') AS positionSearch; --3
--match:匹配到了则返回1,否则返回0
select match('ckhelloworldhellospark','hello') as matchSearch; --1
-------------------------------------------------------------------------
五、链路函数