2017-08-31 96 views
1

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

谢谢你的帮助。

+0

确切的说,但是不是一个枢轴的定义?您将行转换为列,并将与这些行关联的值相应地分配。 – Alex

回答

0

假设您的指标是固定的,您可以将它们的名称用作输出的列。主要解决方案有两个部分:第一个是tMap,它将每个输入行in的值转换为输出行out中的相应列,第二个根据品牌名将地图的输出行分组。

对于TMAP你必须有条件的栏这样的,例如输出科拉姆名为“abc”: out.abc = "abc".equals(in.metric)?in.value:null

tAggregate你必须按out.brandname和汇总各列总和忽略空值。