Altova MapForce 2025 Enterprise Edition

Manchmal müssen Daten aus zwei oder mehr Strukturen auf Basis einiger Bedingungen (z.B. wenn Feld A in der ersten Struktur denselben Wert wie Feld B in der zweiten Struktur hat) miteinander kombiniert werden. Zu diesem Zweck eignet sich die Verwendung einer Join-Komponente.

 

Eine Join-Komponente ist eine MapForce-Komponente, mit der zwei oder mehr Strukturen im Mapping auf Basis benutzerdefinierter Bedingungen miteinander verknüpft werden können. Sie gibt die miteinander verknüpften Datenelemente (die verknüpfte Gruppe) zurück, die die Bedingung erfüllen. Join-Verknüpfungen eignen sich besonders, um Daten aus zwei Datenstrukturen mit einem gemeinsamen Feld (z.B. einer ID) miteinander zu kombinieren.

 

Im unten gezeigten Mapping ist die mittlere Komponente z.B. eine "Join"-Komponente. In diesem Mapping werden zwei XML-Strukturen (eine Personen- und eine Adressliste) miteinander verknüpft. Ziel ist es, alle Informationen zu jeder Person in eine XML-Zieldatei zu übertragen. Die Felder FirstName und LastName werden als Verknüpfungsschlüssel verwendet. Wenn der Wert von FirstName und LastName (unter Person) mit dem von FirstName und LastName (unter Address) identisch ist, gehören die Adressdaten zu ein und derselben Person und werden verknüpft. Alle Datenelemente aus der miteinander verknüpften Struktur können anschließend auf eine Zielkomponente (in diesem Fall eine XML-Datei) gemappt werden. Die Join-Bedingung selbst wird durch Klicken auf die Schaltfläche Join-Bedingung definieren ( mf_ic_join_key ) in den Eigenschaften der Join-Komponente definiert. Zu dieser Komponenten gibt es ein Mapping-Beispiel, das unter Beispiel: Verknüpfen von XML-Strukturen ausführlich erläutert wird.

mf_map_JoinPeopleInfo

JoinPeopleInfo.mfd

Wie oben gezeigt, werden die Quellstrukturen und die Join-Komponente mittels einer "Alles kopieren"-Verbindung verbunden, wodurch die Verbindungen übersichtlicher angezeigt werden. Im Allgemeinen werden solche Verbindungen automatisch von MapForce erstellt, wenn der Kontext relevant ist (Nähere Informationen dazu siehe "Alles kopieren"-Verbindungen).

 

Die zu verknüpfenden Strukturen können entweder (wie im obigen Mapping) aus separaten Komponenten oder aus derselben Komponente stammen. Es kann sich dabei auch um unterschiedliche Arten handeln (z.B. eine XML-Struktur und eine Datenbanktabelle). Nähere Informationen zu Join-Verknüpfungen im Zusammenhang mit Datenbanken finden Sie unter Verknüpfen von Datenbankdaten mittels "Join".

So fügen Sie eine Join-Komponente hinzu:

1.Definieren Sie BUILT-IN als Mapping-Transformationssprache (Klicken Sie dazu entweder auf die Symbolleisten-Schaltfläche ic-builtin oder verwenden Sie den Menübefehl Ausgabe | Built-In Ausführungsprozessor).

2.Wählen Sie im Menü Einfügen den Befehl Verbinden. Klicken Sie alternativ dazu auf die Symbolleisten-Schaltfläche Verbinden ( mf_ic_join_button ). Daraufhin wird die Join-Komponente im Mapping angezeigt. Standardmäßig akzeptiert sie Daten aus zwei Strukturen, daher hat sie zwei nodes/rows-Inputs. Falls nötig, können Sie neue Inputs durch Klicken auf die Schaltfläche Input hinzufügen ( gui_add_function_parameter ) hinzufügen, siehe Verknüpfen von drei oder mehr Strukturen.

mf_join

3.Verbinden Sie die gewünschten Strukturen mit den nodes/rows-Datenelementen der Join-Komponente.

