You need to enable JavaScript to run this app.
导航
JSON 函数
最近更新时间:2024.06.06 20:35:10首次发布时间:2024.01.22 17:18:38

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

函数列表

说明

  • 在日志服务分析语句(SQL 语句)中,需要使用单引号('')包裹代表字符串的字符,无符号包裹或被双引号("")包裹的字符为字段名或列名。例如'time' 代表字符串,time"time" 代表字段名或列名。
  • 当解析字符串为 JSON 类型失败时,将返回 NULL。
  • 如果采集时JSON 日志被截断,那么在使用 JSON 函数进行分析时,系统将报错且中止分析。针对该错误,您可以使用 TRY 表达式捕获异常信息,使得系统继续执行分析操作。例如* | SELECT message, TRY(JSON_PARSE(message))

函数名称

函数语法

说明

JSON_ARRAY_CONTAINS 函数

JSON_ARRAY_CONTAINS(KEY, value)

判断 JSON 数组中是否存在特定的元素。

JSON_ARRAY_GET 函数

JSON_ARRAY_GET(KEY, index)

根据指定的 JSON 下标提取对应的 JSON 元素。

JSON_ARRAY_LENGTH 函数

JSON_ARRAY_LENGTH(KEY)

计算 JSON 数组长度,即 JSON 元素数量。

JSON_EXTRACT 函数

json_EXTRACT(KEY, json_path)

从 JSON 对象或 JSON 数组中提取一组 JSON 值(数组或对象)。

JSON_EXTRACT_SCALAR 函数

JSON_EXTRACT_SCALAR(KEY, json_path)

从 JSON 形式的字符串中提取一组标量值(字符串、整数或布尔值)。

JSON_FORMAT 函数

JSON_FORMAT(KEY)

将 JSON 类型转化成字符串类型。

JSON_PARSE 函数

JSON_PARSE(KEY)

将 JSON 格式的字符串转化成 JSON 类型。

JSON_SIZE 函数

JSON_SIZE(KEY, json_path)

计算 JSON 对象或 JSON 数组中元素的数量。

JSON_ARRAY_CONTAINS 函数

JSON_ARRAY_CONTAINS 函数用于判断 JSON 数组中是否存在特定的元素。

函数语法

  • 语法格式

    JSON_ARRAY_CONTAINS(KEY, value)
    
  • 参数说明

    参数

    说明

    KEY

    日志字段、表达式,其值为 JSON 数组格式的字符串。

    value

    JSON 元素。

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

函数示例

  • 场景
    判断 JSON 数组[5, 10, 3]中是否包含 1。

  • 检索和分析语句

    * | SELECT JSON_ARRAY_CONTAINS('[5, 10, 3]', '1')
    
  • 检索和分析结果
    图片

JSON_ARRAY_GET 函数

JSON_ARRAY_GET 函数将根据指定的 JSON 下标提取对应的 JSON 元素。

函数语法

  • 语法说明

    JSON_ARRAY_GET(KEY, index)
    
  • 参数说明

    参数

    说明

    KEY

    日志字段、表达式,其值为 JSON 数组格式的字符串。

    index

    JSON 下标,从 0 开始。

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

函数示例

  • 场景
    返回 JSON 数组["mon", [0, 8], "ten"]中下标为 2 的元素。

  • 检索和分析语句

    * | SELECT JSON_ARRAY_GET('["mon", [0, 8], "ten"]', 2)
    
  • 检索和分析结果
    图片

JSON_ARRAY_LENGTH 函数

JSON_ARRAY_LENGTH 函数用于计算 JSON 数组长度,即 JSON 元素数量。

函数语法

  • 语法格式

    JSON_ARRAY_LENGTH(KEY)
    
  • 参数说明

    参数

    说明

    KEY

    日志字段、表达式,其值为 JSON 数组格式的字符串。

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

函数示例

  • 场景
    计算json_test02字段值中 JSON 元素的数量。

  • 日志样例

  • 检索和分析语句

    * | SELECT JSON_ARRAY_LENGTH(json_test02)
    
  • 检索和分析结果

