修改字段类型_字段选择步骤详解

字段选择步骤是Kettle转换优化的重要手段。Kettle转换就像一个数据处理的流水线,每个工人都是先从上一步骤拿一个工件,处理后将工件发给下一个工位上的工人。按照这个类比,工位就是步骤,工件就是行,而行又是由列(又称为字段)组成的。由于Kettle自身并不清楚列在后续的哪一个步骤被用到,为保险起见,一般转换步骤都只会增加列而不会减少列,也不会轻易改变列的名称与类型等元数据信息。如果列只能增加不能减少,那么进程消耗内存过大,转换将执行得越来越慢;如果列不能修改元数据,那么针对后续处理步骤,灵活性不够。所以,Kettle提供了字段选择步骤,通过选择控制需要列、移除设置删除列、元数据控制类型改变。如果三个部分有重复或者不一致结果如何?例如输入行集有六列,列名为C1-C6。在字段选择步骤中:选择和修改配置了C1、C2、C3三列;移除配置了C3、C4两列;元数据配置了C3、C4、C5三列。结果到底会输出哪些列?( 卖个关子,请读者自行实践) 。所以,要回答三者的结合问题,必须搞清楚执行机理。Kettle按照如下顺序来决定输出列:
  1. 设定一个全空的列集合,设为cs

  2. 将所有选择和修改的列按照用户指定顺序(图1控件2)加入到cs

  3. 如果选择了包含未指定的列(图1控件5),那么将输入行集中不在cs中的所有列按照名称排序后加入cs

  4. 将移除中指定的所有列(图1控件3)从cs中删除。如果找不到,则抛出异常

  5. 将元数据中指定所有列(图1控件4),从cs中读取并修改。如果找不到,则抛出异常

步骤配置信息如图1所示。

6ecb064bb6a5a447cb907538c6cb8d95.png

图1 字段选择步骤第一个配置页

以下详细解释各配置项的含义:

1、转换步骤名称:步骤的名称,在单一转换中,名称必需唯一。

2、选择和修改:指定需要保留到输出流中的字段的顺序和名称。支持修改字段名字以及长度和精度。右侧获取选择的字段按钮可以从输入行集中得到所有字段名称。列映射按钮可以从输入和输出行集建立映射关系,每一个映射将转成一行字段改名信息。由于此功能只支持输出步骤唯一,且步骤必须实现查询必备字段集合的接口,导致列映射功能用处甚微(从源码查询,实现该接口的步骤只有表输出、Access输出、XML输出、插入与更新等少量组件)。

3、移除:指定从输出流中删除的字段。

4、元数据:修改字段类型信息,每行针对一个字段。表格中各列解释如下:

  • 字段名称:输入行集的字段名称

  • 改名成:输出行集的新字段名称

  • 类型:新的字段类型。下拉选择。

  • 长度:新的字段长度,自然数。

  • 精度:新的字段精度,自然数。一般用于Number/BigNumber类型,可以理解为小数点后精确几位。

  • Binary to Normal?:是否采用二进制存取文本。如果是,则读取存入性能较高。否则,正常按照类型存储。

  • 格式:格式化字符串时需要。例如需要格式化日期与时间,那么可以用yyyy-MM-dd'T'HH:mm:ss.XXX,注意其中单引号限定部分。如果需要在日期格式中使用原始字母,那么必须用单引号限定,否则将当成表达式解析。如果是数字类型,可以用#.#或者0.00等格式,区别在于#不会填充位数,0则严格按照格式填充。

  • Date format Lenient?:在解析日期异常数据时是否支持宽容模式。例如碰到15月,如果启用宽容模式,那么15月会当成15-12=3月。

  • DateLocale:时区。一般包括语言和国家,例如中文与中国,则选择zh_CN。

  • DateTimeZone:时区。用在日期类型的字段,一般包含洲和城市,例如我国常用Asia/Shanghai。

  • Lenient number conversion?:字符串转数字是否启用宽容模式。如果启用,那么字符串中的数字尽量识别,直到遇到非数字字符为止。

  • Encoding:字符串编码。设置错误将导致乱码。

  • 十进制:这里应属于翻译错误,翻译为“小数点符号”更为合适。默认情况下小数与整数部分用.分割,如果需要设置为其他符号,可以设置这个字段。注意不管设置多长的字符串,这里始终只取第一个字符作为小数点符号。

  • 分组:分组符号,也称千位分隔符。老外的习惯,一般按照千、百万、十亿这样每三位数字一组,组之间用逗号分割。这里就是设置组之间的分隔符。

  • 货币:货币符号,主要用在财务场景,一般放在货币金额数字的前缀或者后缀。例如人民币一般用的¥,美元一般用$,欧元一般用€。但测试下来,并没有看到设置后的效果,暂时认定为BUG。

内部供稿 CCSAII037

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值