You need to enable JavaScript to run this app.
文档中心
日志服务

日志服务

复制全文
下载 pdf
SQL 函数
Map 映射函数
复制全文
下载 pdf
Map 映射函数

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

函数列表

说明

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

函数名称

语法

说明

下标运算符

[x]

返回 Map 中目标健的值。

CARDINALITY 函数

CARDINALITY(KEY)

计算 Map 中键值对的数量。

ELEMENT_AT 函数

ELEMENT_AT(map, key)

获取 Map 中指定键的值。

HISTOGRAM 函数

HISTOGRAM(KEY)

对检索分析结果进行分组,返回结果为 JSON 格式。

MAP 函数

MAP()

构造一个空 Map。

MAP(KEY1, KEY2)

将两个数组映射为一个 Map。

MAP_AGG 函数

MAP_AGG(KEY1, KEY2)

聚合数据并将其映射为一个 Map。每个键对应一个唯一的值。

MAP_FILTER 函数

MAP_FILTER(KEY, lambda_expression)

和 Lambda 表达式结合,用于过滤 Map 中的元素。

MAP_KEYS 函数

MAP_KEYS(KEY)

提取 Map 中所有的键,并以数组形式返回。

MAP_VALUES 函数

MAP_VALUES(KEY)

提取 Map 中所有键的值,并以数组形式返回。

MULTIMAP_AGG 函数

MULTIMAP_AGG(KEY1, KEY2)

聚合数据并将其映射为一个 Map。每个键可对应多个值。

下标运算符

下标运算符用于返回 Map 中目标健的值。与 ELEMENT_AT 函数含义相同。

函数语法

  • 语法格式

    [x]
    
  • 参数说明

    参数

    说明

    x

    值为 varchar 类型。

  • 返回值说明
    返回值为任意数据类型。

函数示例

  • 示例1
    • 场景
      构建一个 Map {"lily":19,"lucy":27,"regan":25},并返回 lily 的值。

    • 检索和分析语句

      * | SELECT map(array['regan', 'lucy', 'lily'], array[25, 27, 19])['lily']
      
    • 检索和分析结果
      Image

  • 示例2
    • 场景
      child_type 字段值为 varchar 类型,通过 CAST 函数将 child_type 字段值转换为 MAP(varchar, varchar) 类型,再通过下标运算符获取 kind 的键值。

      说明

      本示例中的 child_type 字段的索引数据类型为 text,如果索引数据类型为 json,将返回 null。

    • 日志样例
      Image

    • 检索和分析语句

      * | SELECT CAST(JSON_PARSE(child_type) AS MAP(varchar, varchar))['kind']
      
    • 检索和分析结果
      Image

CARDINALITY 函数

CARDINALITY 函数用于计算 Map 中键值对的数量。

函数语法

  • 语法格式

    CARDINALITY(KEY)
    
  • 参数说明

    参数

    说明

    KEY

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

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

函数示例

  • 场景
    child_type 字段值为 varchar 类型,通过 CAST 函数将 child_type 字段值转换为 MAP(varchar, varchar) 类型,再通过 CARDINALITY 函数计算 Map 中键值对的数量。

    说明

    本示例中的 child_type 字段的索引数据类型为 text,如果索引数据类型为 json,将返回 null。

  • 日志样例
    Image

  • 检索和分析语句

    * | SELECT CARDINALITY(CAST(JSON_PARSE(child_type) AS MAP(varchar, varchar)))
    
  • 检索和分析结果
    Image

ELEMENT_AT 函数

ELEMENT_AT 函数用于获取 Map 中指定键的值。

函数语法

  • 语法格式

    ELEMENT_AT(map, key)
    
  • 参数说明

    参数

    说明

    map

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

    key

    指定 Map 中的某个键名,ELEMENT_AT 函数将提取该键的值。

  • 返回值说明
    返回值为任意数据类型。

函数示例

  • 场景
    构建一个 Map {"lily":19,"lucy":27,"regan":25},并返回 lily 的值。

  • 检索和分析语句

    * | SELECT ELEMENT_AT(map(array['regan', 'lucy', 'lily'], array[25, 27, 19]),'lily')
    
  • 检索和分析结果
    Image

HISTOGRAM 函数

HISTOGRAM 函数用于对检索分析结果进行分组,返回结果为 JSON 格式。类似于 * | SELECT count(*) GROUP BY x

函数语法

  • 语法格式

    HISTOGRAM(KEY)
    
  • 参数说明

    参数

    说明

    KEY

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

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

函数示例

  • 场景
    使用 Histogram 函数获取所有请求不同响应状态对应的数量。

  • 检索和分析语句

    * | SELECT histogram(status) AS status_count
    
  • 检索和分析结果
    Image

MAP 函数

