2017-08-31 149 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和彙總各列總和忽略空值。