Zum Inhalt springen

Schemaverarbeitung und Datenkonvertierung im Jitterbit Integration Studio

Einführung

Während der Verarbeitung können Daten in Schemas konvertiert werden. Diese Seite beschreibt, wann und wie Daten je nach Schema-Typ konvertiert werden:

Alle Schema-Typen

In den meisten Fällen (Ausnahmen sind unten aufgeführt) wird bestimmte Daten unabhängig vom Schema-Typ auf die gleiche Weise konvertiert:

Datentypen

Diese Abschnitte beschreiben die Unterstützung bestimmter Datentypen durch das Integration Studio nach Schema-Typ. Für alle in Jitterbit Scripts unterstützten Datentypen siehe Datentypen in Jitterbit Script.

Datentypen mit unbegrenzter Präzision

Für die meisten Schema-Typen werden Datentypen mit unbegrenzter Präzision, wie XML-Dezimalzahlen, in double-Datentypen konvertiert. Dies setzt eine Präzisionsgrenze, die Daten truncieren könnte.

Die Präzisionsgrenze liegt im Bereich der minimalen und maximalen Werte eines vorzeichenbehafteten 32-Bit-Integer, der von –2.147.483.648 bis 2.147.483.647 reicht. Wenn die Werte außerhalb dieses Bereichs liegen, sollte stattdessen ein String-Datentyp verwendet werden, um das Truncieren von Daten zu vermeiden.

Nicht-primitiv Datentypen

Die primitiven Datentypen boolean, date, double, float, integer, long und string sowie der nicht-primitiv Datentyp decimal werden in allen Schema-Typen unterstützt. Beim Erstellen oder Bearbeiten eines benutzerdefinierten flachen oder hierarchischen Schemas oder beim Bearbeiten eines in einer Transformation hochgeladenen Schemas sind diese Datentypen im Dropdown-Menü Typ verfügbar. Für neue benutzerdefinierte Schemas werden andere nicht-primitiv Datentypen wie datetime nicht unterstützt.

Allerdings werden andere nicht-primitive Datentypen unterstützt für Schemata, die automatisch aus einem von einem Connector generierten Schema erstellt wurden oder von einem solchen Schema gespiegelt wurden. Nachdem sie generiert wurden, können solche Schemata auch im benutzerdefinierten Schema-Editor manuell bearbeitet werden. Wenn das Schema nicht-primitive Datentypen enthält, werden diese ebenfalls im Dropdown-Menü Typ angezeigt, wenn ein solches Schema bearbeitet wird.

Namen von Feldern und Knoten

Namen von Feldern und Knoten werden in gültige Namensräume umgewandelt, die dem XML-Standard folgen. Zur Referenz siehe NCNameChar für die erlaubten Zeichen, wie sie vom W3C definiert sind.

Bei der Verwendung eines von einem Connector bereitgestellten Schemas werden alle Sonderzeichen in einem Feld- oder Knotennamen durch Unterstriche (_) ersetzt, wie erforderlich, um ein gültiges XML-Schema zu erstellen.

Hinweis

JSON-Schemata folgen in bestimmten Umständen zusätzlichen Regeln (beschrieben unten).

Nullwerte

Felder mit Nullwerten sind im resultierenden Datenschema enthalten, obwohl sie keine Daten haben. Da sie auch keinen definierten Datentyp haben, werden diese Felder als Zeichenfolgen-Datentyp behandelt.

Hinweis

Dies gilt für alle Schema-Typen, außer für JSON-Schemata, die mit der Verarbeitung der JSON-Namen beibehalten (beschrieben unten) verarbeitet werden.

CSV-Schemata

Bei der Verwendung eines CSV-Schemas gelten diese Regeln für die folgenden Daten:

CSV-Dateien mit Kopfzeilen

