tencent cloud

日志服务

动态与公告
产品动态
公告
新手指引
产品简介
产品概述
产品优势
地域和访问域名
规格与限制
基本概念
购买指南
计费概述
产品定价
按量计费(后付费)
欠费说明
清理日志服务资源
成本优化
常见问题
快速入门
一分钟入门指南
入门指南
使用 Demo 日志快速体验 CLS
操作指南
资源管理
权限管理
日志采集
指标采集
日志存储
指标存储
检索分析(日志主题)
检索分析(指标主题)
仪表盘
数据处理
投递与消费
监控告警
云产品中心
DataSight 独立控制台
历史文档
实践教程
日志采集
检索分析
仪表盘
监控告警
投递和消费
成本优化
开发者指南
通过 iframe 内嵌 CLS(旧方案)
通过 Grafana 使用 CLS
API 文档
History
Introduction
API Category
Making API Requests
Topic Management APIs
Log Set Management APIs
Index APIs
Topic Partition APIs
Machine Group APIs
Collection Configuration APIs
Log APIs
Metric APIs
Alarm Policy APIs
Data Processing APIs
Kafka Protocol Consumption APIs
CKafka Shipping Task APIs
Kafka Data Subscription APIs
COS Shipping Task APIs
SCF Delivery Task APIs
Scheduled SQL Analysis APIs
COS Data Import Task APIs
Data Types
Error Codes
常见问题
健康监测问题解释
采集相关
检索分析相关
其他问题
服务等级协议
CLS 政策
隐私协议
数据处理和安全协议
联系我们
词汇表

数组函数

PDF
聚焦模式
字号
最后更新时间: 2026-01-07 15:39:44
本文档为您介绍数组相关函数的语法及示例。
函数名称
语句
含义
[x]
[]用于获取数组中的某个元素,等同于 element_at 函数。
array_agg(x)
以数组形式返回 x 中的所有值。
array_distinct(x)
数组去重,获取数组中的唯一元素。
array_except(x,y)
计算 x,y 两个数组的差集。
array_intersect(x, y)
计算 x,y 两个数组的交集。
array_join(x, delimiter)
使用指定的连接符将数组中的元素拼接为一个字符串。如果数组中包含 null 元素,则 null 元素将被忽略。说明: 使用 array_join 函数时,返回结果最大为1KB,超出1KB的数据会被截断。
array_join(x, delimiter, null_replacement)
把字符串数组用 delimiter 连接,拼接成字符串,null 值用 null_replacement 替代。说明: 使用 array_join 函数时,返回结果最大为1KB,超出1KB的数据会被截断。
array_max(x)
获取数组中的最大值。
array_max(x)
获取数组中的最小值。
array_position(x, element)
获取指定元素的下标,下标从1开始。如果指定元素不存在,则返回0。
array_remove(x, element)
删除数组中指定的元素。
array_sort(x)
对数组元素进行升序排序。如果有 null 元素,则 null 元素排在最后。
array_union(x, y)
计算两个数组的并集。
cardinality(x)
计算数组中元素的个数。
concat(x, y...)
将多个数组拼接为一个数组。
contains(x, element)
判断数组中是否包含指定元素。如果包含,则返回 true。
element_at(x, y)
返回数组中的第 y 个元素。
filter(x, lambda_expression)
结合 Lambda 表达式,用于过滤数组中的元素,只返回满足 Lambda 表达式的元素。
flatten(x)
把将二维数组转换为一维数组。
reduce(x, lambda_expression)
根据 Lambda 表达式的定义,对数组中的各个元素进行相加计算,然后返回计算结果。
reverse(x)
对数组中的元素进行反向排列。
sequence(x, y)
通过指定的起始值返回一个数组,其元素为起始值范围内一组连续且递增的值。递增间隔为默认值1。
sequence(x, y, step)
通过指定的起始值返回一个数组,其元素为起始值范围内一组连续且递增的值。自定义递增间隔。
shuffle(x)
对数组元素进行随机排列。
slice(x, start, length)
获取数组的子集。
transform(x, lambda_expression)
将 Lambda 表达式应用到数组的每个元素中。
zip(x, y)
将多个数组合并为一个二维数组,且各个数组中下标相同的元素组成一个新的数组。
zip_with(x, y, lambda_expression)
根据 Lambda 表达式中的定义将两个数组合并为一个数组。

下标运算符 []

下标运算符用于返回数组中的第 x 个元素。等同与 element_at 函数。

语法

[x]

参数说明

参数
说明
x
数组下标,从1开始。参数值为 bigint 类型。

