2016-01-22 43 views
0

我有這種數據的處理,字符串在Talend

12345利帕AVE,AKA 1234 LIPA AVE,利帕市,LP,12345

我希望這變成這樣:

enter image description here

所有我要去處理數據具有1個逗號到地址分離和另一種情況下是上面的2逗號。

1個逗號的一個例子是下面,

12345利帕AVE,利帕市,LP,12345

enter image description here

回答

1

最簡單的解決方法是統一的結構中,然後進行映射。在這種情況下,它意味着第一轉換4列結構(1個逗號情況下)轉換成5列(2逗號情況下),其中所述第二字段是空的。 該圖如下: tFileInputFullRow -> tJavaRow -> tExtractDelimitedField -> tMap -> tFileOutputDelimited

所以首先讀完整行,然後檢測大小寫,如果需要插入額外的列。該tJavaRow代碼如下:

output_row.line = ""; 
String[] elements = input_row.line.split(","); 
if(elements.length == 4) 
    elements[0] += ","; 
for(String element:elements) 
    output_row.line += element + ","; 

在tExtractDelimitedField設置隔板到逗號和最後在TMAP兩個地址字段合併爲一個:

row3.address2 != null && !row3.address2.equals("") ? row3.address1 + "," + row3.address2 : row3.address1 

的tExtractDelimitedField可以在tJavaRow由被跳過更改輸出模式,然後逐個傳遞數組元素。

+0

您好,先生,謝謝你的回覆。你能告訴我一個這樣的例子嗎?我無法完成它。對不起,我上了Talend有點新的,我做就怎麼做這個實驗。謝謝! @Ernest –

+0

嘗試創建一個新的工作,並把我在文章中提到的組件:'tFileInputFullRow - > tJavaRow - > tExtractDelimitedField - > tMap - > tFileOutputDelimited' 這些屬性非常直觀,所以我認爲你會找到正確的設置很容易。輸入和輸出側的方案是一個String柱直到tExtractDelimitedField組件,你應該串類型輸出模式更改爲5列。 –