Joiner-Transformation in Informatica mit BEISPIEL

โšก Intelligente Zusammenfassung

Die Joiner-Transformation in Informatica ist das aktive, verbundene Objekt, das zwei heterogene Datenquellen anhand einer รผbereinstimmenden Bedingung zusammenfรผhrt und dabei die Master-Pipeline im Speicher zwischenspeichert, wรคhrend die Detail-Pipeline sie durchlรคuft.

  • ๐Ÿงฉ Meister und Detail: Zwei Eingangspipelines speisen die Transformation, und die Registerkarte โ€žPortsโ€œ legt fest, welche als Master fungiert.
  • ๐Ÿ’พ Master ist zwischengespeichert: Die Master-Pipeline ist immer in einen Index und einen Datencache integriert, daher gehรถrt die kleinere Datenquelle dorthin.
  • ๐Ÿ”— Vier Verbindungsarten: Normal, Master Outer, Detail Outer und Full Outer entscheiden, welche nicht รผbereinstimmenden Zeilen den Join รผberstehen.
  • ๐Ÿงช Ausgearbeitetes Beispiel: EMP und DEPT werden รผber deptno mit einem normalen Join verknรผpft und in EMP_DEPTNAME geladen.
  • ๏ธ Nur Gleichberechtigung: Eine Join-Bedingung vergleicht Ports mit dem Gleichheitsoperator, und beide Ports mรผssen denselben Datentyp haben.
  • โšก Sortierte Eingabe: Durch das Vorsortieren beider Pipelines an den Bedingungsports werden wรคhrend der Sitzung Festplattenzugriffe und -ausgaben reduziert.

Joiner-Transformation in Informatica

Was ist Joiner-Transformation?

Die Joiner-Transformation ist eine aktive und vernetzte Transformation, mit der Sie Joins in Informatica erstellen kรถnnen. Die mit der Joiner-Transformation erstellten Joins รคhneln den Joins in Datenbanken. Der Vorteil der Joiner-Transformation besteht darin, dass Joins fรผr heterogene Systeme (unterschiedliche Datenbanken) erstellt werden kรถnnen.

Bei der Joiner-Transformation gibt es zwei Datenquellen, die wir fรผr Joins verwenden werden. Diese beiden Datenquellen werden genannt

  • Master-Quelle
  • Detailquelle

In den Eigenschaften der Joiner-Transformation kรถnnen Sie auswรคhlen, welche Datenquelle als Master- und welche als Detaildatenquelle dienen soll.

Wรคhrend der Ausfรผhrung wird die Masterquelle fรผr den Join-Vorgang im Speicher zwischengespeichert. Daher empfiehlt es sich, die Quelle mit den wenigsten Datensรคtzen als Masterquelle auszuwรคhlen. Die Master-Pipeline wird in zwei Caches gehalten: einem Index-Cache fรผr die in der Join-Bedingung verwendeten Werte und einem Daten-Cache fรผr die รผbrigen Zeilendaten.

Arten von Joins in der Joiner-Transformation

Die Eigenschaft โ€žVerknรผpfungstypโ€œ auf der Registerkarte โ€žEigenschaftenโ€œ legt fest, was mit Zeilen geschieht, die keine รœbereinstimmung finden. Die folgenden Verknรผpfungen kรถnnen mithilfe der Joiner-Transformation erstellt werden.

  1. Master-Outer-Join โ€“ Bei einem Master Outer Join werden alle Datensรคtze aus der Detailquelle vom Join zurรผckgegeben, und es werden nur รผbereinstimmende Zeilen aus der Masterquelle zurรผckgegeben.
  2. Detaillierte รคuรŸere Verbindung โ€“ Bei einem Detail Outer Join werden nur รผbereinstimmende Zeilen aus der Detailquelle und alle Zeilen aus der Masterquelle zurรผckgegeben.
  3. Vollstรคndiger รคuรŸerer Join โ€“ Bei einem vollstรคndigen รคuรŸeren Join werden alle Datensรคtze aus beiden Quellen zurรผckgegeben.
  4. Normaler Beitritt โ€“ Bei einem normalen Join werden nur รผbereinstimmende Zeilen aus beiden Quellen zurรผckgegeben.

