You need to enable JavaScript to run this app.
导航

数组函数

最近更新时间2024.01.22 17:18:38

首次发布时间2024.01.22 17:18:38

本文介绍日志服务支持的数组函数语法及常见场景的使用示例。

函数列表

说明

在日志服务分析语句(SQL 语句)中,需要使用单引号('')包裹代表字符串的字符,无符号包裹或被双引号("")包裹的字符为字段名或列名。例如'time' 代表字符串,time"time" 代表字段名或列名。

函数名称

函数语法

说明

ARRAY_AGG 函数

ARRAY_AGG(KEY)

聚合目标字段或表达式的值,并以数组形式返回。

ARRAY_DISTINCT 函数

ARRAY_DISTINCT(KEY)

删除数组中重复的元素。

ARRAY_EXCEPT 函数

ARRAY_EXCEPT(KEY1, KEY2)

剔除两个数组中的重复元素,并返回被剔除重复元素后的第一个数组。

ARRAY_INTERSECT 函数

ARRAY_INTERSECT(KEY1, KEY2)

返回两个数组的交集。

ARRAY_JOIN 函数

ARRAY_JOIN(KEY, delimiter)

使用指定的连接符将数组中的元素拼接为一个字符串。如果数组中包含 NULL 元素,则忽略 NULL 元素。

ARRAY_JOIN(KEY, delimiter, null_replacement)

使用指定的连接符将数组中的元素拼接为一个字符串。如果数组中包含 NULL 元素,则指定其他字符串代替 NULL 元素。

ARRAY_MAX 函数

ARRAY_MAX(KEY)

计算数组元素中的最大值。

ARRAY_MIN 函数

ARRAY_MIN(KEY)

计算数组元素中的最小值。

ARRAY_REMOVE 函数

ARRAY_REMOVE(KEY, element)

删除数组中的某个元素。

ARRAY_SORT 函数

ARRAY_SORT(KEY)

对数组中的元素进行升序排序。如果存在 NULL 元素,则将 NULL 元素排在最后。

ARRAY_UNION 函数

ARRAY_UNION(KEY1, KEY2)

返回两个数组的并集。

CARDINALITY 函数

CARDINALITY(KEY)

统计数组中元素的个数。

CONCAT 函数

CONCAT(KEY1, KEY2…)

拼接多个数组为一个数组。

CONTAINS 函数

CONTAINS(KEY, element)

判断数组中是否包含某个元素。

FILTER 函数

FILTER(KEY, lambda_expression)

结合 FILTER 函数和 Lambda 表达式,用于过滤数组中的元素。

REVERSE 函数

REVERSE(KEY)

对数组中的元素进行反向排列。

ARRAY_AGG 函数

ARRAY_AGG 函数用于聚合一组值,并以数组形式返回。

函数语法

  • 语法格式

    ARRAY_AGG (KEY)
    
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为任意数据类型。

  • 返回值说明
    返回值为 Array 类型。

函数示例

  • 场景
    聚合 test_double 字段的值,并以数组形式返回。

  • 日志样例

  • 检索和分析语句

    * | SELECT ARRAY_AGG(test_double) AS array
    
  • 检索和分析结果

ARRAY_DISTINCT 函数

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

函数语法

  • 语法格式

    ARRAY_DISTINCT(KEY)
    
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为任意数据类型。

  • 返回值说明
    返回值为 Array 类型。

函数示例

  • 场景
    删除test_text字段值中重复的元素。

  • 日志样例

  • 检索和分析语句

    *| SELECT ARRAY_DISTINCT(cast(JSON_PARSE(test_text) as array(bigint)))
    
  • 检索和分析结果

ARRAY_EXCEPT 函数

ARRAY_EXCEPT 函数用于删除两个数组中的重复元素,并返回被删除重复元素后的第一个数组。

函数语法

  • 语法格式

    ARRAY_EXCEPT(KEY1, KEY2)
    
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为 Array 类型。

  • 返回值说明
    返回值为 Array 类型。

