Aller au contenu principal

JSON vers Table

Configuration actuelle de la tâche JSON to Table dans le Workflow Designer
  • Type de tâche : json-to-table

La tâche "JSON vers Table" permet de importer des données à partir d'un fichier JSON avec une structure tabulaire et de les insérer dans une table d'une base de données. Sa fonction est double : elle se connecte à une base de données pour écrire physiquement les données et, en même temps, expose les données importées sous forme d'un Dataset pour être utilisé par d'autres tâches dans le Workflow (comme un Iterator). Cette tâche fonctionne sur un JSON en entrée fourni par une tâche précédente (par exemple, "Importer du texte").

1. Connexion à la base de données

Cette section permet de configurer tous les paramètres pour établir la connexion à la base de données de destination.

Table cible

Il est possible de définir la source des identifiants pour la connexion :

  • Manuelle : permet d'entrer manuellement tous les données de la connexion et de la table dans les champs suivants.
  • Environnement : permet d'utiliser un environnement de connexion préconfigurée. En sélectionnant l'un d'eux, les champs d'authentification sont remplis automatiquement.

Type de base de données

Définit le type de base de données (SGBD) auquel se connecter. Les options prises en charge incluent :

  • PostgreSQL
  • SQL Server
  • MySQL
  • Oracle DB : permet de spécifier la connexion via SID ou SERVICE.
  • SAP HANA

Connexion SSL

Indique si la connexion à la base de données doit se faire via un canal sécurisé.

Authentification

ChampDescription
HostAdresse du serveur de base de données externe autorisé.
PortPort prévu pour la connexion au serveur de base de données externe.
Nom DBNom de la base de données à laquelle se connecter.
UserNom d'utilisateur pour accéder à la base de données.
Définir Mot de passeOuvre une fenêtre pour saisir le mot de passe de manière sécurisée.

Gestion de la table

Définit comment la tâche doit interagir avec la table physique dans la base de données.

  1. Table cible : détermine l'action à effectuer sur la table :
  • Créer table : crée toujours une nouvelle table. L'opération échoue si une table avec le même nom existe déjà.
  • Créer table si elle n'existe pas : crée une nouvelle table uniquement si elle n'existe pas déjà.
  • Table existante : insère les données dans une table déjà présente. Par défaut, les nouveaux données sont ajoutés à ceux déjà présents (Ajouter). En activant la case à cocher Supprimer les données, la table est vidée avant l'insertion des nouveaux données.
  1. Nom de la table cible : nom de la table à créer ou dans laquelle écrire les données (par exemple, utilisateurs, produits, log_événements).

2. Structure tabellaire

La section Structure tabellaire permet de définir les champs (colonnes) de la table et de mapper chaque colonne avec les éléments du fichier JSON d'origine.

Champs disponibles

Chaque ligne représente une colonne de la table. Pour chaque champ, il est possible de configurer :

ChampDescription
TypeType de données du champ. Valeurs disponibles : NUMÉRIQUE, CHAINE, DATE, DATE ET HEURE
PrécisionPour NUMÉRIQUE: nombre maximal de chiffres; pour CHAINE: longueur maximale
AliasNom réel de la colonne dans la table de la base de données. Ce sera le nom visible dans le DB.
Expression JSONPathExpression JSONPath pour extraire la valeur du fichier JSON d'origine (par exemple, $.personne.info.nom)

Gestion de la structure de la table

Voici la traduction en français du document Sybot 2.0 :

En bas à droite de la Structure Tabellare sont présents trois boutons :

BoutonAction
SauvegarderSauvegarder la structure définie
ImporterImporter une structure existante
ExporterExporter la structure définie

Cette fonctionnalité permet de sauvegarder, exporter ou réutiliser les mappages, évitant la compilation manuelle des champs et réduisant le risque d'erreurs.

Note Technique

  • Visibilité: Les structures sauvegardées dans le système sont visibles exclusivement par l'utilisateur qui les a créées.
  • Approfondissement: Pour une description détaillée de toutes les options et de la logique de fonctionnement, faire référence à la page Structure de la table.

3. Exemple de configuration

Pour créer une table utilisateurs avec les champs suivants :

TypeAliasExpression JSONPath
STRINGAname$.user.info.name
STRINGAemail$.user.info.email
NUMÉRIQUEage$.user.info.age
STRINGAcity$.address.city
DATEregistration_date$.registration.date
DATE ET HEUREregistration_datetime$.registration.datetime