MAP 函数用于构造一个空 Map 或者将两个数组映射为一个 Map。

函数语法

  • 语法格式

    • 返回一个空 Map。

      MAP()
      
    • 将两个数组映射为一个 Map。

      MAP(KEY1,KEY2) 
      
  • 参数说明

    参数

    说明

    KEY

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

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

函数示例

  • 场景1
    • 示例
      使用 MAP 函数将分别代表姓名、年龄的数组 ['regan', 'lucy', 'lily'][25, 27, 19] 映射为一个 Map,将姓名和年龄一一对应。

    • 检索和分析语句

      * | SELECT map(array['regan', 'lucy', 'lily'], array[25, 27, 19])
      
    • 检索和分析结果
      Image

  • 场景2
    • 示例
      构造一个空 Map。

    • 检索和分析语句

      *| SELECT MAP()
      
    • 检索和分析结果
      Image

MAP_AGG 函数

MAP_AGG 函数用于聚合数据并将其映射为一个 Map。每个键对应一个唯一的值。

函数语法

  • 语法格式

    MAP_AGG(KEY1, KEY2)
    
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,值为 Array 类型。
    KEY1 为 Map 中的键,KEY2 为 Map 中的键值。当 KEY2 存在多个值时,随机提取一个值作为键值。

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

函数示例

  • 场景
    通过 ReqID 和 ReqTime 查询请求对应的耗时,并使用 MAP_AGG 函数将其映射为一个 Map。ReqID 为 Map 中的键,ReqTime 为 Map 中的值。

  • 检索和分析语句

    * | SELECT MAP_AGG(ReqID, ReqTime) FROM (SELECT ReqID, ReqTime LIMIT 5)
    
  • 检索和分析结果
    Image

MAP_FILTER 函数

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

函数语法

  • 语法格式

    MAP_FILTER(KEY, lambda_expression)
    
  • 参数说明

    参数

    说明

    KEY

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

    lambda_expression

    Lambda 表达式。

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

函数示例

  • 场景
    将两个数组映射为一个新的 Map,且 Map 中的键值不为 null。其中 (k, v) -> v is not null 为Lambda表达式。

  • 检索和分析语句

    * | SELECT MAP_FILTER(MAP(array['regan', 'lucy', 'lily'], array[21, NULL, 18]), (k, v) -> v is not null)
    
  • 检索和分析结果
    Image

MAP_KEYS 函数

MAP_KEYS 函数用于提取 Map 中所有的键,并以数组形式返回。

函数语法

  • 语法格式

    MAP_KEYS(KEY)
    
  • 参数说明

    参数

    说明

    KEY

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

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

函数示例

  • 场景
    使用 MAP_KEYS 函数提取 result 字段值中所有的键。

  • 日志样例

    result: {
    type:"pattern-discovery"
    stage:"pattern-clustering"
    progress:"100"
    complete:"false"
    }
    
  • 检索和分析语句

    * | SELECT MAP_KEYS(TRY_CAST(JSON_PARSE(result) AS MAP(varchar, varchar)))
    
  • 检索和分析结果
    Image

MAP_VALUES 函数

MAP_VALUES 函数用于提取 Map 中所有键的值,并以数组形式返回。

函数语法

  • 语法格式

    MAP_VALUES(KEY)
    
  • 参数说明

    参数

    说明

    KEY

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

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

函数示例

  • 场景
    使用 MAP_VALUES 函数提取 result 字段值中所有的值。

  • 日志样例

    result: {
    type:"pattern-discovery"
    stage:"pattern-clustering"
    progress:"100"
    complete:"false"
    }
    
  • 检索和分析语句

    * | SELECT MAP_VALUES(TRY_CAST(JSON_PARSE(result) AS MAP(varchar, varchar)))
    
  • 检索和分析结果
    Image

MULTIMAP_AGG 函数

MULTIMAP_AGG 函数用于聚合数据并将其映射为一个 Map。

函数语法

  • 语法格式

    MULTIMAP_AGG(KEY1, KEY2)
    
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,值为任意数据类型。
    KEY1 为 Map 中的键,KEY2 为 Map 中的键值,键值为数组格式。当 KEY2 存在多个值时,提取所有的值作为键值。

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

函数示例

  • 场景
    提取 Action 字段和 ReqTime 字段的值,然后映射为一个 Map。Action 字段值为 Map 中的键,ReqTime 字段值为 Map 中的键值,键值为数组格式。

  • 检索和分析语句

    * | SELECT MULTIMAP_AGG(Action, ReqTime) FROM(SELECT Action, ReqTime LIMIT 5)
    
  • 检索和分析结果
    Image

最近更新时间:2025.08.19 10:54:30
这个页面对您有帮助吗?
有用
有用
无用
无用