云日志服务 LTS-映射富化函数:dict_map

时间:2024-07-17 17:59:10

dict_map

与目标数据字典进行映射,根据输入的字段映射一个新字段。

  • 函数格式
    e_dict_map(data, field, output_field, case_insensitive=true, missing=None, mode="overwrite")
  • 参数说明

    参数名称

    数据类型

    是否必填

    说明

    data

    Dict

    目标数据字典。必须为标准的{key01:value01,key01:value02,...}格式,且必须是字符串。例如{"1": "TCP", "2": "UDP", "3": "HTTP", "*": "Unknown"}。

    field

    String或者String List

    一个字段名或者多个字段名的列表。多个字段时:

    • 依次对匹配到的值进行映射。
    • 如果匹配命中多条日志,且mode的取值为overwrite时,则最后一个会覆盖前面的结果。
    • 当没有匹配到任何字段,则使用missing参数的值作为匹配值。

    output_field

    String

    输出字段的名称。

    case_insensitive

    Boolean

    匹配时大小写是否不敏感。

    • true(默认值):不敏感。
    • false:敏感
    说明:

    如果字典中存在同一个关键字的不同大小写,且case_insensitive为true时,会优先选择大小写完全匹配的值。如果没有,则随机选择一个。

    missing

    String

    无匹配字段时,将该参数的取值赋给输出字段output_field。默认为None表示不做映射赋值操作。

    说明:

    如果字典中包含匹配星号(*),由于星号(*)的优先级高于missing,此时missing参数不生效。

    mode

    String

    字段的覆盖模式。默认为overwrite。

    取值为:fill,fill-auto,add,add-auto,overwrite,overwrite-auto

  • 返回结果

    返回附带新字段的日志。

  • 函数示例
    1. 示例1:根据测试数据中pro字段的值和目标数据字典,输出新字段protocol。
      • 测试数据
        {
         "data":  123,
         "pro":  1
        }
      • 加工规则
        e_dict_map(
            {"1": "TCP", "2": "UDP", "3": "HTTP", "6": "HTTPS", "*": "Unknown"},
            "pro",
            "protocol",
        )
      • 加工结果
        data:  123
        pro:  1
        protocol:  TCP
    2. 示例2:根据测试数据中status字段的值和目标数据字典,输出新字段message。
      • 测试数据(三条测试日志)
        {
          "status":[500]
        }
        {
          "status":[400]
        }
        {
          "status":[200]
        }
      • 加工规则
        e_dict_map({"400": "错误", "200": "正常", "*": "其他"}, "status", "message")
      • 加工结果
        status:  500
        message:  其他
        status:  400
        message:  错误
        status:  200
        message:  正常
  • 更多参考

    支持和其他函数组合使用。

support.huaweicloud.com/usermanual-lts/lts_07_0161.html