Master-AuรŸenverbindungen und Detail-AuรŸenverbindungen entsprechen linken AuรŸenverbindungen in SQLJeder Typ speichert alle Zeilen der einen Quelle und nur die รœbereinstimmungen der anderen. Die folgende Tabelle vergleicht die vier Typen mit ihren SQL-Entsprechungen.

Join-Typ Zeilen aus dem Master beibehalten Zeilen, die vom Detail ferngehalten werden. SQL-ร„quivalent
Normaler Beitritt Nur passende Nur passende Innere Verbindung
Master-Outer-Join Nur passende Alle Zeilen Linker รคuรŸerer Join auf der Detailquelle
Detaillierte รคuรŸere Verbindung Alle Zeilen Nur passende Left Outer Join auf der Masterquelle
Vollstรคndiger รคuรŸerer Join Alle Zeilen Alle Zeilen Vollstรคndiger รคuรŸerer Join

Der Join-Typ ist eine Eigenschaft, keine strukturelle Entscheidung, daher kann er spรคter geรคndert werden, ohne die Karte neu erstellen zu mรผssen.ping oder das erneute Verbinden von Ports.

Wie man die Joiner-Transformation in Informatica verwendet

In diesem Beispiel verknรผpfen wir die Tabellen โ€žempโ€œ und โ€ždeptโ€œ mithilfe der Joiner-Transformation. Arbeiten Sie die folgenden acht Schritte in der Map durch.ping Designer.

Schritt 1) Erstellen Sie mithilfe des unten stehenden Skripts eine neue Zieltabelle EMP_DEPTNAME in der Datenbank und importieren Sie die Tabelle in die Informatica-Ziele.

Laden Sie die obige emp_deptname.sql-Datei herunter

Schritt 2) Erstelle eine neue Karteping Importieren Sie nun die Quelltabellen โ€žEMPโ€œ und โ€žDEPTโ€œ sowie die im vorherigen Schritt erstellte Zieltabelle. Alle drei Definitionen befinden sich nun auf der Arbeitsflรคche, wie unten dargestellt.

Karteping Designer-Canvas mit den Quellen EMP und DEPT sowie der Zieldefinition EMP_DEPTNAME

Schritt 3) Wรคhlen Sie im Menรผ โ€žTransformationโ€œ die Option โ€žErstellenโ€œ. AnschlieรŸend im unten angezeigten Fenster โ€žTransformation erstellenโ€œ

  1. Wรคhlen Sie Joiner-Transformation aus
  2. Geben Sie den Transformationsnamen โ€žjnr_emp_deptโ€œ ein.
  3. Wรคhlen Sie die Erstellungsoption

Erstellen Sie ein Transformationsfenster mit der Auswahl von Joiner und dem eingegebenen Namen jnr_emp_dept.

Schritt 4) Ziehen Sie alle Spalten aus beiden per Drag-and-Drop Quellenqualifizierer zur Joiner-Transformation. Beide Pipelines sind nun mit jnr_emp_dept verknรผpft, wie der Screenshot zeigt.

Spalten aus beiden Quellqualifizierern wurden in die Joiner-Transformation jnr_emp_dept gezogen.

Schritt 5) Double Klicken Sie auf die Joiner-Transformation und anschlieรŸend im Fenster โ€žTransformationen bearbeitenโ€œ.

  1. Wรคhlen Sie die Registerkarte โ€žBedingungโ€œ aus
  2. Klicken Sie auf das Symbol โ€žNeue Bedingung hinzufรผgenโ€œ.
  3. Wรคhlen Sie in der Liste der Haupt- und Detailspalten die Abteilungsnummer aus

Die Registerkarte โ€žBedingungโ€œ enthรคlt nun die einzelne Verknรผpfungsbedingung fรผr deptno.

Registerkarte โ€žBedingungenโ€œ der Joiner-Transformation, wobei โ€ždeptnoโ€œ in den Master- und Detailspalten ausgewรคhlt ist.

Schritt 6) Dann im selben Fenster

  1. Wรคhlen Sie die Registerkarte โ€žEigenschaftenโ€œ.
  2. Wรคhlen Sie als Join-Typ โ€žNormal Joinโ€œ aus.
  3. Wรคhlen Sie die Schaltflรคche โ€žOKโ€œ aus.

Im nรคchsten Schritt wird die Registerkarte โ€žEigenschaftenโ€œ mit der festgelegten Verbindungsart angezeigt.

