我需要转换“Column,Row,Value”格式的CSV文件中的文件(参见下面的“INPUT”) 仅限于值的行 - 根据“列”和“行”值的指示转换为位置 (参见下面的“期望的输出”)。
如您所见,每个Row 0 Value应该是一个列标题。 我使用序列创建了一些接近我需要的东西:
“CSV文件输入” - > “排序行”(按行,列) - > “行反规范化器” - > “文本文件输出”
但是,在“Row denormalizer”中,我使用Column作为键。 我需要键是动态的,并从第三列的值中获取 Row值为0的输入。
也许这不是最好的方法。
注意:文件的长度和列数会有所不同。
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"
非常感谢有用的输入。
答案 0 :(得分:0)
(据我了解你的问题,你知道如何将你的输入变成一个包含"所希望的输出"中所列数据的行流 - 只是相应的列名不是你的想。)
您只需要禁用"标题"的复选框关于"内容" "文本文件输出"的选项卡步。第一行是你的新标题。
如果您因某些其他原因需要更改流的字段名称,则必须使用meta data injection step。这种解决方案不可避免地会非常混乱并且容易出错。在一天结束时,ETL过程应该使用固定和定义的元数据来保持它们的健壮性。但是你的情况很容易通过横向思考来解决。