本文介绍数组函数的基本语法及示例。
函数列表
函数名称 | 语法 | 说明 |
---|---|---|
array | array(x1,...) | 创建一个数组。 |
array_distinct | array_distinct(arr) | 接收一个数组,返回一个只包含不同元素的数组。 |
array_intersect | array_intersect(arr1, arr2, ...) | 接收多个数组,返回交集数组。 |
array_join | array_join(arr [, delimiter]) | 将数组元素以分隔符合并。 |
array_max | array_max(arr) | 返回数组最大元素。 |
array_min | array_min(arr) | 返回数组最小元素。 |
array_position | array_position(arr) | 返回元素对应索引。 |
array_sort | array_sort(arr) | 数组排序。 |
array_contains | array_contains(arr, x) | 返回数组是否包含元素。 |
element_at | element_at(arr, n) | 从数组中获取对应索引位置的元素。 |
flatten | flatten(arr) | 多维数组展平。 |
sequence | sequence([start, ] end [, step]) | 返回数值序列数组。 |
slice | slice(arr, offset [, length]) | 返回数组的片段。 |
arrays_zip | arrays_zip(arr1, arr2, ...) | 将多个数组合并为一个二维数组,且各个数组中下标相同的元素组成一个新的数组。 |
array_agg | array_agg(col) | 以数组形式返回字段col中的所有值。 |
array函数
创建一个数组,各参数类型必须相同。
语法
array(x1,...)
参数说明
参数名称 | 说明 | 类型 | 是否必选 |
---|---|---|---|
x1 | 原始数据 | 任意数据类型 | 否 |
... | 原始数据 | 任意数据类型 | 否 |
返回值类型
array类型
示例
类型 | 示例 |
---|---|
统计分析语句 | SELECT array(1, 2, 3) |
返回结果 | [1,2,3] |
array_distinct函数
接收一个数组,返回一个只包含不同元素的数组。
语法
array_distinct(arr)
参数说明
参数名称 | 说明 | 类型 | 是否必选 |
---|---|---|---|
arr | 原始数组 | array类型 | 是 |
返回值类型
array类型
示例
类型 | 示例 |
---|---|
统计分析语句 | SELECT array_distinct(array(1, 2, 3, 3, 2)) |
返回结果 | [1, 2, 3] |
array_intersect函数
接收多个数组,返回交集数组。
语法
array_intersect(arr1, arr2, ...)
参数说明
参数名称 | 说明 | 类型 | 是否必选 |
---|---|---|---|
arr1 | 原始数组 | array类型 | 是 |
arr2 | 原始数组 | array类型 | 是 |
... | 原始数组 | array类型 | 否 |
返回值类型
array类型
示例
类型 | 示例 |
---|---|
统计分析语句 | SELECT array_intersect(array(1,2,3), array(2, 3, 4)) |
返回结果 | [2, 3] |
array_join函数
将数组元素以分隔符合并。
语法
array_join(arr [, delimiter])
参数说明
参数名称 | 说明 | 类型 | 是否必选 |
---|---|---|---|
arr | 原始数据 | array类型 | 是 |
delimiter | 分隔符 | string类型 | 否 |
返回值类型
string类型
示例
类型 | 示例 |
---|---|
统计分析语句 | SELECT array_join(array(1, 2, 3), 'x') |
返回结果 | 1x2x3 |
array_max函数
返回数组内最大元素。
语法
array_max(arr)
参数说明
参数名称 | 说明 | 类型 | 是否必选 |
---|---|---|---|
arr | 原始数组 | array类型 | 是 |
返回值类型
integer类型
示例
类型 | 示例 |
---|---|
统计分析语句 | SELECT array_max(array(1, 2, 3)) |
返回结果 | 3 |
array_min函数
返回数组内最小元素。
语法
array_min(arr)
参数说明
参数名称 | 说明 | 类型 | 是否必选 |
---|---|---|---|
arr | 原始数组 | array类型 | 是 |
返回值类型
integer类型
示例
类型 | 示例 |
---|---|
统计分析语句 | SELECT array_min(array(1, 2, 3)) |
返回结果 | 1 |
array_position函数
返回元素对应索引。
语法
array_position(arr, elem)
参数说明
参数名称 | 说明 | 类型 | 是否必选 |
---|---|---|---|
arr | 原始数组 | array类型 | 是 |
elem | 待查找元素 | 与数组arr内元素类型相同 | 是 |
返回值类型
integer类型
示例
类型 | 示例 |
---|---|
统计分析语句 | SELECT array_position(array(5, 6,4), 6) |
返回结果 | 2 |
array_sort函数
数组排序。
语法
array_sort(arr)
参数说明
参数名称 | 说明 | 类型 | 是否必选 |
---|---|---|---|
arr | 原始数组 | array类型 | 是 |
返回值类型
array类型
示例
类型 | 示例 |
---|---|
统计分析语句 | SELECT array_sort(array(3, 9, 5, 2, 4)) |
返回结果 | [2,3,4,5,9] |
array_contains函数
返回数组内是否包含元素。
语法
array_contains(arr, x)
参数说明
参数名称 | 说明 | 类型 | 是否必选 |
---|---|---|---|
arr | 原始数组 | array类型 | 是 |
x | 待查找元素 | 与数组arr内元素类型相同 | 是 |
返回值类型
integer类型(0:不包含;1:包含)
示例
类型 | 示例 |
---|---|
统计分析语句 | SELECT array_contains(array(1, 2, 3), 3) |
返回结果 | 1 |
element_at函数
从数组中获取对应索引位置的元素。
语法
element_at(arr, n)
参数说明
参数名称 | 说明 | 类型 | 是否必选 |
---|---|---|---|
arr | 原始数组 | array类型 | 是 |
n | 索引位置 | integer类型 | 是 |
返回值类型
与原始数组arr内元素类型相同
示例
类型 | 示例 |
---|---|
统计分析语句 | SELECT element_at(array('a', 'b', 'c'), 2) |
返回结果 | b |
flatten函数
多维数组展平。
语法
flatten(arr)
参数说明
参数名称 | 说明 | 类型 | 是否必选 |
---|---|---|---|
arr | 原始多维数组 | array类型 | 是 |
返回值类型
array类型
示例
类型 | 示例 |
---|---|
统计分析语句 | SELECT flatten(array(array('h', 'e', 'l', 'l', 'o'), array('w', 'o', 'r', 'l', 'd'))) |
返回结果 | ["h","e","l","l","o","w","o","r","l","d"] |
sequence函数
返回从start开始到end-1结束并以step为步长的数值序列数组。
语法
sequence([start, ] end [, step])
参数说明
参数名称 | 说明 | 类型 | 是否必选 |
---|---|---|---|
start | 序列开始元素 | integer类型 | 否 |
end | 序列结束元素 | integer类型 | 是 |
step | 序列步长 | integer类型 | 否 |
返回值类型
array类型
示例
类型 | 示例 |
---|---|
统计分析语句 | SELECT sequence(1, 10, 2) |
返回结果 | [1,3,5,7,9] |
slice函数
返回数组的片段。
语法
slice(arr, offset [, length])
参数说明
参数名称 | 说明 | 类型 | 是否必选 |
---|---|---|---|
arr | 原始数组 | array类型 | 是 |
offset | 片段在原始数组的偏移量 | integer类型 | 是 |
length | 片段长度 | integer类型 | 否 |
返回值类型
array类型
示例
类型 | 示例 |
---|---|
统计分析语句 | SELECT slice(array(1, 2, 3, 4, 5), 2, 2) |
返回结果 | [2,3] |
arrays_zip函数
将多个数组合并为一个二维数组,且各个数组中下标相同的元素组成一个新的数组。
语法
arrays_zip(arr1, ...)
参数说明
参数名称 | 说明 | 类型 | 是否必选 |
---|---|---|---|
arr1 | 原始数组 | array类型 | 是 |
... | 原始数组 | array类型 | 否 |
返回值类型
array类型
示例
类型 | 示例 |
---|---|
统计分析语句 | SELECT arrays_zip(array(1, 2, 3), array(3, 4, 5)) |
返回结果 | [[1,3],[2,4],[3,5]] |
array_agg函数
以数组形式返回字段col中的所有值。
语法
array_agg(col)
参数说明
参数名称 | 说明 | 类型 | 是否必选 |
---|---|---|---|
col | 索引字段名称 |
任意类型 | 是 |
返回值类型
array类型
示例
类型 | 示例 |
---|---|
统计分析语句 | SELECT array_agg(level) |
返回结果 | ["INFO","INFO","INFO","ERROR","INFO", ...] |