-
Notifications
You must be signed in to change notification settings - Fork 262
[mapreplace]Transformer
Sun Jianbo edited this page Jun 1, 2018
·
1 revision
mapreplace 是一个基于映射关系的整体替换。
如对于数据有一套映射关系,希望将某个字段(假设为field1)中,所有值为 "123" 的数据映射(替换)为 "abc", 将值为 "234" 的数据映射(替换)为 "xyz"
此时我们可以定义一个 maprepalce 来实现这样的需求,配置如下:
{
"type":"mapreplace",
"key":"field1",
"map":"123 abc, 234 xyz",
"map_file":""
}
如果字段较多,也可以通过文件的形式,在 map_file 字段填写文件路径。
如我们编写一个文件 data.json,文件内容如下:
{
"123":"abc",
"234":"xyz"
}
注意到文件需要符合 json 格式,且 key 和 value 的类型均为 string 。
然后将配置修改如下即可:
{
"type":"mapreplace",
"key":"field1",
"map":"",
"map_file":"data.json"
}
-
key字段支持多级嵌套,多级间用.符号连接,如abc.xyz,表示 data["abc"]["xyz"]中的数据。 -
map字段表示变化的方式,新旧字符串中间用空格隔开,多个用英文逗号(,)分隔。 -
map_file字段表示文件路径,文件需要符合json格式,且json的 key 和 value 的类型均为 string
一份带有mapreplace Transformer的完整配置类似如下:
{
"name":"test2.csv",
"reader":{
"log_path":"./tests/logdir",
"mode":"dir"
},
"parser":{
"name":"jsonps",
"type":"json"
},
"transforms":[{
"type":"mapreplace",
"key":"field1",
"map":"123 abc, 234 xyz",
"map_file":""
}],
"senders":[{
"name":"file_sender",
"sender_type":"file",
"file_send_path":"./test2/test2_csv_file.txt"
}]
}
快速开始 | Pandora | Readers | Parsers | Senders | Download | 七牛智能日志管理平台 | logkit-pro专业版