将数千行转置为 Pentaho 中的列

Transpose thousands rows to columns in Pentaho

我有数据集:

我需要的是将每个 concat 组的所有帐户都放在一个字段中,并用逗号分隔。我能够通过去规范化器和一些正则表达式来实现它。当你有几个账户时这很好,但现在我有超过 10K 个账户的情况。我怎样才能实现它?

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

<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 过程。正确的解决方案可能涉及自定义步骤或外部脚本。我很乐意在这一点上被证明是错误的。