在Talend中透视数据

时间:2017-08-31 10:07:31

标签: talend

我有一些数据需要在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中寻找了一些第三方组件,但找不到任何有用的东西。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

假设您的指标已修复,您可以将其名称用作输出列。执行数据透视的解决方案有两个部分:首先,tMap将每个输入行in的值转换为输出行out中的相应列,其次是tAggregate根据品牌名称对地图的输出行进行分组。

对于tMap,您必须像这样有条件地填充列,例如输出colum名为“abc”: out.abc = "abc".equals(in.metric)?in.value:null

tAggregate中,您必须按out.brandname进行分组,并将每列聚合为忽略空值的总和。