JSON vers Table
- 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
| Champ | Description |
|---|---|
| Host | Adresse du serveur de base de données externe autorisé. |
| Port | Port prévu pour la connexion au serveur de base de données externe. |
| Nom DB | Nom de la base de données à laquelle se connecter. |
| User | Nom d'utilisateur pour accéder à la base de données. |
| Définir Mot de passe | Ouvre 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.
- 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.
- 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 :
| Champ | Description |
|---|---|
| Type | Type de données du champ. Valeurs disponibles : NUMÉRIQUE, CHAINE, DATE, DATE ET HEURE |
| Précision | Pour NUMÉRIQUE: nombre maximal de chiffres; pour CHAINE: longueur maximale |
| Alias | Nom réel de la colonne dans la table de la base de données. Ce sera le nom visible dans le DB. |
| Expression JSONPath | Expression 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 :
| Bouton | Action |
|---|---|
| Sauvegarder | Sauvegarder la structure définie |
| Importer | Importer une structure existante |
| Exporter | Exporter 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 :
| Type | Alias | Expression JSONPath |
|---|---|---|
| STRINGA | name | $.user.info.name |
| STRINGA | $.user.info.email | |
| NUMÉRIQUE | age | $.user.info.age |
| STRINGA | city | $.address.city |
| DATE | registration_date | $.registration.date |
| DATE ET HEURE | registration_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").
| Type | Alias | Expression 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 :
| Type | Précision | Alias | Expression JSONPath |
|---|---|---|---|
| String | 1000 | name | $.name |
| String | 1000 | surname | $.surname |
| String | 4000 | departments | $.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 :
| name | surname | departments |
|---|---|---|
| Luca | Rossi | {"department":[{"details":{"name":"Marketing","location":"Milan"}},{"details":{"name":"Sales","location":"Rome"}}]} |
| Maria | Bianchi | {"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 :
| Type | Précision | Alias | Expression JSONPath |
|---|---|---|---|
| String | 1000 | name | $.name |
| String | 1000 | surname | $.surname |
| String | 1000 | department_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
| name | surname | department_names |
|---|---|---|
| Luca | Rossi | Marketing, Sales |
| Maria | Bianchi | HR |
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"
}
}