Datenstrukturen im Jitterbit Integration Studio
Einführung
Datenstrukturen können während der Aktivitätskonfiguration als Schemata bereitgestellt werden oder sie können innerhalb der Transformation definiert werden selbst. Wenn in einer Aktivität Datenstrukturen bereitgestellt werden, werden die Schemata von der Transformation übernommen, wobei die Aktivität als Quelle oder Ziel in der Operation verwendet wird. Sobald die Quell- und Zielschemata einer Transformation definiert sind, erstellen Sie Transformation zwischen den Quell- und Zielschemata, um zu definieren, wie Daten verarbeitet werden sollen.
Informationen zum Beheben bestimmter Fehler bei der Ausführung von Operation, die durch Datenstrukturen verursacht werden, finden Sie unter Fehlerbehebung bei Operationen.
Datenstrukturtypen
In Harmony können Quell- und Zielschemata Datenstrukturen verwenden, die entweder als flach oder hierarchisch.
Flache Struktur
Eine flache Datenstruktur besteht aus einem oder mehreren einzelnen Feldern und Datensätzen in einer zweidimensionalen Struktur. Beispiele hierfür sind CSV-Dateien, einfache XML-Dateien und einzelne Datenbanktabellen. Eine flache Datenstruktur wird auch als Flachdatei-Struktur bezeichnet.
<customer>
<id>10123</id>
<name>ABC Co.</name>
<street>1 Main St.</street>
<city>Anytown</city>
<state>NY</state>
<zip>12345</zip>
</customer>
Hierarchische Struktur
Eine hierarchische Datenstruktur weist eine oder mehrere übergeordnete/untergeordnete oder verschachtelte Beziehungen zwischen Feldern und Datensätzen in einer komplexen Struktur auf. Eine hierarchische Datenstruktur wird manchmal als relationale, mehrstufige, komplexe Daten- oder Baum struktur bezeichnet.
<customer>
<id>10123</id>
<name>ABC Co.</name>
<addresses>
<address>
<street>1 Main St.</street>
<city>Anytown</city>
<state>NY</state>
<zip>12345</zip>
</address>
<address>
<street>1 Time Square</street>
<city>New York City</city>
<state>NY</state>
<zip>54321</zip>
</address>
</addresses>
</customer>
Darstellung von Datenstrukturen
Datenstrukturen werden in einem Baumformat angezeigt, das erweitert und reduziert werden kann, um entweder den gesamten Baum oder nur einen Teil davon anzuzeigen.
Jeder Baum besteht aus Knoten und Feldern, wobei Felder innerhalb der Quelldatenstruktur Feldern innerhalb der Zieldatenstruktur zugeordnet werden können.
Knoten haben links neben dem Knotennamen ein Dreieck, mit dem der Knoten ein- oder ausgeblendet werden kann. Standardmäßig werden Knoten bei Schemata mit 750 oder weniger Knoten bis zu 8 Ebenen und bei Schemata mit mehr als 750 Knoten bis zu 5 Ebenen ausgeblendet. Alle Knoten unter einem Zielknoten können gleichzeitig ausgeblendet werden, indem Sie die Aktionsmenü Alle Knoten unter diesem Knoten ausblenden im Schema verwenden (siehe Zielknoten im Mapping-Modus). Wenn Sie Knoten erweitern oder reduzieren, Integration Studio merkt sich den zuletzt verwendeten Erweiterungszustand, wenn Sie das nächste Mal auf die Transformation zugreifen.
Nach dem Erweitern zeigen Knoten alle enthaltenen untergeordneten Knoten und Felder an. Knoten können als Ordner betrachtet werden, deren untergeordnete Knoten Unterordner sind. Felder sind in Knoten enthalten und werden mit ihrem Datentyp aufgelistet (boolean
, integer
, double
, binary
, string
).
In der unten gezeigten Zielstruktur beispielsweise ist der Knoten json
enthält den untergeordneten Knoten item
, das die Felder enthält employeeId
, name
, Und title
Der Knoten item
enthält auch den untergeordneten Knoten employeeDetails
, das die Felder enthält salary
, isWorking
, Und status
.
Anzeige der zugeordneten Felder
Eine Transformation besteht aus Zielfeldern oder -knoten und den entsprechenden Scripts. Diese Scripts können Verweise auf Quellfelder oder -knoten oder Projektkomponenten enthalten, Funktionen verwenden oder andere gültige Script enthalten. Eine Zuordnung enthält keine Zielfelder, die nicht zugeordnet sind.
Wenn Quellobjekte und Variablen innerhalb des Zielfelds definiert sind, werden sie als Blöcke innerhalb des Zielfelds angezeigt. Das zugeordnete Zielfeld wird mit einer violetten vertikalen Linie links neben dem Zielfeldblock angezeigt:
Wenn Sie sich im Zuordnungsmodus befinden und sowohl ein Quell- als auch ein Schema auf dem Bildschirm sichtbar sind, zeigt eine visuelle hellgraue Linie die Verbindung mit dem Quellobjekt an, wenn Sie mit der Maus über ein Quell- oder Zielfeld fahren.
Die durchgezogene schwarze Linie im obigen Bild wird im nächsten Abschnitt Loop-Knoten erklärt.
Die Zielseite der Zuordnung zeigt auch an, ob ein Feld Standardwerte (im Bild unten rot umrandet) oder Verknüpfungen (im Bild unten grün umrandet) hat. Diese Transformation fügt beispielsweise Daten in eine Datenbank ein, deren id
Felder werden automatisch inkrementiert und deren created_at
ist standardmäßig auf die aktuelle Zeit eingestellt. Es zeigt auch, dass die untergeordnete Tabelle qa_employee
wurde über das ID-Feld mit der übergeordneten Tabelle verknüpft qa_restaurant
:
Wenn ein reduzierter Knoten Zielfeldzuordnungen enthält, wird dieser Knoten fett dargestellt, um anzuzeigen, dass er Zuordnungen enthält:
Schleifenknoten
Ein Loop-Knoten ist ein Quell- oder Zielknoten mit sich wiederholenden Datenwerten, wie z. B. Rechnungspositionen oder einer Reihe von Kundendatensätzen.
Wenn Schleifenknotenfelder zugeordnet werden, wird automatisch eine durchgezogene schwarze Iteratorlinie angezeigt, die angibt, dass der Transformation den Quelldatensatz durchläuft. Die Position der generierten Iteratorlinien hängt von der Anzahl der entsprechenden Quellschleifenknoten ab.
Eine Transformation kann keine oder mehrere Iteratorzeilen haben. Wenn mehrere Iteratorzeilen vorhanden sind, wird die Priorität von oben nach unten in der Zielstruktur vergeben.
Um die Anzeige einer einzelnen Iteratorlinie umzuschalten, klicken Sie direkt auf die Kreisform, die dem Zielknoten am nächsten ist:
Die einzelne Loop-Node-Linie wird dann zu einem orangefarbenen Stummel, der beim erneuten Anklicken die vollständige Linie anzeigt:
Beispiel
Als Beispiel für eine Loop-Node-Zuordnung betrachten Sie die folgende hierarchische Quellstruktur, die einen Quellknoten der obersten Ebene enthält (item
) mit Feldern, die Informationen über ein Unternehmen liefern. Ein untergeordneter Quellknoten, locationDetails
, enthält ein Array (json$item.locationDetails$item.
) von Objekten mit Feldern für mehrere Filialstandorte innerhalb eines Unternehmens. Sowohl der übergeordnete als auch der untergeordnete Knoten werden als Schleifenknoten betrachtet, da die Daten mehrere Unternehmensdatensätze mit mehreren Filialstandortdatensätzen für jedes Unternehmen enthalten können.
Bedenken Sie nun, dass diese Daten einer flachen Zielstruktur zugeordnet werden, was zu einem Datensatz für jeden Filialstandort führt. Während Sie Felder zuordnen, wird automatisch eine Iteratorlinie angezeigt, die Quell- und Zielschleifenknoten verbindet. Diese Linie gibt an, dass das Ziel so oft eine Schleife durchläuft, wie sich wiederholende Datensätze in der Quelle vorhanden sind, oder in diesem Beispiel jeden Filialstandortdatensatz für jedes Unternehmen durchläuft.
Mapping von einer Quelle mit mehreren Instanzen zu einem Ziel mit einer einzigen Instanz
Wenn der generierte Zielschleifenknoten von mehr als einem Quellschleifenknoten abhängt, müssen Sie möglicherweise einen Mehrfachvorkommenskonflikt mit der Zuordnung lösen.
Wenn die Quelldatenstruktur ein Array mit mehreren Objekten ist und einer Zieldatenstruktur mit einem einzelnen Objekt zugeordnet wird, wird dieser Dialog angezeigt:
Um die erste Instanz der Quelle in der Zuordnung zu verwenden, wählen Sie Ja. Dies bedeutet, dass nur der erste Datensatz zugeordnet wird. Bei der folgenden Zuordnung wird beispielsweise nur der erste Kundendatensatz im Array der Zielstruktur zugeordnet, die nur einen einzigen Kunden enthält. Beachten Sie, dass jedes zugeordnete Zielfeld jetzt ein Script enthält, wie mit dem Script.
Wenn Sie in den Script für ein beliebiges zugeordnetes Feld wechseln, sehen Sie, dass ein #1
wurde innerhalb des Pfads des zugeordneten Quellobjekts hinzugefügt, um anzuzeigen, dass die erste Instanz zugeordnet ist.
Wenn Sie nicht möchten, dass die erste Instanz der Quelle verwendet wird, können Sie mithilfe der instanzauflösenden Funktionen eine andere Logik angeben (siehe Instanzfunktionen).
Datennormalisierung
Wenn Sie Daten von einer flachen Struktur auf eine hierarchische Struktur abbilden, müssen die Daten möglicherweise vor der Transformation normalisiert werden.
Standardmäßig verwendet Harmony einen Normalisierungsalgorithmus zum Erstellen des Zielbaums. Dadurch wird die flache Struktur der Quelle in eine hierarchische Quellstruktur umgewandelt, die dann der hierarchischen Zielstruktur zugeordnet werden kann.
In der Zielstruktur werden das Stammelement und alle Mehrfachinstanzelemente unter dem Stamm verwendet, um die Struktur der sekundären Quellelemente zu erstellen. Die Attribute (oder Felder) dieser sekundären Quellelemente sind flache Datenelemente, die dann in den Zuordnungen des entsprechenden Zielelements verwendet werden.
Wenn die Quellstruktur richtig definiert ist, wird der Normalisierungsprozess auf das Kombinieren von Knoten mit denselben Eltern vereinfacht.
Es gibt drei Optionen zur Normalisierung:
- Vollständige Normalisierung: Alle Elemente mit demselben übergeordneten Element und alle Felder werden auf ein Element reduziert. (Dies ist die Standardeinstellung.)
- Partielle Normalisierung: Dasselbe wie vollständige Normalisierung, außer dass die niedrigsten untergeordneten Elemente nicht normalisiert werden.
- Keine Normalisierung: Jeder flache Datensatz erstellt einen Zweig von Elementen; beim Erstellen der hierarchischen Quellstruktur wird keine Reduzierung der Elemente durchgeführt.
Es ist möglich, dass die hierarchische Struktur einen einzelnen Instanzknoten enthält. In diesem Fall wird nur das erste Element für diese Wurzel beibehalten und flache Datensätze, die mit diesem Wurzeldatenknoten in Konflikt stehen, werden ignoriert.
Um die Normalisierung zu deaktivieren, setzen Sie die Variable Jitterbit jitterbit.transformation.disable_normalization
Zu true
(siehe Transformation Jitterbit-Variablen).
Instanz- und Mehrfachzuordnung
Transformation ist der Prozess, der verwendet wird, um die Beziehung von Daten zwischen Eingaben und einer daraus resultierenden Datenausgabe zu definieren. Je nachdem, welche Datenstrukturtypen verwendet werden, kann das Transformation als Instanzmapping oder Mehrfachmapping beschrieben werden.
Instanzzuordnung
Instanzmapping beschreibt, wenn das Mapping einer Zielinstanz möglicherweise von mehr als einer Instanz einer Quelle abhängt. Instanzmapping kann entweder flach-zu-flach (eins-zu-eins) oder hierarchisch-zu-flach (viele-zu-eins) erfolgen.
Mehrfachzuordnung
Multiple Mapping beschreibt das Mapping zweier hierarchischer Datenstrukturen oder das Mapping einer einzelnen flachen Struktur, die tatsächlich hierarchischer Natur ist und deren untere Segmente mehrere Wertesätze wie Name/Wert-Paare enthalten. Multiple Mapping kann entweder hierarchisch-zu-hierarchisch (viele-zu-viele) oder flach-zu-hierarchisch (eins-zu-viele) sein.
Beispiele
Beispielsituationen für Instanz- und Mehrfachzuordnung finden Sie in der Design Studio Dokumentation:
- Instanzzuordnung
- Mehrfachzuordnung
Obwohl diese Beispiele für Design Studio gelten, können die gleichen Konzepte auch in Integration Studio.
Praxisnahe Schulungsmodule mit Beispielen zum Zuordnen einfacher und komplexer Datenbank-, Text- und XML-Dateien finden Sie unter Einführung in Jitterbit Integration Studio.