2016-11-18 48 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