Registerkarte โ€žEigenschaftenโ€œ der Joiner-Transformation mit dem auf โ€žNormal Joinโ€œ eingestellten Join-Typ.

Zur Leistungsoptimierung ordnen wir die Master-Quelle der Quelltabellen-Pipeline mit weniger Datensรคtzen zu. So fรผhren Sie diese Aufgabe aus:

Schritt 7) Double Klicken Sie auf die Joiner-Transformation, um das Fenster โ€žTransformationen bearbeitenโ€œ zu รถffnen, und dann

  1. Wรคhlen Sie die Registerkarte โ€žPortsโ€œ aus
  2. Wรคhlen Sie eine beliebige Spalte einer bestimmten Quelle aus, die Sie als Master erstellen mรถchten
  3. Klicken Sie auf OK

Auf der Registerkarte โ€žPortsโ€œ wird die ausgewรคhlte Pipeline als Master markiert, wie unten dargestellt.

Registerkarte โ€žPortsโ€œ der Joiner-Transformation mit gesetztem Master-Flag fรผr eine Quellpipeline

Schritt 8) Verknรผpfen Sie die relevanten Spalten der Joiner-Transformation mit der Zieltabelle. Die Zuordnungping Die Verarbeitung erfolgt nun von beiden Quellen รผber den Join in EMP_DEPTNAME.

Verknรผpfte Spalten von jnr_emp_dept zur Zieltabelle EMP_DEPTNAME

Speichere nun die Karteping und fรผhren Sie es nach dem Erstellen eines Session und Arbeitsablauf. Dafรผr wird der Join mithilfe des Informatica Joiners erstellt, und relevante Details werden aus beiden Tabellen abgerufen.

Eigenschaften der Joiner-Transformation

Die Registerkarte โ€žEigenschaftenโ€œ enthรคlt mehr Informationen als nur den Join-Typ. Die folgenden Einstellungen steuern, wie viel Speicherplatz der Join verwendet und wo die Cache-Dateien gespeichert werden.

Rahmen Was es steuert
Join-Typ Normal, Master Outer, Detail Outer oder Full Outer. Legt fest, welche nicht รผbereinstimmenden Zeilen beibehalten werden.
Beitrittsbedingung Die Liste der Master-Detail-Portpaare wird mit dem Gleichheitsoperator verglichen. Mehrere Bedingungen werden mit UND verknรผpft.
Sortierte Eingabe Gibt an, dass beide Pipelines bereits nach den Bedingungsports sortiert ankommen, wodurch der Integrationsdienst die Festplatteneingabe und -ausgabe minimieren kann.
Hauptsortierreihenfolge Die Sortierreihenfolge der Master-Quelldaten, verwendet zusammen mit den sortierten Eingabedaten.
Cache-Verzeichnis Verzeichnis, in dem die Index- und Datencache-Dateien erstellt werden. StandardmรครŸig wird die Prozessvariable $PMCacheDir verwendet.
GrรถรŸe des Joiner-Daten-Caches GrรถรŸe des Datencaches, der die Masterzeilendaten enthรคlt. StandardmรครŸig ist die Einstellung โ€žAutoโ€œ, wodurch der Integrationsdienst die GrรถรŸe festlegt.
Joiner-Index-Cache-GrรถรŸe GrรถรŸe des Index-Caches, der die Master-Bedingungswerte enthรคlt. Standardwert: Auto.
Transformationsbereich Wendet den Join auf jede Transaktion, auf alle eingehenden Daten oder auf einen Zeilenbereich an.

Die Einstellung โ€žSortierte Eingabeโ€œ ist die erste Wahl. Wenn beide Pipelines nach den Bedingungsports sortiert eintreffen, muss der Integrationsdienst nicht die gesamte Masterquelle vor Beginn des Abgleichs speichern. Dies entspricht dem Prinzip, das auch bei der folgenden Verarbeitung angewendet wird: Leistungsoptimierung von anderen zwischengespeicherten Transformationen.

Regeln und Einschrรคnkungen der Joiner-Transformation

