云日志服务 LTS-映射富化函数:e_dict_map
e_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:根据测试数据中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:根据测试数据中status字段的值和目标数据字典,输出新字段message。
- 测试数据(三条测试日志)
{ "status":"500" }
{ "status":"400" }
{ "status":"200" }
- 加工规则
e_dict_map({"400": "错误", "200": "正常", "*": "其他"}, "status", "message")
- 加工结果
status: 500 message: 其他
status: 400 message: 错误
status: 200 message: 正常
- 测试数据(三条测试日志)
- 示例1:根据测试数据中pro字段的值和目标数据字典,输出新字段protocol。
- 更多参考
支持和其他函数组合使用。