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
格式。 BigNumber
或 Number
格式可用于十进制数。您不能使用 Integer
作为小数,因为它没有小数部分。
如果您想要 String
输出,请省略上面表达式中的 new java.math.BigDecimal()
部分并将值类型设置为 String
。它将产生这些结果:
00289 --> 0028.9
01109 --> 0110.9
003201 --> 0032.01
这是一个建议。当然还有其他方法可以达到你的目标。
我正在使用固定宽度输入步骤将文本值导入到转换中。一切都以字符串的形式出现。我想将一些字符串值转换为在指定位置带有小数点的整数。以下是之前(左侧)和预期结果(右侧)的一些示例:
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
格式。 BigNumber
或 Number
格式可用于十进制数。您不能使用 Integer
作为小数,因为它没有小数部分。
如果您想要 String
输出,请省略上面表达式中的 new java.math.BigDecimal()
部分并将值类型设置为 String
。它将产生这些结果:
00289 --> 0028.9
01109 --> 0110.9
003201 --> 0032.01
这是一个建议。当然还有其他方法可以达到你的目标。