Manche Einschrรคnkungen treten erst zutage, wenn die Karteping wird validiert, daher ist es gรผnstiger, sie zu kennen, bevor die Ports verbunden werden.

  • Nur Gleichheit. Eine Join-Bedingung vergleicht Ports mit dem Gleichheitsoperator. Vergleichsoperatoren wie grรถรŸer als, kleiner als oder ungleich werden in der Bedingung nicht akzeptiert.
  • Passende Datentypen. Beide Ports einer Bedingung mรผssen denselben Datentyp aufweisen. Der Designer รผberprรผft dies, daher mรผssen nicht รผbereinstimmende Spalten zuerst konvertiert werden, รผblicherweise mithilfe einer Ausdruckstransformation.
  • Keine Aktualisierungsstrategie im Upstream. Eine Joiner-Transformation kann nicht verwendet werden, wenn eine der Eingabepipelines eine Update Strategy-Transformation enthรคlt.
  • Keine Sequenz Generator unmittelbar davor. Verbinden einer Sequenz Generator Eine Transformation unmittelbar vor dem Joiner wird nicht unterstรผtzt.
  • Zwischenspeicherung kann nicht deaktiviert werden. Die Master-Pipeline wird immer zwischengespeichert, weshalb die kleinere Datenquelle auf der Master-Seite liegt und die Cache-GrรถรŸe bei groรŸen Joins eine Rolle spielt.

Das Zusammenfรผhren von drei Datenquellen erfordert zwei verkettete Joiner-Transformationen, da jede genau eine Master- und eine Detail-Pipeline akzeptiert. Wenn die zweite Datenquelle stattdessen eine kleine Referenztabelle ist, die zeilenweise gelesen wird, โ€ฆ Lookup-Transformation ist oft die einfachere Ausfรผhrung.

Hรคufig gestellte Fragen

Zweitens. Jeder Joiner akzeptiert eine Master- und eine Detailpipeline. Das Verbinden von drei Quellen bedeutet also, zwei davon zu verketten: Die Ausgabe der ersten wird zur Eingabepipeline der zweiten. Im Allgemeinen benรถtigt man fรผr n Quellen n minus eins.

Wenn sich beide Tabellen in derselben relationalen Datenbank befinden, verlagert der Source Qualifier den Join direkt in die Datenbank, wodurch Caching vollstรคndig vermieden wird. Der Joiner sollte nur dann verwendet werden, wenn die beiden Datenquellen heterogen sind oder sich bereits in separaten Pipelines befinden.

Der Index-Cache speichert die im Join-Bedingungstext genannten Master-Port-Werte, und der Daten-Cache speichert die restlichen Master-Zeilendaten, die vom Join zurรผckgegeben werden. Beide werden ausschlieรŸlich aus der Master-Pipeline erstellt, niemals aus der Detail-Pipeline.

Nein. Ein Nullwert in einem der Ports fรผhrt, genau wie in SQL, zu einem Fehler in der Bedingung. Daher werden diese Zeilen als nicht รผbereinstimmend behandelt. Ersetzen Sie Nullwerte vorgelagert durch einen Standardwert, wenn die Zeilen verknรผpft werden sollen.

Ja. Fรผgen Sie die Quelldefinition zur Map hinzu.ping Den Vorgang zweimal wiederholen, sodass zwei separate Datenleitungen entstehen. Eine wird dann in die Master- und die andere in die Detailseite eingespeist. Dies ist die รผbliche Methode, um eine Managerspalte in einen Mitarbeiternamen aufzulรถsen.

Ja, und dieser heterogene Fall ist der Hauptgrund fรผr die Existenz der Transformation. Eine Flatfile-Pipeline und eine relationale Pipeline verknรผpfen sich รผber รผbereinstimmende Ports, genau wie zwei Datenbanktabellen, da die Verknรผpfung innerhalb des Integrationsdienstes erfolgt.

KI-Assistenten analysieren beide Datenquellen, um geeignete Join-Schlรผssel vorzuschlagen, die Zeilenanzahl zu schรคtzen, damit die kleinere Seite als Master ausgewรคhlt wird, und Spalten mit verzerrten Daten oder vielen Nullwerten zu kennzeichnen, die das Ergebnis-Set erheblich vergrรถรŸern wรผrden. Maschinelles Lernen hilft zudem bei der Bewertung von Cache-GrรถรŸenoptionen.

Copilot erstellt schnell den entsprechenden SQL-Code und die Datentypkonvertierungen, was die Vorbereitung der Ports beschleunigt. Da Copilot weder Ihre Cache-GrรถรŸen noch die Anzahl der Zeilen einsehen kann, sollten Sie jeden Vorschlag anhand der Map รผberprรผfen.ping bevor Sie es speichern.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: