云日志服务 LTS-映射富化函数:e_search_table_map
e_search_table_map
对某列(查询字符串)以及其匹配的值的表格数据进行映射。
- 函数格式
e_search_table_map(data, inpt, output_fields, multi_match=false, multi_join=" ", missing=None, mode="fill-auto")
- 参数说明
参数名称
数据类型
是否必填
说明
data
Table
是
映射关系的表格,表格某一列必须是查询字符串。
inpt
String
是
表格中用于匹配搜索的字段名。
output_fields
String,String List或Tuple List
是
表格中映射出的字段,可以是字符串、列表或者其名称映射元组的列表。
multi_match
Boolean
否
是否允许匹配多个字段。默认为false表示不匹配多个字段,会返回匹配到的第一个字段值。支持使用multi_join来拼接多个匹配的值。
multi_join
String
否
匹配多个字段时,多值的连接字符串,默认为空格。当multi_match值为true时生效。
missing
String
否
无匹配字段时,将该参数的取值赋给输出字段output_fields。默认为None表示不做映射赋值操作。
说明:如果表格中包含默认匹配*,由于*的优先级高于missing,此时missing将不起作用。
mode
String
否
字段的覆盖模式。默认为fill-auto。
- 返回结果
返回查询匹配中后的映射结果。
- 函数示例
- 示例1:根据映射关系的表格,将日志中city字段映射出pop和province字段。
- 测试数据
{ "data": 123, "city": "sh" }
例如,以下映射关系的表格,其中search列是查询字符串。
search
pop
province
city==nj
800
js
city==sh
2000
sh
- 加工规则
e_search_table_map( tab_parse_csv("search,pop,province\ncity==nj,800,js\ncity==sh,2000,sh"), "search", ["pop", "province"], )
- 加工结果
data: 123 city: sh province: sh pop: 2000
- 测试数据
- 示例2:overwrite模式。
- 测试数据
{ "data": 123, "city": "nj", "province":"" }
- 加工规则
e_search_table_map( tab_parse_csv("search,pop,province\ncity==nj,800,js\ncity==sh,2000,sh"), "search", "province", mode="overwrite", )
- 加工结果
pop: 800 data: 123 city: nj province: js
- 测试数据
- 示例3:无匹配时目标字段的值由missing指定。
- 测试数据
{ "data": 123, "city": "wh", "province":"" }
- 加工规则
e_search_table_map( tab_parse_csv("search,pop,province\ncity==nj,800,\ncity==sh,2000,sh"), "search", "province", missing="Unknown", )
- 加工结果
data: 123 city: wh province: Unknown
- 测试数据
- 示例4:允许匹配多个字段(multi_match模式)。
- 测试数据
{ "data": 123, "city": "nj,sh", "province":"" }
- 加工规则
e_search_table_map( tab_parse_csv("search,pop,province\ncity:nj,800,js\ncity:sh,2000,sh"), "search", "province", multi_match=true, multi_join=",", )
- 加工结果
data: 123 city: nj,sh province: js,sh
- 测试数据
- 示例1:根据映射关系的表格,将日志中city字段映射出pop和province字段。