2016-08-07 47 views
1

如何在Talend中實現Row_number() over (partition by colname)以下數據?在talend中執行Row_number()(由colname分區)

Product_Category Product_Item 
100 A123 
200 B678 
200 B234 
100 A456 
200 B345 

這可以在tmap組件中完成嗎?

+0

你有什麼..如果它的數據庫中的數據的源,它將更容易得到這個row_number()在tDBXInput組件中完成.. – garpitmzn

+0

Source是一個文件ñ目的地也是一個文件 – user6673748

回答

2

您可以使用Numeric.sequence函數來完成此操作。

例如: tFixedFlowInput - > TMAP - > tLogRow

步驟。

  1. 的TMAP中,定義一個變量,如SEQ
  2. 變量應該是int類型
  3. 爲變量的公式將使用Numeric.sequence,與產品類別作爲序列標識符 離:
    Numeric.sequence(row1.product_category,1,1)
  4. 穿上TMAP的輸出序列,以及其他兩個源列
  5. 將輸出發送到別的東西,像一個tLogRow

使用您的樣本數據,這裏是輸出

.----------------+------------+---. 
|   tLogRow_1   | 
|=---------------+------------+--=| 
|product_category|product_item|seq| 
|=---------------+------------+--=| 
|100    |A123  |1 | 
|200    |B678  |1 | 
|200    |B234  |2 | 
|100    |A456  |2 | 
|200    |B345  |3 | 
'----------------+------------+---' 

https://help.talend.com/display/TalendDataIntegrationStudioUserGuide61EN/E.1+Numeric+Routines

+0

謝謝,這工作,但如果我需要在另一列的訂單工作將是可能的?例如,row_number()over(由col1按col2分區)直到現在我們剛剛實現了row_number()(由 – user6673748

+0

分區)此外,必須在日期列上完成順序以將記錄是最新的日期。 – user6673748

+0

你當然可以改變順序。如果您按產品項目進行排序,則在tMap之前,它仍然有效,您將得到稍微不同的序列號。例如:B234將得到seq 1. – dbh

0

這裏有,我申請的數字序列輸入..加入我的輸出,只是有一個序列行的一個問題結果搞砸了

我希望我的行號從2開始,在列發票的基礎上增加1,所以在變量字段中,我創建了一個變量var_rw並將其定義爲Numeric.sequence(Invoice,2, 1),它指的rwnbr列Var.var_rw

但我的輸出來了錯誤的:(如果你看到的輸出,如果我有兩張發票會跳過一個數字和數字作爲4

發票代碼實際預期 I123 ASD 4 2 I123 DFG 5 3 i234 DTH 6 2 i234 RDF 7 3 i234 SDF 8 4 i234 WES 9 5

+0

道歉的輸出格式..我從我的手機發布..所以我不能格式化它的權利 – user6673748

相關問題