函数示例

  • 场景
    删除数组[10,2,30,14,5][4,2,5,7]中的重复元素2、5,然后返回第一个数组[10,30,14]

  • 检索和分析语句

    * | SELECT ARRAY_EXCEPT(array[10,2,30,14,5],array[4,2,5,7])
    
  • 检索和分析结果
    图片

ARRAY_INTERSECT 函数

ARRAY_INTERSECT 函数用于返回两个数组的交集。

函数语法

  • 语法格式

    ARRAY_INTERSECT(KEY1, KEY2)
    
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为 Array 类型。

  • 返回值说明
    返回值为 Array 类型。

函数示例

  • 场景
    计算数组[10,2,30,14,5][4,2,5,7]的交集。

  • 检索和分析语句

    * | SELECT ARRAY_INTERSECT(array[10,2,30,14,5],array[4,2,5,7])
    
  • 检索和分析结果
    图片

ARRAY_JOIN 函数

ARRAY_JOIN 函数用于将数组元素拼接为一个字符串。

函数语法

  • 语法格式

    • 使用指定的连接符将数组元素拼接为一个字符串。如果数组中包含 NULL 元素,则忽略 NULL 元素。

      ARRAY_JOIN(KEY, delimiter)
      
    • 使用指定的连接符将数组元素拼接为一个字符串。如果数组中包含 null 元素,则指定其他字符串代替 null 元素。

      ARRAY_JOIN(KEY, delimiter,null_replacement)
      
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为 Array 类型。

    delimiter

    连接符,可以为字符串。

    null_replacement

    用于替换 NULL 元素的字符串。

  • 返回值说明
    返回值为 Varchar 类型。

函数示例

  • 场景
    使用空格将数组 [null, 'Hello','World'] 中的元素拼接为一个字符串,并使用Replace替换 null 元素。

  • 检索和分析语句

    * | SELECT ARRAY_JOIN(array[null,'Hello','World'],' ','Replace')
    
  • 检索和分析结果

ARRAY_MAX 函数

ARRAY_MAX 函数用于提取数组元素中的最大值。

函数语法

  • 语法格式

    ARRAY_MAX(KEY)
    
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为任意数据类型。

  • 返回值说明
    返回值与数组元素的数据类型一致。如果数组中包含 NULL,则返回结果为 NULL。

函数示例

  • 场景
    提取 test_text 字段值中的最大值。

  • 日志样例

  • 检索和分析语句

    *| SELECT ARRAY_MAX(TRY_CAST(JSON_PARSE(test_text) as ARRAY(bigint))) AS max_number
    
  • 检索和分析结果

ARRAY_MIN 函数

ARRAY_MIN 函数用于提取数组元素中的最小值。

函数语法

  • 语法格式

    ARRAY_MIN(KEY) 
    
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为任意数据类型。

  • 返回值说明
    返回值与数组元素的数据类型一致。如果数组中包含 NULL,则返回结果为 NULL。

函数示例

  • 场景
    计算 test_text 字段值中的最小值。

  • 日志样例

  • 检索和分析语句

    *| SELECT ARRAY_MIN(try_cast(JSON_PARSE(test_text) as array(bigint))) AS min_number
    
  • 检索和分析结果

ARRAY_REMOVE 函数

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

函数语法

  • 语法格式

    ARRAY_REMOVE(KEY, element)
    
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为 Array 类型。

    element

    数组中的一个元素。

  • 返回值说明
    返回值为 Array 类型。如果待删除的元素为 null ,则返回结果也为 null。

函数示例

  • 场景
    删除数组[49,45,47]中的 45。

  • 检索和分析语句

    * | SELECT ARRAY_REMOVE(array[49,45,47],45)
    
  • 检索和分析结果

ARRAY_SORT 函数