返回值类型

返回指定元素的数据类型。

示例

返回 number 字段值中的第2个元素。
字段样例
array:[12,23,26,48,26]
查询和分析语句
* | SELECT cast(json_parse(array) as array(bigint)) [2]
查询和分析结果
23

array_agg 函数

array_agg 函数会以数组形式返回 x 中所有的值。

语法

array_agg(x)

参数说明

参数
说明
x
参数值为任意数据类型。

返回值类型

array 类型。

示例

以数组形式返回 status 字段的值。
查询和分析语句
* | SELECT array_agg(status) AS array
查询和分析结果
[200,200,200,404,200,200]

array_distinct 函数

array_distinct 函数用于删除数组中重复的元素。

语法

array_distinct(x)

参数说明

参数
说明
x
参数值为 array 类型。

返回值类型

array 类型。

示例

删除 array 字段值中重复的元素。
字段样例
array:[12,23,26,48,26]
查询和分析语句
* | SELECT array_distinct(cast(json_parse(array) as array(bigint)))
查询和分析结果
[12,23,26,48]

array_except 函数

array_except 函数用于计算两个数组的差集。

语法

array_except(x, y)

参数说明

参数
说明
x
参数值为 array 类型。
y
参数值为 array 类型。

返回值类型

array 类型。

示例

计算数组[1,2,3,4,5]和[1,3,5,7]的差集。
查询和分析语句
* | SELECT array_except(array[1,2,3,4,5],array[1,3,5,7])
查询和分析结果
[2,4]

array_intersect 函数

array_intersect 函数用于计算两个数组的交集。

语法

array_intersect(x, y)

参数说明

参数
说明
x
参数值为 array 类型。
y
参数值为 array 类型。

返回值类型

array 类型。

示例

计算数组[1,2,3,4,5]和[1,3,5,7]的差集。
查询和分析语句
* | SELECT array_intersect(array[1,2,3,4,5],array[1,3,5,7])
查询和分析结果
[1,3,5]

array_join 函数

array_join 函数使用指定的连接符将数组中的元素拼接为一个字符串。

语法

使用指定的连接符将数组中的元素拼接为一个字符串。如果数组中包含 null 元素,则 null 元素将被忽略。
array_join(x, delimiter)
使用指定的连接符将数组中的元素拼接为一个字符串。如果数组中包含 null 元素,则 null 元素将被替换为 null_replacement。
array_join(x, delimiter, null_replacement)

参数说明

参数
说明
x
参数值为 array 类型。
delimiter
连接符,可以为字符串。
null_replacement
用于替换 null 元素的字符串。

返回值类型

varchar 类型。

示例

使用空格将数组[null, '中国','sh']中的元素拼接为一个字符串,其中 null 元素替换为 ‘region’。
查询和分析语句
* | SELECT array_join(array[null,'中国','sh'],'/','region')
查询和分析结果
region/中国/sh

array_max 函数

array_max 函数用于获取数组中的最大值。

语法

array_max(x)

参数说明

参数
说明
x
参数值为 array 类型。

返回值类型

与参数值中元素的数据类型一致。

示例

获取数组中[12,23,26,48,26]的最大值48。
字段样例
array:[12,23,26,48,26]
查询和分析语句
* | SELECT array_max(try_cast(json_parse(array) as array(bigint))) AS max_number
查询和分析结果
48

array_min 函数

array_min 函数用于获取数组中的最小值。

语法

array_min(x)

参数说明

参数
说明
x
参数值为 array 类型。

返回值类型

与参数值中元素的数据类型一致。

示例

获取数组中[12,23,26,48,26]的最小值12。
字段样例
array:[12,23,26,48,26]
查询和分析语句
* | SELECT array_min(try_cast(json_parse(array) as array(bigint))) AS min_number
查询和分析结果
12

array_position 函数

array_position 函数用于获取指定元素的下标,下标从1开始。如果指定元素不存在,则返回0。

语法

array_position(x, element)

参数说明

参数
说明
x
参数值为数组类型。
element
数组中的一个元素。

返回值类型

bigint 类型。

示例

返回数组[23,46,35]中46的下标。
查询和分析语句
* | SELECT array_position(array[23,46,35],46)
查询和分析结果
2

array_remove 函数

array_remove 函数用于删除数组中指定的元素。

语法

array_remove(x, element)

参数说明

参数
说明
x
参数值为数组类型。
element
数组中的一个元素。

返回值类型

array 类型。

示例

