2017-01-10 30 views
1

我想實現Informatica的一個着名場景。我有一個這樣的源文件: -按組計數分隔行 - TALEND

EMPNO,EMPNAME,DEPTNO 
10,A,1 
11,B,2 
12,C,3 
13,D,4 
14,E,1 
15,F,1 
16,G,2 
17,H,3 
18,I,4 
19,J,2 
20,K,3 
21,L,1 
22,M,2 

現在我想在DEPTNO Column.eg發生離析:

  • 如果任何DEPTNO> 3就會去目標的出現次數。對於這種情況DEPTNO 1 & 2發生4次,所以他們會去2個目標表。

tMemorizerow組件的使用在這裏嗎?

我試過使用tmap組件,但找不到DEPT NO。是否有可能使用tjavaflex組件編寫java代碼? 在tfileinputdedefined之後,我可以將輸入流隔離到第一個tmap中的4個部分。然後我採取4 taggregaterow。

回答

1

您可以使用taggregaterow 使用此組件,您可以在SQL中執行等同於GROUP BY的操作。 你可以通過組來做更多的操作。 您使用內

計數功能,爲了過濾DEPTNO你TMAP

例需要一個過濾器: enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

而且也有對taggregaterow組件的一些信息: Here

+0

嗨西奧它是有用的。但你可以用我的源文件嗎? – Abhijit

+0

Theo,還有一件事。爲什麼你在這裏使用tfixedflowinput?我在Talend中是非常新的,它可以通過tfileinputdefault完成嗎? – Abhijit

+0

我使用固定輸入un order來創建數據集以進行測試,您需要用數據替換它們。所以是的,你需要讓你的輸入無效 –

0

你可以使用一個tAggregateRow和tFilterRow爲了通過聚合DEPTNO源文件,然後過濾得到只DEPNTO流與OCCURENCES的NB> 3. 然後你再次讀取源文件,並加入帶有tMap的流(內部連接)。

成分的草案使用方法:

A draft of components to use

你也可以簡化與THASH部件的工作,以讀取源只有一次。

+0

Corentin你是如何找到出現次數的多少? – Abhijit

+1

抱歉,沒有看到@ThéoCapdet的答案,他有一個更詳細的答案,兩個答案都是一樣的。 – Corentin