2016-11-18 69 views
2

這個問題涉及到Talend Open Studio,但真正屬於正則表達式Java代碼領域。使用多個通配符過濾表列

我需要一個MySQL表篩選到

  1. 在一列
  2. 包含在多個其他列在字符串中出現的關鍵字排列通排排除字段名。

使用tMySQLInput - > TMAP! - > tMySQLInput與row1.CAT1.equals( 「IT」)作爲輸入,表達我與目標成功1.

我一直沒能找到了解如何使用tFilterRow或其他任何組件傳遞通配符列表。關鍵詞是%temp%,%recruit%和%sourc%。 (我使用%,因爲它很熟悉我的MySQL查詢。)

我希望能找到的東西類似於:row1.ColumnName.contains(%temp%|%recruit%|%source%),我可以把在tMap中的變量正則表達式過濾器或在tFilterRow中的高級表達式中。

我是Java編程新手,所以任何最佳實踐/建議/代碼將不勝感激。感謝您的幫助,我從這個社區學到了很多東西。

+1

你不能在MySQL中做過濾嗎?你提取的數據越少,你的工作就會越快。 –

+0

我已經考慮到了,現在已經完成了它,但我正在尋找talend提供的「可重複和自動化」選項。 – 19321

+0

通過將過濾器推送到數據庫可以節省大量時間,並且如果您使用TB級數據,它將付清 –

回答

0

這工作:

row3.Var1.contains("temp") || row3.Var1.contains("recruit") || row3.Var1.contains("source") ? row3.Var1 : "" 

但是這是你問什麼呢?

+1

感謝您的快速回復。這讓我關閉,但得到這個......當我把!這條語句... row1.Voucher_Header_Notes.contains(「TEMP」)|| row1.Voucher_Header_Notes.contains(「VIA」)&&!row1.CAT1.equals(「IT」)...在開始時我得到了一個不同的數據集。這個表達在開始的時候是否更重視這些部分? – 19321

+0

是否使用row3而不是row1暗示表達式應該輸入到tmap中的某個位置? – 19321

+0

我不能讓include || exclude工作正常。我試過row1.column.contains(「X」)||!(row1.column.contains(「Y」)),row1.column.contains(「X」)||!row1.column.contains(「Y 「),row1.column.contains(」X「)&&!(row1.column.contains(」Y「)to no avail。)我應該使用排除表達式在不同的組件或tmap中的不同位置?我可以將tfilter和tmap鏈接在一起嗎? – 19321

相關問題