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:
- Datentypen (wie oben beschrieben)
- Namen von Feldern und Knoten
- Nullwerte
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 alslocation_ids__
, aber zur Laufzeit wird der ursprünglichelocation_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 wird1text
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 wird12345
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:
- Leeres XML: Um einen leeren XML-Knoten im Payload zu senden, verwenden Sie
jitterbit.target.xml.include_empty_xml
:
$jitterbit.target.xml.include_empty_xml=true;
- Null XML: Um einen Nullwert im XML-Payload zu senden, verwenden Sie
jitterbit.target.xml.include_null_xml
:
$jitterbit.target.xml.include_null_xml=true;
- Leeres XML ausschließen: Um einen leeren XML-Knoten mit einem booleschen Datentyp auszuschließen, verwenden Sie
jitterbit.target.xml.exclude_empty_data
:
$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:
-
Öffnen Sie die Betriebseinstellungen von einem dieser Standorte:
-
Projektbereichs Workflows-Registerkarte
- Projektbereichs Components-Registerkarte
-
Entwurfscanvas (Doppelklick auf die Operation)
-
Wählen Sie die Optionen-Registerkarte.
-
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.