Pentaho将字符串转换为带小数点的整数

时间:2015-03-06 16:50:43

标签: string format pentaho mask kettle

我使用固定宽度输入步骤将文本值导入转换。一切都以字符串形式出现。我想将一些字符串值转换为在指定位置具有小数点的整数。以下是之前(左侧)和预期结果(右侧)的一些示例:

00289 --> 0028.9
01109 --> 0110.9
003201 --> 0032.01

我在“选择值”步骤(元数据选项卡)中尝试了多种格式蒙版组合,但我无法获取我正在寻找的值。

你能否告诉我我可以尝试哪种组合*这些字段的类型/长度/精度/格式/编码/十进制/组*属性以获得所需的输出?

1 个答案:

答案 0 :(得分:1)

你有没有尝试过另一个步骤达到你的目标?您可以尝试使用例如User Defined Java Expression以这种方式设置:

  • Java表达式: new java.math.BigDecimal(text.substring(0,4) + "." + text.substring(4,text.length()))
  • 值类型: BigNumber

但这会将您的输入转换为:

00289 --> 28.9
01109 --> 110.9
003201 --> 32.01

因为其输出为BigNumber格式。 BigNumberNumber格式可用于十进制数字。您不能将Integer用于小数,因为它没有小数部分。

如果您希望String输出省略上述表达式中的new java.math.BigDecimal()部分,请将值类型设置为String。它将产生这些结果:

00289 --> 0028.9
01109 --> 0110.9
003201 --> 0032.01

这是一个建议。当然,还有另外一种方法可以达到目标。