Record Joiner

Record Joiner führt einen SQL-ähnlichen JOIN-Vorgang aus, um Datensätze aus unterschiedlichen Streams basierend auf einer Beziehung zwischen Feldern in den Streams zu kombinieren. Mithilfe von Record Joiner können Sie Datensätze aus mehreren Dateien, Datenbanken oder beliebigen Upstream-Kanälen im Datenfluss zusammenführen. Dabei müssen Sie mindestens zwei Eingabekanäle mit Record Joiner verbinden. Die Ergebnisse des JOIN-Vorgangs werden anschließend in einen Ausgabekanal geschrieben. Optional können Datensätze, die nicht die Zusammenführungsbedingung erfüllen, in einen separaten Ausgabekanal geschrieben werden.

Anmerkung: Vor der Verwendung von Record Joiner müssen Sie den SQL JOIN-Vorgang gut verstanden haben. Weitere Informationen finden Sie unter wikipedia.org/wiki/Join_(SQL).

Join-Definition

Option Beschreibung

Linker Port

Der Port, dessen Datensätze Sie als die linke Tabelle im JOIN-Vorgang verwenden möchten. Alle anderen Eingabeports werden als rechte Tabellen im JOIN-Vorgang verwendet.

Anmerkung: „Linke“ und „rechte“ Tabelle sind SQL JOIN-Begriffe. Vor der Verwendung von Record Joiner müssen Sie den SQL JOIN-Vorgang gut verstanden haben. Weitere Informationen finden Sie unter wikipedia.org/wiki/Join_(SQL).

Join-Typ

Der JOIN-Vorgangstyp, den Sie ausführen möchten. Zur Auswahl stehen:

Left Outer
Gibt alle Datensätze aus dem linken Port zurück, selbst wenn es keine Übereinstimmungen zwischen dem linken Port und den anderen Ports gibt. Diese Option gibt alle Datensätze aus dem linken Port UND jeden Datensatz zurück, der in einem beliebigen anderen Port übereinstimmt.
Vollständig
Gibt alle Datensätze aus allen Ports zurück.
Inner
Gibt nur die Datensätze zurück, die zwischen dem linken Port und einem anderen Port eine Übereinstimmung aufweisen. Wenn Sie z. B. über vier Eingabequellen verfügen und Port 1 der linke Port ist, gibt ein Inner-Join Datensätze zurück, die übereinstimmende Felder zwischen Port 1 und Port 2, Port 1 und Port 3, und Port 1 und Port 4 aufweisen.

Join-Felder

Das Feld oder die Felder aus dem linken Port, die mit den Daten in einem Feld eines anderen Ports übereinstimmen müssen, damit die Datensätze zusammengeführt werden können.

Anmerkung: Es können nur Felder als Join-Felder verwendet werden, die den Datentyp „string“, „integer“, „date“ oder „datetime“ aufweisen.

Daten aus dem linken Port werden sortiert

Gibt an, ob die Datensätze im linken Port bereits nach dem in Join-Felder angegebenen Feld sortiert sind. Wenn die Datensätze bereits sortiert sind, kann die Aktivierung dieses Kästchens die Leistung verbessern. Wenn Sie dieses Kästchen nicht aktivieren, sortiert Record Joiner entsprechend dem in Join-Felder angegebenen Feld, bevor der Join-Vorgang ausgeführt wird.

Wenn Sie mehrere Join-Felder angeben, müssen die Datensätze unter Verwendung der Feldsortierung in Join-Felder sortiert werden. Sie haben z. B. zwei Join-Felder:

  • Amount
  • Region

Die Datensätze müssen zunächst nach dem Feld „Betrag“ und anschließend nach dem Feld „Region“ sortiert werden.

Wichtig: Wenn Sie diese Option auswählen, und die Datensätze nicht sortiert sind, erhalten Sie falsche Ergebnisse von Record Joiner. Wählen Sie diese Option nur aus, wenn Sie sicher sind, dass die Datensätze im linken Port bereits sortiert sind.

Join-Definitionen

Beschreibt die Join-Bedingung, die zur Bestimmung verwendet wird, ob ein Datensatz aus dem linken Port mit einem Datensatz aus einem der anderen Ports zusammengeführt werden soll. Beispiel:

port1.Name = port2.Name