删除数组[23,46,35]中23。
查询和分析语句
* | SELECT array_remove(array[23,46,35],23)
查询和分析结果
[46,35]

array_sort 函数

array_sort 函数用于对数组元素进行升序排序。

语法

array_sort(x)

参数说明

参数
说明
x
参数值为 array 类型。

返回值类型

array 类型。

示例

对数组['b', 'd', null, 'c', 'a']进行升序排序。
查询和分析语句
* | SELECT array_sort(array['b','d',null,'c','a'])
查询和分析结果
["a","b","c","d",null]

array_union 函数

array_union 函数用于计算两个数组的并集。

语法

array_union(x, y)

参数说明

参数
说明
x
参数值为 array 类型。
y
参数值为 array 类型。

返回值类型

array 类型。

示例

计算数组[1,2,3,4,5]和[1,3,5,7]的并集。
查询和分析语句
* | SELECT array_union(array[1,2,3,4,5],array[1,3,5,7])
查询和分析结果
[1,2,3,4,5,7]

cardinality 函数

cardinality 函数用于计算数组中元素的个数。

语法

cardinality(x)

参数说明

参数
说明
x
参数值为 array 类型。

返回值类型

bigint 类型。

示例

计算 number 字段值中元素的个数。
字段样例
array:[12,23,26,48,26]
查询和分析语句
* | SELECT cardinality(cast(json_parse(array) as array(bigint)))
查询和分析结果
5

concat 函数

concat 函数用于将多个数组拼接成一个数组。

语法

concat(x, y...)

参数说明

参数
说明
x
参数值为 array 类型。
y
参数值为 array 类型。

返回值类型

array 类型。

示例

将数组['red','blue']和['yellow','green']拼接为一个数组。
查询和分析语句
* | SELECT concat(array['red','blue'],array['yellow','green'])
查询和分析结果
["red","blue","yellow","green"]

contains 函数

contains 函数用于判断数组中是否包含指定元素。如果包含,则返回 true。

语法

contains(x, element)

参数说明

参数
说明
x
参数值为数组类型。
element
数组中的一个元素。

返回值类型

boolean 类型。

示例

判断 array 字段值中是否包含23。
字段样例
array:[12,23,26,48,26]
查询和分析语句
* | SELECT contains(cast(json_parse(array) as array(varchar)),'23')
查询和分析结果
TRUE

element_at 函数

element_at 函数用于返回数组中的第 y 个元素。

语法

element_at(x, y)

参数说明

参数
说明
x
参数值为 array 类型。
element
数组下标,从1开始。参数值为 bigint 类型。

返回值类型

任意数据类型。

示例

返回 number 字段值中的第2个元素。
字段样例
array:[12,23,26,48,26]
查询和分析语句
* | SELECT element_at(cast(json_parse(number) AS array(varchar)), 2)
查询和分析结果
23

filter 函数

filter 函数和 Lambda 表达式结合,用于过滤数组中的元素。只返回满足 Lambda 表达式的元素。

语法

filter(x, lambda_expression)

参数说明

参数
说明
x
参数值为 array 类型。
lambda_expression
Lambda 表达式。更多信息,请参见 Lambda 函数

返回值类型

array 类型。

示例

返回数组[5,-6,null,7]中大于0的元素,其中x -> x > 0为 Lambda 表达式。
查询和分析语句
* | SELECT filter(array[5,-6,null,7],x -> x > 0)
查询和分析结果
[5,7]

flatten 函数

flatten 函数用于将二维数组转换为一维数组。

语法

flatten(x)

参数说明

参数
说明
x
参数值为 array 类型。

返回值类型

array 类型。

示例

将数组array[1,2,3,4],array[4,3,2,1]转换为一维数组。
查询和分析语句
* | SELECT flatten(array[array[1,2,3,4],array[4,3,2,1]])
查询和分析结果
[1,2,3,4,4,3,2,1]

reduce 函数

reduce 函数将根据 Lambda 表达式中的定义,对数组中的各个元素进行相加计算,然后返回计算结果。

语法

reduce(x, lambda_expression)

参数说明

参数
说明
x
参数值为 array 类型。
lambda_expression
Lambda 表达式。更多信息,请参见 Lambda 函数

返回值类型

bigint 类型。

示例

返回数组[5, 20, 50]中各个元素相加的结果。
查询和分析语句
* | SELECT reduce(array[5,20,50],0,(s, x) -> s + x, s -> s)
查询和分析结果
75

reverse 函数

reverse 函数用于对数组中的元素进行反向排列。

语法

reverse(x)

参数说明

