我有一些数据需要在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中寻找了一些第三方组件,但是找不到任何有用的东西。
谢谢你的帮助。
发布于 2017-10-03 03:16:43
假设您的指标是固定的,您可以使用它们的名称作为输出的列。完成透视的解决方案有两个部分:第一个tMap将每个输入行in的值转置到输出行out中的相应列,第二个tAggregate根据品牌名对map的输出行进行分组。
对于列,您必须有条件地填充这些列,例如名为“abc”的输出列:out.abc = "abc".equals(in.metric)?in.value:null
在tAggregate中,您必须按out.brandname进行分组,并将每一列聚合为sum,而忽略空值。
https://stackoverflow.com/questions/45978766
复制相似问题