Zum Hauptinhalt springen

JSON zu Tabelle

Aktuelle Konfiguration des Tasks JSON zu Tabelle im Workflow Designer
  • Aufgabentyp: json-to-table

Die Aufgabe „JSON zu Tabelle“ ermöglicht den Import von Daten aus einer JSON-Datei mit tabellarer Struktur und deren Einfügen in eine Datenbanktabelle. Ihre Funktion ist zweifach: Sie verbindet sich mit einer Datenbank, um die Daten physisch zu schreiben, und macht gleichzeitig die importierten Daten als Dataset für die Nutzung durch nachfolgende Aufgaben im Workflow verfügbar (wie ein Iterator). Diese Aufgabe arbeitet mit einem JSON-Input, der von einer vorhergehenden Aufgabe bereitgestellt wird (z. B. „Text importieren“).

1. Datenbankverbindung

In diesem Tab werden alle Parameter zur Herstellung der Verbindung zur Ziel-Datenbank konfiguriert.

Zieltabelle

Es ist möglich, die Quelle der Anmeldeinformationen für die Verbindung zu definieren:

  • Manuell: Ermöglicht die manuelle Eingabe aller Verbindungsinformationen und Tabellendaten in die folgenden Felder.
  • Umgebung: Ermöglicht die Nutzung einer vorkonfigurierte Verbindung-Umgebung. Durch die Auswahl einer Umgebung werden die Authentifizierungsfelder automatisch ausgefüllt.

Datenbanktyp

Definiert den zu verbindenden Datenbanktyp (DBMS). Unterstützte Optionen umfassen:

  • PostgreSQL
  • SQL Server
  • MySQL
  • Oracle DB: Ermöglicht die Angabe der Verbindung über SID oder SERVICE.
  • SAP HANA

SSL-Verbindung

Gibt an, ob die Verbindung zur Datenbank über einen sicheren Kanal erfolgen soll.

Authentifizierung

FeldBeschreibung
HostAdresse der externen Datenbank.
PortPort der Verbindung zur externen Datenbank.
DB NameName der zu verbindenden Datenbank.
UserBenutzername für den Datenbankzugriff.
Passwort setzenÖffnet ein Fenster zur sicheren Eingabe des Passworts.

Tabellenverwaltung

Definiert, wie die Aufgabe mit der physischen Tabelle in der Datenbank interagieren soll.

  1. Zieltabelle: bestimmt die Aktion, die mit der Tabelle durchgeführt wird:
  • Tabelle erstellen: Erstellt immer eine neue Tabelle. Der Vorgang schlägt fehl, wenn bereits eine Tabelle mit demselben Namen existiert.
  • Tabelle erstellen, falls nicht vorhanden: Erstellt eine neue Tabelle nur, wenn noch keine Tabelle mit demselben Namen existiert.
  • Vorhandene Tabelle: Fügt die Daten in eine bereits vorhandene Tabelle ein. Standardmäßig werden die neuen Daten zu den bereits vorhandenen hinzugefügt (Append). Durch Aktivieren der Checkbox Truncate Insert wird die Tabelle geleert, bevor die neuen Daten eingefügt werden.
  1. Zieltabellennamen: Name der zu erstellenden oder in die Daten zu schreibenden Tabelle (z. B. utenti, prodotti, log_eventi).

2. Tabellenstruktur

Der Tab „Tabellenstruktur“ ermöglicht die Definition der Felder (Spalten) der Tabelle und das Mappen jeder Spalte auf die Elemente der ursprünglichen JSON-Datei.

Verfügbare Felder

Jede Zeile repräsentiert eine Spalte der Tabelle. Für jedes Feld können folgende Einstellungen vorgenommen werden:

FeldBeschreibung
TypDatentyp des Feldes. Verfügbare Werte: NUMERICO, STRINGA, DATA, DATA E ORA
PräzisionFür NUMERICO: maximale Anzahl von Ziffern; für STRINGA: maximale Länge
AliasDer tatsächliche Name der Spalte in der Datenbanktabelle. Dies ist der im DB sichtbare Name.
JSONPath-AusdruckJSONPath-Ausdruck zum Extrahieren des Werts aus der ursprünglichen JSON-Datei (z. B. $.persona.info.name)

Table Structure Management

In der unteren rechten Ecke der Tabellarischen Struktur befinden sich drei Schaltflächen:

SchaltflächeAktion
SpeichernSpeichert die definierte Struktur
ImportierenImportiert eine vorhandene Struktur
ExportierenExportiert die definierte Struktur

Diese Funktion ermöglicht es, Mappings zu speichern, zu exportieren oder wiederzuverwenden, wodurch die manuelle Feldkompilierung vermieden und das Fehlerrisiko reduziert wird.

Technische Anmerkung

  • Sichtbarkeit: In das System gespeicherte Strukturen sind nur für den erstellenden Benutzer sichtbar.
  • Vertiefung: Für eine detaillierte Beschreibung aller Optionen und der Funktionslogik verweisen Sie auf die Seite Tabellenstruktur.

3. Konfigurationsbeispiel

Um eine Tabelle utenti mit den folgenden Feldern zu erstellen:

TypAliasJSONPath-Ausdruck
STRINGAname$.user.info.name
STRINGAemail$.user.info.email
NUMERICOage$.user.info.age
STRINGAcity$.address.city
DATAregistration_date$.registration.date
DATA E ORAregistration_datetime$.registration.datetime

Das Ergebnis dieser Konfiguration ist die Erstellung einer Tabelle in der Datenbank mit den Spalten name, email, age, city, registration_date und registration_datetime (Alias), die mit den aus dem JSON extrahierten Werten (JSONPath-Ausdruck) gefüllt sind.