参数
说明
x
参数值为 array 类型。

返回值类型

array 类型。

示例

将数组[1,2,3,4,5]中的元素反向排序。
查询和分析语句
* | SELECT reverse(array[1,2,3,4,5])
查询和分析结果
[5,4,3,2,1]

sequence 函数

sequence 函数通过指定的起始值返回一个数组,其元素为起始值范围内一组连续且递增的值。

语法

递增间隔为默认值1。
sequence(x, y)
自定义递增间隔。
sequence(x, y, step)

参数说明

参数
说明
x
参数值为 bigint 类型、timestamp 类型(Unix 时间戳、日期和时间表达式)。
y
参数值为 bigint 类型、timestamp 类型(Unix 时间戳、日期和时间表达式)。
step
数值间隔。当参数值为日期和时间表达式时,step 格式如下:
interval 'n' year to month,表示间隔为 n 年。
interval 'n' day to second,表示间隔为 n 天。

返回值类型

array 类型。

示例

示例1:返回0 - 10之间的偶数。
查询和分析语句
* | SELECT sequence(0,10,2)
查询和分析结果
[0,2,4,6,8,10]
示例2:返回2017-10-23到2021-08-12之间的日期,间隔为1年。
查询和分析语句
* | SELECT sequence(from_unixtime(1508737026),from_unixtime(1628734085),interval '1' year to month )
查询和分析结果
["2017-10-23 05:37:06.0","2018-10-23 05:37:06.0","2019-10-23 05:37:06.0","2020-10-23 05:37:06.0"]
示例3:返回1628733298,1628734085之间的 Unix 时间戳,间隔为60秒。
查询和分析语句
* | SELECT sequence(1628733298,1628734085,60)
查询和分析结果
[1628733298,1628733358,1628733418,1628733478,1628733538,1628733598,1628733658,1628733718,1628733778,1628733838,1628733898,1628733958,1628734018,1628734078]

shuffle 函数

shuffle 函数用于对数组元素进行随机排列。

语法

shuffle(x)

参数说明

参数
说明
x
参数值为 array 类型。

返回值类型

array 类型。

示例

对数组[1,2,3,4,5]中的元素进行随机排序。
查询和分析语句
* | SELECT shuffle(array[1,2,3,4,5])
查询和分析结果
[5,2,4,1,3]

slice 函数

slice 函数用于返回数组的子集。

语法

slice(x, start, length)

参数说明

参数
说明
x
参数值为 array 类型。
start
指定索引开始的位置。
如果 start 为负数,则从末尾开始。
如果 start 为正数,则从头部开始。
length
指定子集中元素的个数。

返回值类型

array 类型。

示例

返回数组[1,2,4,5,6,7,7]的子集,从第三个元素开始返回,子集元素个数为2。
查询和分析语句
* | SELECT slice(array[1,2,4,5,6,7,7],3,2)
查询和分析结果
[4,5]

transform 函数

transform 函数用于将 Lambda 表达式应用到数组的每个元素中。

语法

transform(x, lambda_expression)

参数说明

参数
说明
x
参数值为 array 类型。
lambda_expression
Lambda 表达式。更多信息,请参见 Lambda 函数

返回值类型

array 类型。

示例

将数组[5,6]中的各个元素加1,然后返回。
查询和分析语句
* | SELECT transform(array[5,6],x -> x + 1)
查询和分析结果
[6,7]

zip 函数

zip 函数将多个数组合并为一个二维数组,且各个数组中下标相同的元素组成一个新的数组。

语法

zip(x, y)

参数说明

参数
说明
x
参数值为 array 类型。
y
参数值为 array 类型。

返回值类型

array 类型。

示例

将数组[1,2]和[3,4]合并为一个二维数组。
查询和分析语句
* | SELECT zip(array[1,2], array[3,4])
查询和分析结果
["{1, 3}","{2, 4}"]

zip_with 函数

zip_with 函数将根据 Lambda 表达式中的定义将两个数组合并为一个数组。

语法

zip_with(x, y, lambda_expression)

参数说明

参数
说明
x
参数值为 array 类型。
y
参数值为 array 类型。
lambda_expression
Lambda 表达式。更多信息,请参见 Lambda 函数

返回值类型

array 类型。

示例

使用 Lambda 表达式(x, y) -> x + y使数组[1,2]和[3,4]中的元素分别相加后,以数组类型返回相加的结果。
查询和分析语句
* | SELECT zip_with(array[1,2], array[3,4],(x,y) -> x + y)
查询和分析结果
[4,6]


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