2016-11-18 7 views
2

Diese Frage bezieht sich auf Talend Open Studio, liegt aber wirklich im Regex-Java-Codebereich.Filtern von Tabellenspalten mit mehreren Platzhaltern

Ich muss

  1. eine MySQL Tabelle filtern, einen Feldnamen in einer Spalte und
  2. Pass Reihen auszuschließen, die Permutationen der Schlüsselwörter enthalten, die in mehreren anderen Spalten innerhalb einer Zeichenkette vorkommen.

Mit tMySQLInput -> tMap -> tMySQLInput mit row1.CAT1.equals ("IT") als Eingabe Ausdruck Ich habe mit Ziel gelingt 1.

Ich habe nicht in der Lage gewesen zu finden aus, wie eine Liste von Platzhaltern mit tFilterRow oder einer anderen Komponente übergeben wird. Die Schlüsselwörter sind% temp%,% rekrutieren% und% sourc%. (Ich verwende%, weil es meinen MySQL-Abfragen vertraut ist.)

Was ich zu finden hoffe, ist etwas wie: row1.ColumnName.contains (% temp% |% rekrutieren% |% source%), die ich setzen kann in einem variablen Regex-Ausdruckfilter in tMap oder einem erweiterten Ausdruck in tFilterRow.

Ich bin neu in Java Codierung, so dass alle Best Practices/Beratung/Code sehr geschätzt werden würde. Danke für die Hilfe, ich habe viel von dieser Community gelernt.

+1

Können Sie die Filterung in MySQL nicht tun? Je weniger Daten du herausziehst, desto schneller wird dein Job sein. –

+0

Ich habe darüber nachgedacht und habe es jetzt als Vorübergehen gemacht, aber ich suche nach den "wiederholbaren und automatisierten" Optionen, die talend bietet. – 19321

+0

durch Drücken der Filter auf die Datenbank sparen Sie eine Menge Zeit und wenn Sie mit Terabytes von Daten arbeiten, wird es sich auszahlen –

Antwort

0

Dies funktioniert:

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

Aber ist das, was für Sie fragen?

+1

Danke für die schnelle Antwort. Das bringt mich nahe, aber nimm das ... wenn ich den! Aussage dazu ... row1.Voucher_Header_Notes.contains ("TEMP") || row1.Voucher_Header_Notes.contains ("VIA") &&! row1.CAT1.equals ("IT") ... am Anfang bekomme ich ein anderes Datensatz. Hat der Ausdruck am Anfang mehr Gewicht auf die Teile? – 19321

+0

bedeutet Ihre Verwendung von row3 anstelle von row1, dass der Ausdruck an einer bestimmten Position in tmap eingegeben werden sollte? – 19321

+0

Ich kann nicht das Include || ausschließen, um richtig zu arbeiten. Ich habe versucht row1.column.contains ("X") ||! (Row1.column.contains ("Y")), row1.column.contains ("X") ||! Row1.column.contains ("Y "), row1.column.contains (" X ") &&! (row1.column.contains (" Y ") ohne Erfolg. Soll ich den exclude-Ausdruck in einer anderen Komponente oder an einem anderen Ort in tmap verwenden?) und Kann ich einen tfilter und eine tmap zusammenfassen? – 19321

Verwandte Themen