如何解决Pentaho - 将两列转换成一个表,第一列作为列名,第二列作为值
我是 pentaho 的新手。 我对 influx db 进行了 rest 调用,结果是 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多个,手写是不可能的,可能会变,需要动态解决)
谢谢
解决方法
根据数据量,这可能会很快耗尽内存,因此您可能需要将过程拆分为不同的转换,使用每个转换中的数据生成临时文件或表以供下一个转换,但实现它的一种方法是:
首先,您需要使用 Split field to rows 步骤两次,将一个传入行转换为包含列和值的 n 行。使用检查生成用于拆分列和值的 rownum,并在添加过滤器后生成 rownum_for_column = rownum_for_value。您还需要清理括号和 " 附件以及可能的其他字段,而无需知道您的数据,我只能猜测。这将使用 NAME_COLUMN_N VALUE_N 对为输出中的输入 n 行中的每一行生成。
在您的 Pentaho Data Integration 安装的示例目录中,您有一个关于如何使用 Row denormaliser 步骤的示例(示例中的转换名称是 Denormaliser 2 系列键值对 )。该步骤将允许您将行转换为该类型的信息。
现在,有如此多的列要非规范化,您需要将元数据注入包含该信息的行非规范化器步骤,您需要进行转换以提取 name_column_1、name_column_2、...的列表,然后注入该信息使用 Row 非规范化器步骤转换的信息。查看 Pentaho 官方文档,了解如何使用元数据注入(并查看示例以了解元数据注入的工作原理)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。