Verknüpfen von Datenbankdaten mittels Join

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Datenquellen und -ziele > Datenbanken und MapForce >

Verknüpfen von Datenbankdaten mittels Join

In Mappings, in denen Daten aus Datenbanken gelesen werden, können Sie Datenbankobjekte wie Tabellen oder Ansichten durch Hinzufügen einer Join-Komponente zum Mapping miteinander verknüpfen. So könnten Sie etwa Daten aus zwei oder mehr Tabellen, die, wie beim Speichern von Daten in relationalen Datenbanken üblich, durch Sekundärschlüsselbeziehungen gebunden sind, miteinander kombinieren. Das Ergebnis wäre dasselbe wie bei der Ausführung einer SQL-Abfrage an der Datenbank, bei der zwei oder mehr Tabellen mit Hilfe einer INNER JOIN-Operation miteinander verknüpft werden.

 

Je nach Art der mit der Join-Komponente verbundenen Daten kann die Join-Operation entweder im Standard-Modus (nicht SQL) oder im SQL-Modus erfolgen. Join-Verknüpfungen im Nicht-SQL-Modus werden von MapForce durchgeführt, während Join-Verbindungen im SQL-Modus von der Datenbank, aus der die Daten ausgelesen werden, durchgeführt werden.

 

Join-Verknüpfungen im Nicht-SQL-Modus sind flexibler, da sie mehr Komponententypen als Input unterstützen (So kann die Join-Verknüpfung etwa zwischen Tabellen aus unterschiedlichen Datenbanken oder zwischen XML-Strukturen und Datenbanktabellen erfolgen). Ein Beispiel für eine Nicht-SQL-Verknüpfung finden Sie unter Beispiel: Verknüpfen von XML-Strukturen. Andernfalls müssen bei einer Nicht-SQL-Join-Verknüpfung speicherintensive Vergleiche durchgeführt werden (da die Gesamtanzahl der Vergleiche das Kreuzprodukt oder Kartesische Produkt aller verknüpften Strukturen bildet). Normalerweise geht dies sehr schnell und ist in Mappings mit wenigen Daten vernachlässigbar. Wenn die miteinander verknüpften Datenquellen jedoch eine sehr große Menge an Datensätzen enthalten, so wird die Ausführung des Mappings entsprechend lange dauern. Wenn in Ihren Mappings eine sehr große Anzahl an Datensätzen verarbeitet werden muss, sollten Sie eventuell die MapForce Server Advanced Edition verwenden, die spezielle Join-Optimierungen zur Beschleunigung der Mapping-Ausführung enthält.

 

Für eine Join-Verknüpfung im SQL-Modus werden nur geeignete Datenbankobjekte (wie z.B. Tabellen oder Ansichten) als Input akzeptiert, daher ist dieser Modus nicht so flexibel wie eine Nicht-SQL-Join-Verknüpfung. Dafür ermöglicht dieser Modus eine bessere Mapping Performance, da der Join nativ von der Datenbank ausgeführt wird. Nähere Informationen dazu finden Sie unter Join-Verknüpfungen im SQL-Modus.

 

Anmerkung:Datenbanktabellen oder -ansichten können nicht nur mittels einer Join-Komponente miteinander verknüpft werden. Join-Verknüpfungen bei Datenbanken können auch mit Hilfe von SQL SELECT-Anweisungen durchgeführt werden. Siehe SELECT-Anweisungen als virtuelle Tabellen. Ein bedeutender Unterschied zwischen SQL SELECT-Anweisungen und Join-Komponenten ist, dass erstere von Hand geschrieben werden, so dass sie mehr Flexibilität bieten. Join-Komponenten sind eine einfachere Alternative, wenn Sie mit dem Schreiben von SQL-Anweisungen nicht so vertraut sind.

 

 

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.

© 2019 Altova GmbH