JSON_EXTRACT 函数

JSON_EXTRACT 函数用于从 JSON 对象或 JSON 数组中提取一组 JSON 值(数组或对象)。

说明

如果分析非法的 JSON 类型,JSON_EXTRACT 函数将报错,建议您使用 JSON_EXTRACT_SCALAR 函数。

函数语法

  • 函数格式

    JSON_EXTRACT(x, json_path)
    
  • 参数说明

    参数

    说明

    x

    参数值为 JSON 对象或 JSON 数组。

    json_path

    JSON 路径,格式为$.store.book[0].title

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

函数示例

  • 场景
    获取 JSON 类型字符串 '[{"SIZE":100},{"STATUS":200}]' 中 SIZE 字段的值。

  • 检索和分析语句

    * | SELECT JSON_EXTRACT('[{"SIZE":100},{"STATUS":200}}]', '$.0.SIZE')
    
  • 检索和分析结果
    图片

JSON_EXTRACT_SCALAR 函数

JSON_EXTRACT_SCALAR 函数用于从 JSON 形式的字符串中提取一组标量值(字符串、整数或布尔值)。

函数语法

  • 语法格式

    JSON_EXTRACT_SCALAR(json_string, json_path)
    
  • 参数说明

    参数

    说明

    json_string

    参数值为 JSON 对象或 JSON 数组形式的字符串。

    json_path

    JSON 路径,格式为 $.store.book[0].title

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

函数示例

  • 场景
    从 JSON 形式的字符串 [{"SIZE":100},{"STATUS":200}] 中获取 STATUS 字段的值。

  • 检索和分析语句

    *|SELECT JSON_EXTRACT_SCALAR('[{"SIZE":100},{"STATUS":200}]','$.1.STATUS')
    
  • 检索和分析结果
    图片

JSON_FORMAT 函数

JSON_FORMAT 函数用于将 JSON 类型转化成字符串类型。

函数语法

  • 语法格式

    JSON_FORMAT(x)
    
  • 参数说明

    参数

    说明

    x

    参数值为 JSON 类型。

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

函数示例

  • 场景
    将 JSON 数组 [100,200,300] 转换为字符串 [100, 200, 300]

  • 检索和分析语句

    * | SELECT JSON_FORMAT(JSON_PARSE('[100, 200, 300]'))
    
  • 检索和分析结果
    图片

JSON_PARSE 函数

JSON_PARSE 函数只用于将 JSON 格式的字符串转化成 JSON 类型。一般情况下,JSON_PARSE 函数使用意义不大,如果您需要从 JSON 中提取值,建议使用JSON_EXTRACT_SCALAR函数。

函数语法

  • 语法格式

    JSON_PARSE(x)
    
  • 参数说明

    参数

    说明

    x

    值为 JSON 格式的字符串。

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

函数示例

  • 场景
    提取 JSON 形式的字符串 {"SIZE":100,"STATUS":200} 中的各个子字段。

  • 检索和分析语句

    *| SELECT MAP_KEYS(TRY_CAST(JSON_PARSE('{"SIZE":100,"STATUS":200}') AS MAP(varchar, json)))
    
  • 检索和分析结果
    图片

JSON_SIZE 函数

JSON_SIZE 函数用于计算 JSON 对象或 JSON 数组中元素的数量。

函数语法

  • 语法格式

    JSON_SIZE(x, json_path)
    
  • 参数说明

    参数

    说明

    x

    参数值为 JSON 对象或 JSON 数组形式的字符串。

    json_path

    JSON 路径,格式为 $.store.book[0].title

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

函数示例

  • 场景
    返回 JSON 形式的字符串 [{"SIZE":100,"STATUS":200,"LEN":1}] 中元素的数量。

  • 检索和分析语句

    * | SELECT JSON_SIZE('[{"SIZE":100,"STATUS":200,"LEN":1}]', '$.0.LEN')
    
  • 检索和分析结果
    图片