我有一些数据需要在Talend中进行转移。这是一个示例:
brandname,metric,value
A,xyz,2
B,xyz,2
A,abc,3
C,def,1
C,ghi,6
A,ghi,1
现在我需要将这些数据转换为公制列,如下所示:
brandname,abc,def,ghi,xyz
A,3,null,1,2
B,null,null,null,2
C,null,1,6,null
目前我正在使用tPivotToColumnsDelimited将数据转移到文件并从该文件读回。然而,必须将数据存储在外部文件上并回读是混乱和不必要的开销。
有没有办法在没有写入外部文件的情况下使用Talend执行此操作?我尝试使用tDenormalize但据我所知,它会将行返回为1列,这不是我需要的。我还在TalendExchange中寻找了一些第三方组件,但找不到任何有用的东西。
感谢您的帮助。
答案 0 :(得分:0)
假设您的指标已修复,您可以将其名称用作输出列。执行数据透视的解决方案有两个部分:首先,tMap
将每个输入行in
的值转换为输出行out
中的相应列,其次是tAggregate
根据品牌名称对地图的输出行进行分组。
对于tMap,您必须像这样有条件地填充列,例如输出colum名为“abc”:
out.abc = "abc".equals(in.metric)?in.value:null
在tAggregate
中,您必须按out.brandname
进行分组,并将每列聚合为忽略空值的总和。