Skip to content

[convert]Transformer

Sun Jianbo edited this page Oct 10, 2017 · 4 revisions

数据转换的Transformer

可以在Parser后使用,针对dsl指定的字段和类型做数据格式转换。

配置如下:

{
		"type":"convert",
		"dsl":"field1 string"
}

该功能可以将指定dsl将数据进行格式转换。dsl中可以包含多个数据字段和类型。dsl的语法与Pandora sender中创建repo的dsl语法相同。

  • dsl 指定要进行数据转换的dsl。

DSL语法

DSL规则为<字段名称> <类型>,字段名称和类型用空格符隔开,不同字段用逗号隔开。若字段必填,可以转换的类型包括:

  • long类型(int64): long,LONG,l,L
  • float类型(float64): float,FLOAT,F,f
  • string类型: string,STRING,S,s
  • bool类型: bool,BOOL,B,b,boolean
  • array类型: array,ARRAY,A,a;括号中跟具体array元素的类型,如a(l),表示array里面都是long。同时,也可以省略小括号前的array类型申明,直接写(l),表示 array 类型,里面的元素是long
  • map类型: map,MAP,M,m;使用花括号表示具体类型,表达map里面的元素,如map{a l,b map{c b,x s}}, 表示map结构体里包含a字段,类型是longb字段又是一个map,里面包含c字段,类型是bool,还包含x字段,类型是string。同时,也可以省略花括号前面的map类型,直接写{s l},表示map类型,里面的元素slong类型。

配置

一份带有convert Transformer的完整配置类似如下:

实例的配置会将字段切割,并利用convert Transformer转化为整数。

{
		"name":"test2.csv",
		"reader":{
			"log_path":"./tests/logdir",
			"mode":"dir"
		},
		"parser":{
			"name":"jsonps",
			"type":"json"
		},
		"transforms":[{
			"type":"split",
			"key":"status",
			"sep":",",
			"newfield":"newarray"
		},{
			"type":"convert",
			"dsl":"newarray array(long)"
		}],
		"senders":[{
			"name":"file_sender",
			"sender_type":"file",
			"file_send_path":"./test2/test2_csv_file.txt"
		}]
	}
Clone this wiki locally