ARRAY_SORT 函数按照升序对数组元素进行排列。如果存在 NULL 元素,则将 NULL 元素排在最后。

函数语法

  • 语法格式

    ARRAY_SORT(KEY)
    
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为 Array 类型。

  • 返回值说明
    返回值为 Array 类型。

函数示例

  • 场景
    对数组['e', 'k', null, 'v', 'y']进行升序排序。

  • 检索和分析语句

    * | SELECT ARRAY_SORT(ARRAY['e', 'k', null, 'v', 'y'])
    
  • 检索和分析结果
    图片

ARRAY_UNION 函数

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

函数语法

  • 语法格式

    ARRAY_UNION(KEY1, KEY2)
    
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为 Array 类型。

  • 返回值说明
    返回值为 Array 类型。

函数示例

  • 场景
    计算数组[10,2,30,14,5][4,2,5,7]的并集。

  • 检索和分析语句

    * | SELECT ARRAY_UNION(ARRAY[10,2,30,14,5],ARRAY[4,2,5,7])
    
  • 检索和分析结果
    图片

CARDINALITY 函数

CARDINALITY 函数用于统计数组元素的个数。

函数语法

  • 语法格式

    CARDINALITY(KEY)
    
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为 Array 类型。

  • 返回值说明
    返回值为 Bigint 类型。

函数示例

  • 场景
    计算 test_text 字段值中元素的个数。

  • 日志样例

  • 检索和分析语句

    *| SELECT CARDINALITY(CAST(JSON_PARSE(test_text) as ARRAY(bigint)))
    
  • 检索和分析结果

CONCAT 函数

CONCAT 函数用于拼接多个数组为一个数组。

函数语法

  • 语法格式

    CONCAT(KEY1, KEY2…)
    
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为 Array 类型。

  • 返回值说明
    返回值为 Array 类型。

函数示例

  • 场景
    将数组 [10,2,30,14,5][4,2,5,7] 拼接为一个数组。

  • 检索和分析语句

    * | SELECT CONCAT(ARRAY[10,2,30,14,5],ARRAY[4,2,5,7])
    
  • 检索和分析结果
    图片

CONTAINS 函数

CONTAINS 函数用于判断数组是否包含某个元素。

函数语法

  • 语法格式

    CONTAINS(KEY, element)
    
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为 Array 类型。

    element

    数组元素。

  • 返回值说明
    返回值为 Boolean 类型。如果数组中包含某个元素,则返回 true,否则反正 false。

函数示例

  • 场景
    计算 test_text 字段值中是否包含 50。

  • 日志样例

  • 检索和分析语句

    *| SELECT CONTAINS(cast(JSON_PARSE(test_text) as array(bigint)), 50)
    
  • 检索和分析结果

FILTER 函数

结合 FILTER 函数和 Lambda 表达式,过滤数组中的元素。

函数语法

  • 语法格式

    FILTER(KEY, lambda_expression)
    
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为 Array 类型。

    lambda_expression

    Lambda 表达式。

  • 返回值说明
    返回值为 Array 类型。返回的数组中只包含满足 Lambda 表达式的元素。

函数示例

  • 场景
    结合 Lambda 表达式 x -> x > 0,返回数组 [10,-1,null,9,-7] 中大于 0 的元素。

  • 检索和分析语句

    * | SELECT FILTER(array[10,-1,null,9,-7],x -> x > 0)
    
  • 检索和分析结果
    图片

REVERSE 函数

REVERSE 函数用于反向排列数组元素。

函数语法

  • 语法格式

    REVERSE(KEY)
    
  • 参数说明如下:

    参数

    说明

    KEY

    字段、表达式,其值为 Array 类型。

  • 返回值说明
    返回值为 Array 类型。

函数示例

  • 场景
    将数组[100,500,300,400,200]中的元素反向排序。

  • 检索和分析语句

    * | SELECT REVERSE(array[100,500,300,400,200])
    
  • 检索和分析结果
    图片