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 官方文档,了解如何使用元数据注入(并查看示例以了解元数据注入的工作原理)。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...