繁体   English   中英

如何使用Pentaho Kettle(Spoon)将数据从“列,行,值”格式转换为仅CSV格式的值的行

[英]How to transform data from “Column,Row,Value” format to rows of the Values only in CSV format using Pentaho Kettle (Spoon)

我需要将“ Column,Row,Value”格式的CSV文件(请参见下面的“ INPUT”)转换为仅“值”的行-转换为“ Column”和“ Row”值(请参见“所需的输出如下)。

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

“ CSV文件输入”->“按行,列排序行”->“行非规范化器”->“文本文件输出”

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

也许这不是最好的方法。

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


输入(.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

所需的输出(.csv文件):

"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"

有用的输入,我们将不胜感激。

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

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


如果由于其他原因想要更改流的字段名称,则必须使用元数据注入步骤 这种解决方案不可避免地会很混乱并且容易出错。 最终,ETL流程应使用固定和定义的元数据来保持其健壮性。 但是幸运的是,通过横向思考可以轻松解决您的案件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM