如何将数据从;“列、行、值”;仅使用Pentaho水壶(勺子)以CSV格式格式化为值行

如何将数据从;“列、行、值”;仅使用Pentaho水壶(勺子)以CSV格式格式化为值行,csv,pentaho,etl,kettle,Csv,Pentaho,Etl,Kettle,我需要转换“列、行、值”格式的CSV文件(请参阅下面的“输入”) 仅对值行-转换为“列”和“行”值指定的位置 (参见下面的“所需输出”) 如您所见,每行0值都应该是一个列标题。 我已经使用序列创建了一些接近我需要的东西: “CSV文件输入”->“按行、列排序行”->“行反规范化程序”->“文本文件输出” 但是,在“行反规范化器”中,我使用列作为键。 我需要使键是动态的,并且从 行值为0的输入 也许这不是最好的办法 注意:文件的长度和列数会有所不同 输入(.csv文件): 所需输出(.csv文

我需要转换“列、行、值”格式的CSV文件(请参阅下面的“输入”) 仅对值行-转换为“列”和“行”值指定的位置 (参见下面的“所需输出”)

如您所见,每行0值都应该是一个列标题。 我已经使用序列创建了一些接近我需要的东西:

“CSV文件输入”->“按行、列排序行”->“行反规范化程序”->“文本文件输出”

但是,在“行反规范化器”中,我使用列作为键。 我需要使键是动态的,并且从 行值为0的输入

也许这不是最好的办法

注意:文件的长度和列数会有所不同


输入(.csv文件):
所需输出(.csv文件): 非常感谢有帮助的输入。

(据我所知,您知道如何将输入转换为包含“所需输出”中列出的数据的行流,只是相应的列名不是您想要的。)

您只需在“文本文件输出”步骤的“内容”选项卡上禁用“标题”复选框。第一行就是您的新标题



如果您出于其他原因想要更改流的字段名,则必须使用。此解决方案将不可避免地非常混乱且容易出错。在一天结束时,ETL过程应使用固定和定义的元数据以保持其健壮性。但幸运的是,您的情况很容易通过横向思考来解决。

这可能是一个问题通过trayal和Eroor方法进行rchival。我建议在字段名之间使用修改的step some where和con cat双引号。并且您必须获取文本文件输出,以便自动添加CSV。。
Column,Row,Value

0,0,Unique ID
0,1,84
0,2,f8
0,3,0d
0,4,ac
1,0,Property Code
1,1,cc040201
1,2,cc040202
1,3,cc040203
1,4,cc040204
2,0,Property Name
2,1,Stone Crest - 9635
2,2,Stone Crest - 9645
2,3,Stone Crest - 9655
2,4,Stone Crest - 9665
3,0,Address
3,1,9635 Granite Ridge
3,2,9645 Granite Ridge
3,3,9655 Granite Ridge
3,4,9665 Granite Ridge
"Unique ID","Property Code","Property Name","Address"
"84","cc040201","Stone Crest - 9635","9635 Granite Ridge"
"f8","cc040202","Stone Crest - 9645","9645 Granite Ridge"
"0d","cc040203","Stone Crest - 9655","9655 Granite Ridge"
"ac","cc040204","Stone Crest - 9665","9665 Granite Ridge"