如何将每个特定行值映射到Pentaho中的ID?

时间:2018-06-10 16:18:55

标签: pentaho pentaho-spoon pentaho-data-integration

我是Pentaho的新手,我目前遇到了将特定行值映射到ID的问题。

我有一个包含大约30列的数据文件,其中一列用于货币(美元,英镑,澳元等)。 主要目标是让用户选择最多8种(最少1种)货币并将它们映射到相应的ID 1-8。不在指定8中的所有其他货币将映射为ID为9。 最后一步是输出原始数据集以及ID。

我很确定我这样做比现在更难,但这就是我现在所拥有的。

我创建了一个工作,第一步是设置我的8种货币的变量,selectionOne - > AUD,selectionTwo - > GBP,...,selectionEight - > JPY。

然后我进行了转换以从文件中读取数据并使用复制行进行结果步骤。

之后我有第二个工作叫做 - 每个工作都是我的循环来检查行中的当前货币。 在这项工作中,我有两个转换,一个叫做 set-current ,一个叫做 map-currency

set-current只使用结果步骤中的get行(从第一次转换中获取数据)。然后,我使用set variable步骤将当前货币设置为货币字段中的值。这很好,因为循环中的每次传递都会将当前变量更改为正确的值。

地图货币是我遇到最多问题的地方。 目标是使用过滤器行步骤将当前货币与原始的8种选定货币进行比较,然后使用值映射器步骤将其映射到ID,然后再输出csv文件。

这里的主要问题是我不能在过滤器或值映射器中使用我的原始变量。 所以,我在这里所做的是使用get variables步骤来检索变量并命名它们:一,二,三,......,八。这允许我绕过过滤问题,但它们似乎不适用于值映射器,这是非常重要的一步。

第二个问题是,当输出文件时,它只输出一个值(因为循环),选择附加选项有效,但如果作业多次运行,这可能是个问题。 但是,这里的优先级是映射问题。

我知道这很长,也许有点令人困惑,但我会非常感谢任何帮助,即使这是一种全新的方法。

就像我说的那样,我可能会让它变得比它应该更难。

感谢您的时间。

编辑AlainD

Input example

Output example

1 个答案:

答案 0 :(得分:0)

使用Stream Lookup步骤进行单次转换时,这应该是可行的。

stream lookup step diagram

文本文件输入是您的主文件,属性输入将您的属性文件读入Key和Value列。您可以使用包含两列而不是属性输入的普通文本文件。

以下是Stream查找的设置。注意默认值" 9"对于在查找流中找不到的记录。

Stream lookup step configuration