4.Fügen Sie eine (oder mehrere) Bedingungen für die Verknüpfung hinzu. Klicken Sie dazu mit der rechten Maustaste auf die Join-Komponente und wählen Sie Eigenschaften. Join-Bedingungen können auch direkt über das Mappen hinzugefügt werden, indem Sie das Boolesche Ergebnis einer Funktion mit dem condition-Datenelement der Join-Komponente verbinden. In bestimmten Fällen, beim Verknüpfen von Datenbanktabellen mittels Join, kann die Join-Bedingung (oder die Join-Bedingungen) von MapForce automatisch erstellt werden. Nähere Informationen dazu finden Sie unter Hinzufügen von Join-Bedingungen.

 

Anmerkungen:

 

Join-Verbindungen werden unterstützt, wenn als Zielsprache des Mappings BUILT-IN definiert ist. Die Codegenerierung in C#, C++ oder Java wird nicht unterstützt.

Wenn eine Struktur keine gültige oder unterstützte Input-Quelle für die Join-Verknüpfung ist, wird entweder direkt im Mapping oder im Fenster "Meldungen" eine entsprechende Information angezeigt, wenn Sie das Mapping validieren (siehe Validieren von Mappings).

Join-Komponenten sollten nicht mit Input-Parametern oder Ergebnissen von inline gesetzten benutzerdefinierten Funktionen verbunden werden. Falls solche Verbindungen vorhanden sind, kommt es bei der Mapping-Validierung zu Validierungsfehlern.

Wenn Sie verknüpfbare Datenbankkomponenten (wie z.B. Tabellen oder Ansichten) direkt mit einer Join-Komponente verknüpfen, wird in der rechten oberen Ecke der Join-Komponente automatisch eine SQL-Modus ( mf_ic_join_sql_enabled ) Schaltfläche angezeigt. Wenn diese Schaltfläche aktiviert ist, stehen spezielle SQL-Funktionen für die Join-Operation zur Verfügung (siehe Join-Verknüpfungen im SQL-Modus).

Die Ausgabe des mit Join verknüpften Datenelements kann mit einer anderen Join-Komponente verbunden werden. Gegebenenfalls können Sie jedoch ein Teilergebnis der einen Join-Verknüpfung mit einer anderen verbinden.

 

Join-Komponenten im Vergleich zu anderen Komponententypen

In einigen Fällen können dieselben Ergebnisse auch mit Hilfe komplexer Variablen oder Filter anstelle von Join-Komponenten erzielt werden (siehe Verwendung von Variablen bzw. Filter und Bedingungen). Im Gegensatz zu anderen Komponententypen machen Join-Komponenten das Mapping jedoch übersichtlicher, da Sie auf einen Blick sehen, welche Daten miteinander verknüpft wurden. Außerdem wird die Mapping Performanz erheblich verbessert, wenn der SQL-Modus der Join-Komponente aktiviert ist (Dies gilt für Datenbankverbindungen, siehe Verknüpfen von Datenbanktabellen mittels Join).

 

Hinzufügen eines Parent-Kontexts

In speziellen Fällen können Sie zur Erzielung eines bestimmten Mapping-Ergebnisses explizit einen Mapping-Kontext (einen so genannten "Parent-Kontext") für mit der Join-Komponente verbundene Daten bereitstellen. Um einen Parent-Kontext hinzuzufügen, klicken Sie mit der rechten Maustaste auf das verknüpfte Datenelement der Join-Komponente und wählen Sie im Kontextmenü den Befehl Parent-Kontext hinzufügen. Daraufhin wird in der Join-Komponente ein zusätzlicher parent-context-Input, mit dem Sie die erforderliche Datenquelle verbinden können, angezeigt. Nähere Informationen dazu finden Sie unter Beispiel: Ändern des Parent-Kontexts.

 

Das Argument parent-context ist ein optionales Argument in einigen MapForce Aggregatfunktionen der core-Bibliothek wie z.B. min, max, avg, count. Der parent-context bestimmt in einer Quellkomponente mit mehreren hierarchischen Sequenzen, an welcher Node-Gruppe die Funktion ausgeführt werden soll.

 

© 2018-2024 Altova GmbH