【问题标题】:Pentaho - transform two columns into a table with the first column as column name and the second as valuesPentaho - 将两列转换为表,第一列作为列名,第二列作为值
【发布时间】:2021-05-19 02:01:27
【问题描述】:

我是 pentaho 的新手。 我已经对流入数据库进行了休息调用,从而产生了 json 响应。 从这个响应中,我分离出两个字段:列和值。

例如:

列 = [“name_column_1”,”name_column_2”,...,”name_column_n”]

值 = [[“value_column_1_1”,”value_column_2_1”,...,”value_column_n_1”], [“value_column_1_2”,”value_column_2_2”,...,”value_column_n_2”],..,]

如何将其转换为表格,其中列名将值转换为“列”,并使用相应的值将值转换为“值”?

(列名超过500,无法手写,可能会更改,所以我需要一个动态解决方案)

谢谢

【问题讨论】:

    标签: etl pentaho influxdb business-intelligence pentaho-data-integration


    【解决方案1】:

    根据数据量,这可能会很快耗尽内存,因此您可能需要将流程拆分为不同的转换,生成临时文件或表,其中包含每次转换的数据用于下一个转换,但实现它的一种方法是:

    首先,您需要使用步骤将字段拆分为行两次,将传入的行转换为具有列和值的 n 行。使用检查生成用于拆分列和值的rownum,并在添加过滤器后使rownum_for_column = rownum_for_value。您还需要清理括号和 " 附件,可能还有其他字段,而我只能猜测您不知道您的数据。这将为您的输入中的每一行生成 n 行的输出,并带有 NAME_COLUMN_N VALUE_N 对。

    在 Pentaho 数据集成安装的示例目录中,您有一个如何使用 Row denormaliser 步骤的示例(示例中的转换名称是 Denormaliser 2 系列键值对 )。该步骤将允许您将行转换为该类型的信息。

    现在,有这么多列要反规范化,您需要使用该信息将元数据注入到 Row denormaliser 步骤中,您需要进行转换来提取 name_column_1、name_column_2、...的列表,然后将其注入使用您的 Row 非规范化步骤进行转换的信息。查看 Pentaho 官方文档以了解如何使用元数据注入(并查看示例以获取有关元数据注入如何工作的示例)。

    【讨论】:

      猜你喜欢
      • 2020-03-08
      • 2018-11-20
      • 2017-07-04
      • 2015-06-13
      • 2020-10-03
      • 2016-09-01
      相关资源
      最近更新 更多