clickhouse-(04)-常用高阶函数
一、去重
1.arrayDistinct
对数组进行去重
SELECT arrayDistinct( [1,2,3,6,34,3,11])
2.arrayUniq
计算数组中有多少个不重复的值
SELECT arrayUniq( [1,2,3,6,34,3,11])
3.arrayCompact
对数组内数据实现相邻去重
SELECT arrayCompact([1, 2, 2, 3, 2, 3, 3])
二、数组属性
1.arrayJoin
对数组进行展开操作,行变列
SELECT arrayJoin( [1,2,3,6,34,3,11] ) as a
2.arrayFilter
筛选出数组中满足条件的数据
SELECT a from (SELECT arrayFilter(x->x%2=0, [1,2,3,6,34,3,11]) as a
3.arrayEnumerate
返回数组下标
SELECT arrayEnumerate([1,2,3,6,34,3,11])
4.arrayReduce
对数组进行聚合操作,如有min 、max、avg 等
SELECT arrayReduce('avg', [1,2,3,6,34,3,11] )
5.arrayEnumerateDense
标记出数组中相同的元素
SELECT arrayEnumerateDense( [1,2,3,6,34,3,11] )
6.hasAny
判断数组中是否包含某些值中任意一个值,若包含则返回1,否则返回0
SELECT hasAny( [1,2,3,6,34,3,11] , [3,4])
7.hasAll
判断数组中是否包含某些值中所有值,若包含则返回1,否则返回0
SELECT hasAll( [1,2,3,6,34,3,11] , [3,4])
8.arrayWithConstant
生成一个指定长度的数组
SELECT arrayWithConstant( 3, 'a')
三、切割/拼接
1.arrayStringConcat
将数组元素按照给定分隔符进行拼接,返回拼接后的字符串(数组元素必须为String类型)
SELECT arrayStringConcat( ['2020','12','19'], '-')
2.arraySlice
对数组进行切割 ,后面两个参数分别是切割的位置和切割后的段数
SELECT arraySlice( [1,2,3,6,34,3,11],-3,2)
四、排序
1.arraySort
对数组进行升序
SELECT a from (SELECT arraySort([1,2,3,6,34,3,11]) as a)
2.arrayReverseSort
对数组进行降序
SELECT a from (SELECT arrayReverseSort([1,2,3,6,34,3,11]) as a)
五、添加/删除首尾元素
1.arrayPushFront
在数组首位添加元素
SELECT arrayPushFront( [1,2,3,6,34,3,11] , 8)
2.arrayPushBack
在数组末尾添加元素
SELECT arrayPushBack( [1,2,3,6,34,3,11] , 8)
3.arrayPopFront
删除数组中第一个元素
SELECT arrayPopFront( [1,2,3,6,34,3,11] )
4.arrayPopBack
删除数组中最后一个元素
SELECT arrayPopBack( [1,2,3,6,34,3,11] )
六、计算差值
1.arrayDifference
计算数组中前后两个值的差值部分,该位=当前-前者(不包括第一个数,结果第一位默认为0)
SELECT arrayDifference( [1,2,3,6,34,3,11] )
2.runningDifference
计算某一列前后数值的差值,该位=当前-前者(不包括第一个数,结果第一位默认为0)
select a,runningDifference(a) from (SELECT arrayJoin( [1,2,3,6,34,3,11]) as a)