Dies gibt an, dass wenn der Wert im Feld „Name“ eines Datensatzes aus Port 1 mit dem Wert im Feld „Name“ eines Datensatzes aus Port 2 übereinstimmt, die beiden Datensätze zusammengeführt werden.

Klicken Sie zum Ändern der Join-Bedingung auf Ändern. Wählen Sie ein Feld aus dem rechten Port aus, dessen Daten mit den Daten im Join-Feld des linken Ports übereinstimmen müssen, damit die Datensätze zusammengeführt werden können. Wenn Sie das Feld im linken Port ändern möchten, klicken Sie auf Abbrechen und ändern Sie es im Feld Join-Felder. Wenn die Datensätze im rechten Port nach dem Join-Feld sortiert sind, aktivieren Sie das Kästchen Daten aus dem rechten Port werden sortiert. Die Aktivierung dieses Kästchens kann die Leistung verbessern.

Wichtig: Wenn Sie die Option Daten aus dem rechten Port werden sortiert auswählen, und die Datensätze nicht sortiert sind, erhalten Sie falsche Ergebnisse von Record Joiner. Wählen Sie diese Option nur aus, wenn Sie sicher sind, dass die Datensätze im rechten Port bereits sortiert sind.

Feldauflösung

Auf dieser Registerkarte wird angegeben, welche Portdaten im zusammengeführten Datensatz verwendet werden, wenn der gleiche Feldname in mehr als einem Eingabeport vorhanden ist. Wenn Sie beispielsweise ein Join für zwei Datenquellen durchführen, und jede Quelle ein Feld mit dem Namen „DateOfBirth“ enthält, können Sie festlegen, welche Portdaten im Feld „DateOfBirth“ des zusammengeführten Datensatzes verwendet werden.

Wenn es Felder mit dem gleichen Namen aber unterschiedlichen Daten gibt, und Sie die Daten beider Felder im zusammengeführten Datensatz beibehalten möchten, müssen Sie eines der Felder umbenennen, bevor die Daten an Record Joiner gesendet werden. Sie können den Transformer-Schritt verwenden, um die Felder umzubenennen.

Handhabung von nicht zusammengeführten Datensätzen

Damit ein Datensatz in die Record Joiner-Ausgabe einbezogen werden kann, muss er die Join-Bedingung erfüllen. Oder es muss ein Join-Typ ausgewählt werden, der sowohl zusammengeführte Datensätze als auch die Datensätze zurückgibt, die nicht die Join-Bedingung erfüllen. Ein vollständiger Join gibt z. B. alle Datensätze aus allen Eingabeports zurück, egal ob ein Datensatz die Join-Bedingung erfüllt. Im Falle eines Join-Typs, der nicht alle Datensätze aus allen Ports zurückgibt (wie z. B. der Left Outer-Join oder ein Inner-Join), werden nur Datensätze in die Record Joiner-Ausgabe einbezogen, die die Join-Bedingung erfüllen.

Verwenden Sie zur Erfassung der Datensätze, die nicht im Ergebnis des Join-Vorgangs enthalten sind, den Ausgabeport not_joined. Die Ausgabe aus diesem Port enthält alle Datensätzen, die nicht in den regulären Ausgabeport einbezogen wurden. Der Ausgabeport not_joined ist das weiße Dreieck auf der rechten Seite des „Record Joiner“-Schrittes, wie hier dargestellt:

Datensätzen, die aus diesem Port stammen, wurde das Feld InputPortIndex hinzugefügt. Dieses Feld enthält die Zahl des Record Joiner-Eingabeports, aus dem der Datensatz stammt. Dadurch können Sie die Quelle des Datensatzes identifizieren.

Anmerkung:
  • Um in diesem Schritt eine optimale Leistung zu erreichen, stellen Sie sicher, dass zwei unabhängige Datensatzströme zusammengeführt werden, um eine konsolidierte Ausgabe zu generieren.
  • Wenn ein einzelner Pfad zuerst über einen Broadcaster oder einen Conditional Router verzweigt wird und dann über einen Record Joiner wieder zusammengeführt wird, könnte der Fluss hängen bleiben. Wenn zwischen Verzweigung und Zusammenführung mehrere Schritte vorhanden sind, verwenden Sie den Sorter so dicht am Record Joiner wie möglich.