clickhouse数组函数原创
ClickHouse数组函数在数据分析及开发中应用十分广泛,数组函数相对较多,使用起来略微复杂
具体可在官网查看,这里列举部分常用函数进行示例学习。
# 1. 常用基本函数
用途 | 函数 | 备注 |
---|---|---|
数组判空 | empty(arr) | 空1,非空0 |
创建数组 | array(i1,i2, ...) | 空数组array() |
判断是否包含元素 | has(arr,elem) | |
判断是否包含数组 | hasAll(set, subset) | |
判断数组是否有交集 | hasAny(array1, array2) | |
查询元素索引 | indexOf(arr,x) | 从1开始 |
正序排序 | arraySort(arr) | 默认正序 |
倒序排序 | arrayReverseSort(arr) | 倒序 |
去重 | arrayDistinct(array) | |
交集 | arrayIntersect(arr1, arr2, ...) | |
求和 | arraySum(arr) | |
最大元素 | arrayMax(arr) | |
最小元素 | arrayMin(arr) | |
随机抽样 | arrayRandomSample(arr, samples) | samples:样本个数 |
# 2. 高阶函数
# 2.1. arrayMap(func, arr1, ...)
- 对数组每一个元素进行指定方法运算(必须将 lambda 函数作为第一个参数传递给它)
--例1:每个元素+2
SELECT arrayMap(x -> (x + 2), [1, 2, 3]) as res;
1
2
2
# 2.2. arrayFilter(func, arr1, ...)
- 数组过滤,返回指定条件的一个新数组(必须将 lambda 函数作为第一个参数传递给它)
--例1:返回大于2的元素
SELECT arrayMap(x -> x > 2, [1, 2, 3]) as res;
1
2
2
# 2.3. arrayJoin(arr)
- 该函数可以将数组展开到多行,应用十分广泛
SELECT arrayJoin([1, 2, 3] AS src) AS dst, 'Hello', src
┌─dst─┬─\'Hello\'─┬─src─────┐
│ 1 │ Hello │ [1,2,3] │
│ 2 │ Hello │ [1,2,3] │
│ 3 │ Hello │ [1,2,3] │
└─────┴───────────┴─────────┘
1
2
3
4
5
6
7
2
3
4
5
6
7
# 2.4. 聚合函数
- 将一列数据聚合为数组
SELECT groupArray(id)
-- 聚合去重
SELECT groupUniqArray(x)
-- 聚合随机取样
SELECT groupArraySample(max_size)(x)
1
2
3
4
5
6
7
2
3
4
5
6
7
- 02
- 2025-03-28拍婚纱照 原创04-02
- 03
- 2024-04-05的晚上 原创04-01