将数千行转换为Pentaho中的列

时间:2019-08-20 09:38:11

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

我有数据集:

enter image description here

我需要的是在一个字段中包含每个concat组的所有帐户,并用逗号分隔。我能够用去规范化器然后再使用一些正则表达式来实现。如果您有几个帐户,那很好,但是现在我的情况是拥有超过1万个帐户。我该如何实现?

enter image description here

1 个答案:

答案 0 :(得分:1)

据我所知,行反规范化器以及字段连接步骤(将实现此任务的第二个目标)都不允许使用动态字段名称。因此,在非规范化和串联中处理大量可能值的一种非正统的解决方案就是简单地全部指定它们。例如,反规范化步骤中的字段定义为

<field>
    <field_name/>
    <key_value/>
    <target_name>field_1</target_name>
    <target_type>None</target_type>
    <target_format/>
    <target_length>-1</target_length>
    <target_precision>-1</target_precision>
    <target_decimal_symbol/>
    <target_grouping_symbol/>
    <target_currency_symbol/>
    <target_null_string/>
    <target_aggregation_type>-</target_aggregation_type>
</field>

因此,您可以编写一个脚本来打印所有字段的模板,并将其插入到转换XML中<fields>标记的位置。

注意:这不适合生产。如果您需要一次或两次执行某项任务以导入一些数据,这是一种解决方案。我不想处理部署了它的ETL流程。适当的解决方案可能涉及自定义步骤或外部脚本。我将很高兴被证明是错误的。