Le résultat de cette configuration sera la création d'une table dans la base de données avec les colonnes name, email, age, city, registration_date et registration_datetime (Alias) remplies avec les valeurs extraites du JSON (Expression JSONPath).

Alias avec caractères spéciaux ou majuscules

Si vous souhaitez utiliser des lettres majuscules, des caractères spéciaux ou des espaces dans les noms des colonnes, il est nécessaire de mettre l'Alias entre guillemets doubles (par exemple, "Nom Utilisateur").

TypeAliasExpression JSONPath
STRINGA“Name”$.name
STRINGA“Surname”$.surname

Résultat dans la Base de Données

4. Gestion de structures JSON imbriquées

La tâche JSON vers Table est capable de gérer les fichiers JSON qui contiennent des structures imbriquées, telles que des tableaux ou des objets à l'intérieur d'autres objets. Grâce à l'Expression Path/Query, il est possible d'extraire des blocs imbriqués entiers ou des valeurs individuelles, les mappant à des colonnes de la table. La tâche peut sérialiser un objet imbriqué en une seule chaîne de texte, préservant la structure originale au format JSON.

Exemple : Structures complexes imbriquées

La tâche gère également facilement des structures beaucoup plus complexes. Considérons un JSON où departments contient un objet, qui à son tour contient un tableau d'autres objets.

[
{
"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"
}
}
]
}
}
]

Même dans ce cas, la configuration dans la "Structure Tabellare" reste identique :

TypePrécisionAliasExpression JSONPath
String1000name$.name
String1000surname$.surname
String4000departments$.departments

La tâche prendra l'ensemble de l'objet associé à la clé departments et le sérialisera en une seule chaîne JSON.

Résultat dans la Base de Données :

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

Extraction de sous-éléments avec JSONPath

Si l'on souhaitait extraire des éléments imbriqués individuels, par exemple les noms des départements, il est possible d'utiliser une Expression JSONPath spécifique. Par exemple :

TypePrécisionAliasExpression JSONPath
String1000name$.name
String1000surname$.surname
String1000department_names$.departments.department[*].details.name

Avec cette configuration, la tâche JSON to Table sélectionne tous les valeurs name présentes dans le tableau department et les insère dans la colonne department_names de la base de données, les séparant éventuellement par une virgule.

Résultat dans la Base de Données

namesurnamedepartment_names
LucaRossiMarketing, Sales
MariaBianchiHR

Cette approche permet d'extraire uniquement les données nécessaires, sans sérialiser l'ensemble du bloc JSON, rendant la table plus facilement interrogable et utilisable dans d'autres tâches ou rapports.

5. Paramètres de Sortie

Une fois que la tâche "JSON to Table" a terminé son traitement, elle expose un ensemble riche de paramètres de sortie. Ces paramètres ne fournissent pas seulement des informations sur le résultat de l'opération, mais mettent également à disposition les données traitées dans divers formats pour les tâches suivantes.

  • result: Fournit l'état global de l'exécution de la tâche (par exemple, "Success" ou un message d'erreur).
  • resultJson: Représente le résultat de l'exécution de la tâche au format JSON, incluant des informations générales, des configurations et des détails sur l'exécution.
  • targetTable: Retourne le nom de la table de la base de données dans laquelle les données ont été insérées.
  • rowCount: Indique le nombre total de lignes qui ont été insérées dans la table de destination.
  • DataExportCsv: Retourne l'ensemble des données traitées, formatées en tant que texte au format CSV (Comma-Separated Values).
  • DataExportJson: Retourne l'ensemble des données traitées, formatées en tant que chaîne JSON.
  • Dataset: Ce paramètre représente le nom de la colonne de la table (par exemple : name). C'est le paramètre le plus important pour connecter cette tâche à Itérateur. Pour accéder aux valeurs d'une colonne spécifique lors d'une itération, on utilise la syntaxe Dataset.NomColonne.
  • DataColumn: Ce paramètre permet d'accéder au contenu entier d'une colonne en tant qu'entité unique (par exemple, un tableau ou une liste).
  • DataColumn.NomColonne: Retourne toutes les valeurs de la colonne “NomColonne”. Par exemple : “Luca, Maria, Giovanni, Elena”

6. Exemple paramètre resultJson

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