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

Pentaho convert string to integer with decimal point

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

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

我在 Select 值步骤(元数据选项卡)中尝试了格式掩码的多种组合,但我无法获得我正在寻找的值。

谁能告诉我我可以为这些字段的* Type/Length/Precision/Format/Encoding/Decimal/Group* 属性尝试什么组合以获得所需的输出?

您是否尝试过进一步的步骤来达到您的目标?您可以尝试使用例如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

这是一个建议。当然还有其他方法可以达到你的目标。