Alias mit Sonderzeichen oder Großbuchstaben

Wenn Großbuchstaben, Sonderzeichen oder Leerzeichen in den Spaltennamen verwendet werden sollen, muss der Alias in doppelte Anführungszeichen gesetzt werden (z. B. "Vorname").

TypAliasJSONPath-Ausdruck
STRINGA“Name”$.name
STRINGA“Nachname”$.surname

Ergebnis in der Datenbank

4. Verwaltung verschachtelter JSON-Strukturen

Der Task JSON to Table ist in der Lage, JSON-Dateien zu verarbeiten, die verschachtelte Strukturen enthalten, wie Arrays oder Objekte innerhalb anderer Objekte. Mithilfe des Pfad-/Abfrageausdrucks kann ein ganzer verschachtelter Block oder einzelne Werte extrahiert und auf Spalten der Tabelle abgebildet werden. Der Task kann ein verschachteltes Objekt in einer einzigen Textspalte serialisieren und dabei die ursprüngliche Struktur im JSON-Format beibehalten.

Beispiel: Komplexe verschachtelte Strukturen

Der Task kann auch mit weitaus komplexeren Strukturen gleichermaßen gut umgehen. Betrachten wir ein JSON, bei dem departments ein Objekt enthält, das wiederum ein Array anderer Objekte enthält.

[
{
"name": "Luca",
"surname": "Rossi",
"departments": {
"department": [
{
"details": {
"name": "Marketing",
"location": "Milan"
}
},
{
"details": {
"name": "Sales",
"location": "Rome"
}
}
]
}
},
{
"name": "Maria",
"surname": "Bianchi",
"departments": {
"department": [
{
"details": {
"name": "HR",
"location": "Florence"
}
}
]
}
}
]

Auch in diesem Fall bleibt die Konfiguration in der "Tabellarischen Struktur" identisch:

TypPräzisionAliasJSONPath-Ausdruck
String1000name$.name
String1000surname$.surname
String4000departments$.departments

Der Task nimmt das gesamte Objekt, das mit dem Schlüssel departments verknüpft ist, und serialisiert es in einen einzigen JSON-String.

Ergebnis in der Datenbank:

namesurnamedepartments
LucaRossi{"department":[{"details":{"name":"Marketing","location":"Milan"}},{"details":{"name":"Sales","location":"Rome"}}]}
MariaBianchi{"department":[{"details":{"name":"HR","location":"Florence"}}]}

Extraktion von Unterelementen mit JSONPath

Wenn stattdessen einzelne verschachtelte Elemente extrahiert werden sollen, wie beispielsweise die Namen der Abteilungen, kann ein spezifischer JSONPath-Ausdruck verwendet werden. Zum Beispiel:

TypPräzisionAliasJSONPath-Ausdruck
String1000name$.name
String1000surname$.surname
String1000department_names$.departments.department[*].details.name

Mit dieser Konfiguration wählt das Task JSON to Table alle Werte name aus dem Array department aus und fügt sie in die Spalte department_names der Datenbank ein, wobei sie optional durch ein Komma getrennt werden.

Ergebnis in der Datenbank

namesurnamedepartment_names
LucaRossiMarketing, Sales
MariaBianchiHR

Dieser Ansatz ermöglicht die Extraktion nur der benötigten Daten, ohne den gesamten JSON-Block zu serialisieren, was die Tabelle leichter abfragbar und in anderen Tasks oder Berichten nutzbar macht.

5. Ausgabeparameter

Sobald das Task "JSON to Table" die Verarbeitung abgeschlossen hat, stellt es eine reichhaltige Reihe von Ausgabe-Parameter bereit. Diese Parameter liefern nicht nur Informationen über den Status der Operation, sondern stellen auch die verarbeiteten Daten in verschiedenen Formaten für nachfolgende Tasks zur Verfügung.

  • result: Gibt den allgemeinen Status der Task-Ausführung zurück (z. B. "Success" oder eine Fehlermeldung).
  • resultJson: Stellt das Ergebnis der Task-Ausführung im JSON-Format dar und enthält allgemeine Informationen, Konfigurationen und Details zur Ausführung.
  • targetTable: Gibt den Namen der Datenbanktabelle zurück, in die die Daten eingefügt wurden.
  • rowCount: Gibt die Gesamtzahl der Zeilen an, die in die Zieltabelle eingefügt wurden.
  • DataExportCsv: Gibt den gesamten verarbeiteten Datensatz zurück, formatiert als Text im CSV-Format (Comma-Separated Values).
  • DataExportJson: Gibt den gesamten verarbeiteten Datensatz zurück, formatiert als JSON-String.
  • Dataset: Dieser Parameter repräsentiert den Namen der Spalte der Tabelle (z. B. name). Er ist der wichtigste Parameter, um dieses Task mit einem Iterator zu verknüpfen. Um auf die Werte einer bestimmten Spalte während einer Iteration zuzugreifen, wird die Syntax Dataset.Spaltenname verwendet.
  • DataColumn: Dieser Parameter ermöglicht den Zugriff auf den gesamten Inhalt einer Spalte als einzelne Einheit (z. B. ein Array oder eine Liste).
  • DataColumn.Spaltenname: Gibt alle Werte der Spalte „Spaltenname“ zurück. Z. B.: „Luca, Maria, Giovanni, Elena“

6. Beispiel-Parameter resultJson

{
"run_info": {
"status": "Completed",
"run_result": "Success"
},
"output_parameters": {
"exitStatus": "0"
}
}