云日志服务 LTS-字段值提取函数:e_kv_delimit

时间:2024-09-11 10:44:56

e_kv_delimit

通过分隔符提取源字段中的键值对信息。

  • 函数格式
    e_kv_delimit(源字段或源字段列表, pair_sep=r"\s", kv_sep="=", prefix="", suffix="", mode="fill-auto")
  • 参数说明

    参数名称

    参数类型

    是否必填

    说明

    源字段或源字段列表

    字符串或字符串列表

    字段名或多个字段名的列表。

    pair_sep

    String

    用于分隔键值对的正则字符集,默认为\s。例如\s\w、abc\s等。

    说明 如果您需要使用字符串对字段进行分隔,推荐您使用str_replace或regex_replace将字符串转换成字符作为分隔符,然后再使用e_kv_delimit函数对字段进行分隔。

    kv_sep

    String

    用于分隔键值对的正则字符串,默认为=,不限于单个字符。

    说明:

    可以使用非捕获分组,但不能使用捕获分组。

    prefix

    String

    给提取的字段名添加前缀。

    suffix

    String

    给提取的字段名添加后缀。

    mode

    String

    字段的覆盖模式。默认为fill-auto。

  • 返回结果

    返回附带新字段值的日志。

  • 函数示例
    1. 示例1:使用默认分隔符=提取键值对信息。
      • 测试数据
        {
         "data": "i=c1 k1=v1 k2=v2 k3=v3"
        }

        如果测试数据为request_uri: a1=1&a2=&a3=3,a2值为空,则使用e_kv_delimit()函数无法提取出a2。您可以使用e_regex()函数进行提取,例如e_regex("request_uri",r'(\w+)=([^=&]*)',{r"\1":r"\2"}, mode="overwrite")。

      • 加工规则
        e_kv_delimit("data")
      • 加工结果
        data: i=c1 k1=v1 k2=v2 k3=v3 
        i: c1 
        k2: v2 
        k1: v1 
        k3: v3
    2. 示例2:使用分隔符&?提取键值对信息。
      • 测试数据
        {
         "data": "k1=v1&k2=v2?k3=v3"
        }
      • 加工规则
        e_kv_delimit("data",pair_sep=r"&?")
      • 加工结果
        data: k1=v1&k2=v2?k3=v3
        k2: v2 
        k1: v1 
        k3: v3
    3. 示例3:使用正则表达式提取键值对信息。
      • 测试数据
        {
         "data": "k1=v1 k2:v2 k3=v3"
        }
      • 加工规则
        e_kv_delimit("data", kv_sep=r"(?:=|:)")
      • 加工结果
        data: k1=v1 k2:v2 k3=v3 
        k2: v2 
        k1: v1 
        k3: v3
support.huaweicloud.com/usermanual-lts/lts_07_0162.html