Wenn eine CSV-Datei mit einer Kopfzeile als Beispiel-Schema-Datei bereitgestellt wird, gelten diese Regeln zur Generierung von Spaltennamen:

  • Sonderzeichen werden durch ein Fragezeichen (?) ersetzt.
  • Leerzeichen werden durch einen Unterstrich (_) ersetzt.
  • Leere Spaltennamen werden durch f1, f2, f3 usw. ersetzt.
  • Spaltennamen, die mit einer Zahl beginnen, werden mit einem Unterstrich (_) vorangestellt.
  • Wiederholte Spaltennamen werden mit 2, 3, 4 usw. ergänzt.

Sonderzeichen

Sonderzeichen (. _ - $ # @ ?) in CSV-Schemas werden unter diesen Umständen konvertiert:

  • Sonderzeichen, die auf der Quell- oder Zielseite einer Transformation vorhanden sind, werden durch ein Fragezeichen (?) ersetzt.
  • Sonderzeichen in einem Skript auf einem Ziel-Feld in einer Transformation werden durch ein Fragezeichen (?) ersetzt. Diese Regel gilt auch für jedes benutzerdefinierte flache oder benutzerdefinierte hierarchische Schema, das im CSV-Format erstellt wurde.

Hinweis

Diese Konversionen betreffen nur die Schema-Strukturen, nicht die tatsächlichen Daten.

JSON-Schemas

Bei der Verwendung eines JSON-Schemas hängt die Datenkonversion von der Projekteinstellung JSON-Namen beibehalten ab:

  • Verarbeitung von JSON-Namen beibehalten: Die Standardmethode, die verwendet wird, wenn JSON-Namen beibehalten aktiviert ist. Dies gilt für Projekte, die nach dem [11.48 Harmony-Release] erstellt wurden und auf Agent-Version 11.48 oder höher laufen.

  • Veraltete JSON-Verarbeitung: Die Standardmethode, die verwendet wird, wenn JSON-Namen beibehalten deaktiviert ist. Dies gilt für Projekte, die vor dem [11.48 Harmony-Release] erstellt wurden oder auf Agent-Version 11.47 oder früher laufen. Nach dem Upgrade auf Agent-Version 11.48 oder höher können Sie die Verarbeitung von JSON-Namen beibehalten aktivieren, indem Sie die Projekteinstellung JSON-Namen beibehalten aktivieren. Dies wird jedoch für bestehende Projekte nicht empfohlen.

    Nicht empfohlen für bestehende Projekte

    Für Projekte, die vor dem [11.48 Harmony-Release] erstellt wurden, hat die Aktivierung von JSON-Namen beibehalten nur Auswirkungen auf Operationen und Schemata, die nach der Aktivierung konfiguriert wurden. Dies führt zu Inkonsistenzen, wenn sie mit der bestehenden veralteten JSON-Verarbeitung gemischt werden.

    Empfehlung: Verwenden Sie weiterhin die veraltete JSON-Verarbeitung für bestehende Projekte oder regenerieren Sie alle Operationen und Schemata, nachdem Sie diese Funktion aktiviert haben, um Inkonsistenzen zu vermeiden.

Die folgende Tabelle fasst die wichtigsten Unterschiede zwischen den beiden JSON-Verarbeitungsmethoden zusammen:

Methode Verarbeitung von JSON-Namen beibehalten Veraltete JSON-Verarbeitung
Wann verwendet JSON-Namen beibehalten ist aktiviert JSON-Namen beibehalten ist deaktiviert
Projektkompatibilität Projekte, die nach 11.48 Harmony-Version und Agent-Version 11.48 oder später erstellt wurden Projekte, die vor 11.48 Harmony-Version oder Agent-Version 11.47 oder früher erstellt wurden
Feldnamen, die mit Zahlen beginnen Mit einem Unterstrich vorangestellt (zum Beispiel wird 1text zu _1text) Mit einem Unterstrich ersetzt (zum Beispiel wird 12345 zu _2345)
Sonderzeichen in Feldnamen Nur zur Entwurfszeit konvertiert; ursprüngliche Namen werden zur Laufzeit verwendet Sowohl zur Entwurfszeit als auch zur Laufzeit konvertiert
Umgang mit Nullwerten Nullfelder werden aus dem resultierenden Schema ausgeschlossen Nullfelder werden im resultierenden Schema als String-Typ einbezogen

Verarbeitung von JSON-Namen beibehalten

Bei der Verwendung der Verarbeitung von JSON-Namen beibehalten (wenn JSON-Namen beibehalten aktiviert ist), gelten folgende Regeln:

Namen von Feldern und Knoten

Wenn die Verarbeitung von JSON-Namen beibehalten wird, werden die Namen von Feldern und Knoten unter diesen Umständen konvertiert:

  • Die Verarbeitung von Feld- und Knotennamen, die in Alle Schema-Typen beschrieben ist, gilt nur während der Entwurfszeit. Zur Laufzeit wird der ursprüngliche Feld- oder Knotenname mit Sonderzeichen verwendet. Zum Beispiel erscheint der Feldname location_ids[] während der Entwurfszeit als location_ids__, aber zur Laufzeit wird der ursprüngliche location_ids[] verwendet.

    Um dieses Verhalten bei der Fehlersuche zu überprüfen, siehe Sonderzeichen in von Konnektoren bereitgestellten JSON-Schemas in Fehlerbehebung bei Operationen.

  • Wenn der Feld- oder Knotenname eines JSON-Schemas mit einer Zahl beginnt, wird er mit einem Unterstrich _ vorangestellt. Zum Beispiel wird 1text zu _1text.

Nullwerte

Felder oder Knoten mit Nullwerten werden nicht im resultierenden Datenschema enthalten.

Veraltete JSON-Verarbeitung

Wenn veraltete JSON-Verarbeitung verwendet wird (wenn JSON-Namen beibehalten deaktiviert ist), gelten diese Regeln:

  • Datentypen (wie oben beschrieben)
  • Namen von Feldern und Knoten (wie oben beschrieben)

    Vorsicht

    Neben der Verarbeitung von Feld- und Knotennamen, die in Alle Schema-Typen beschrieben ist, wird bei Verwendung von veralteter JSON-Verarbeitung der Feld- oder Knotenname eines JSON-Schemas, der mit einer Zahl beginnt, durch einen Unterstrich _ ersetzt. Zum Beispiel wird 12345 zu _2345. Dieses Problem tritt bei der Verarbeitung von JSON-Namen beibehalten nicht auf.

  • Nullwerte (wie oben beschrieben)

XML-Schemas

Bei der Verwendung eines XML-Schemas gelten diese Regeln:

Für Informationen zur Fehlersuche bei XML-Schema- und Transformationsfehlern siehe Fehlerbehebung bei Operationen.

Namensräume

Namensräume in XML-Schemas werden unterstützt. Wenn mehr als ein Namensraum in einem XML-Schema verwendet wird, konvertiert der Jitterbit-Agent das XML-Schema während der Verarbeitung in mehrere XSD-Dateien.

Selbstschließende Tags

Selbstschließende Tags für Elemente in XML-Schemas werden unterstützt, wobei einige Anpassungen des verwendeten Beispiel-XMLs zur Generierung des Schemas erforderlich sind. Um das XML-Element im Payload ohne einen zugeordneten Wert zu senden, können Sie eine Jitterbit-Funktion und eine Jitterbit-Variable wie unten beschrieben verwenden.

Beispiel-XML anpassen

Eine Anpassung ist erforderlich, wenn eine XML-Beispieldatei eine Kurzschreibweise für ein öffnendes und schließendes Tag in einem Element wie diesem verwendet:

<tag/>

Wenn eine solche Kurzschreibweise direkt in einem XML-Schema verwendet wird, kann der Knoten nicht zugeordnet werden, wenn er als Zielschema einer Transformation verwendet wird.

Um dies zu lösen, passen Sie das verwendete Beispiel-XML zur Generierung des Schemas an, um die öffnenden und schließenden Tags um das Element zu erweitern, und geben Sie einen Beispielwert an, damit ein Datentyp dem Element zugewiesen wird:

<tag>example</tag>

Das Element wird dann als Feld im XML-Schema angezeigt, und wenn es als Zielschema in einer Transformation verwendet wird, können Sie auf dieses Feld abbilden.

Auf das XML-Feld abbilden

Wenn Sie kein Quellobjekt oder keine Variable haben, um auf das Ziel-Feld abzubilden, können Sie die Jitterbit-Funktion Null im Transformationsskript verwenden, um sie als zugeordneten Wert zu nutzen:

<trans>
Null()
</trans>

Vor der Transformation, die das XML-Schema verwendet, setzen Sie eine dieser Jitterbit-Variablen (je nachdem, welche für Ihren Anwendungsfall geeignet ist), um zu steuern, was gesendet wird:

$jitterbit.target.xml.include_empty_xml=true;
$jitterbit.target.xml.include_null_xml=true;
$jitterbit.target.xml.exclude_empty_data=true;

Sonderzeichen

Sonderzeichen in XML-Schemas werden in diesen Fällen umgewandelt:

  • Sonderzeichen in einem Skript auf einem Ziel-Feld in einer Transformation werden durch ein Fragezeichen (?) ersetzt.

  • Diese Sonderzeichen in einem XML-Schema-Feld oder Knotennamen werden nicht unterstützt (da XML sie nicht unterstützt):

    $ # @ ?

Hinweis

Diese Umwandlungen sind auf die Schema-Strukturen beschränkt und beeinflussen nicht die tatsächlichen Daten.

Fehlerbehebung bei der Schemaverarbeitung

Bekannte Probleme

Leere zugeordnete Felder mit flachen Quellschemas

Bei der Verwendung eines flachen Quellschemas können Ziel-Felder möglicherweise nicht korrekt zugeordnet werden und in bestimmten Fällen leer erscheinen. Dieses Problem tritt bei gespiegelten Schemata oder JSON-Schemata nicht auf.

Umgehung: Fügen Sie am Anfang der Operation ein Skript hinzu, um Streaming-Transformationen zu deaktivieren:

$jitterbit.transformation.auto_streaming = false;

Speicherverbrauch optimieren

Für Transformationen, die große Dateien verarbeiten und kein Streaming verwenden können, können Sie Chunking konfigurieren, um den Speicherverbrauch zu reduzieren.

Chunking konfigurieren

Chunking teilt große Datensätze in kleinere Teile zur Verarbeitung auf. Konfigurieren Sie Chunking auf der Betriebsebene:

  1. Öffnen Sie die Betriebseinstellungen von einem dieser Standorte:

  2. Projektbereichs Workflows-Registerkarte

  3. Projektbereichs Components-Registerkarte
  4. Entwurfscanvas (Doppelklick auf die Operation)

  5. Wählen Sie die Optionen-Registerkarte.

  6. Stellen Sie die Chunk-Größe so groß wie möglich ein, während sichergestellt wird, dass jeder Chunk in den verfügbaren Speicher passt.

Für sehr große XML-Quellen und -Ziele kann Chunking Ihre einzige Option sein, wenn Streaming nicht anwendbar ist.

Hinweis

Verwenden Sie Streaming-Transformationen, wenn möglich. Chunking sollte nur verwendet werden, wenn Streaming nicht verfügbar ist und die Speichernutzung ein Anliegen darstellt.

Verhindern von doppelten Dateiübertragungen

Harmony verfolgt verarbeitete Dateien, um doppelte Übertragungen zu verhindern. Bevor eine Datei übertragen wird, überprüft das System diese drei Kriterien:

  • Dateiname
  • Änderungsdatum
  • Betriebs-ID

Wenn alle drei Kriterien mit einer zuvor verarbeiteten Datei übereinstimmen, überspringt das System die Übertragung.

Diese automatische Duplikatsvermeidung stellt sicher, dass das erneute Ausführen von Operationen unveränderte Dateien nicht erneut verarbeitet.