Datax transform梳理
dx_substr
应用场景
针对字段的处理函数
参数
∙第一个参数:字段编号,对应record中第几个字段。
∙第二个参数:字段值的开始位置。
∙第三个参数:目标字段长度。
说明
从字符串的指定位置(包含)截取指定长度的字符串。如果开始位置非法抛出异常。如果字段为空值,直接返回(即不参与本transformer)
例子
"transformer": [
{
"name": "dx_substr",
"parameter":
{
"columnIndex":1,
"paras":["1","2"]
}
}
]
dx_substr(1,"2","5") column 1的value为“dataxTest”=>"taxTe"
dx_pad
应用场景
针对字段的处理函数
参数
∙第一个参数:字段编号,对应record中第几个字段。
∙第二个参数:"l","r", 指示是在头进行pad,还是尾进行pad。
∙第三个参数:目标字段长度。
∙第四个参数:需要pad的字符。
说明
如果源字符串长度小于目标字段长度,按照位置添加pad字符后返回。如果长于,直接截断(都截右边)。如果字段为空值,转换为空字符串进行pad,即最后的字符串全是需要pad的字符
例子
{
"name": "dx_pad",
"parameter":
{
"columnIndex":2,
"paras":["l","2","A"]
}
}
dx_pad(1,"l","4","A"), 如果column 1 的值为 xyz=> Axyz, 值为 xyzzzzz => xyzz
dx_replace
应用场景
针对字段处理函数
参数
∙第一个参数:字段编号,对应record中第几个字段。
∙第二个参数:字段值的开始位置。
∙第三个参数:需要替换的字段长度。
∙第四个参数:需要替换的字符串。
说明
从字符串的指定位置(包含)替换指定长度的字符串。如果开始位置非法抛出异常。如果字段为空值,直接返回(即不参与本transformer)
例子
dx_replace(1,"2","4","****") column 1的value为“dataxTest”=>"da****est"
dx_filter
应用场景
针对字段的函数
参数
∙第一个参数:字段编号,对应record中第几个字段。
∙第二个参数:运算符,支持一下运算符:like, not like, >, =, <, >=, !=, <=
∙第三个参数:正则表达式(java正则表达式)、值。
说明
∙如果匹配正则表达式,返回Null,表示过滤该行。不匹配表达式时,表示保留该行。(注意是该行)。对于>=<都是对字段直接compare的结果.
∙like , not like是将字段转换成String,然后和目标正则表达式进行全匹配。, =, <, >=, !=, <= 对于DoubleColumn比较double值,对于LongColumn和DateColumn比较long值,其他StringColumn,BooleanColumn以及ByteColumn均比较的是StringColumn值。
∙如果目标colunn为空(null),对于 = null的过滤条件,将满足条件,被过滤。!=null的过滤条件,null不满足过滤条件,不被过滤。 like,字段为null不满足条件,不被过滤,和not like,字段为null满足条件,被过滤。
例子
{
"name": "dx_filter",
"parameter":
{
"columnIndex":5,
"paras":["like",".*启动成功.*"]
}
}
dx_filter(1,"like","dataTest")
dx_groovy
应用场景
应用在整行数据,只允许使用一次
参数
∙第一个参数: groovy code
∙第二个参数(列表或者为空):extraPackage
说明
dx_groovy只能调用一次。不能多次调用。
groovy code中支持java.lang, java.util的包,可直接引用的对象有record,以及element下的各种column(BoolColumn.class,BytesColumn.class,DateColumn.class,DoubleColumn.class,LongColumn.class,StringColumn.class)。不支持其他包,如果用户有需要用到其他包,可设置extraPackage,注意extraPackage不支持第三方jar包。
groovy code中,返回更新过的Record(比如record.setColumn(columnIndex, new StringColumn(newValue));),或者null。返回null表示过滤此行。
例子
{
"name": "dx_groovy",
"parameter": {
"code": "Column(7).getByteSize()!=0) {Column column = Column(7);def str = column.asString();def newStr = null;newStr = str + Column(6).asString();record.setColumn(7, new StringColumn(\"abd\")); };return record;",
"extraPackage": []
字符串截取第几行 }
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论