Correspondance des données au format JSON Lines
Le format de données JSON continue d'évoluer en tant que norme ouverte, car il est utilisé de manière créative pour répondre à de nouveaux besoins en matière d'échange de données. JSON Lines, défini à l'adresse http://jsonlines.org/, est un format texte pratique pour stocker des données structurées, où chaque enregistrement est une seule ligne et représente un objet JSON valide. JSON Lines permet de gérer des données tabulaires et identifie clairement les types de données sans ambiguïté. Cela permet de traiter les enregistrements un par un, ce qui rend ce format très utile pour l'exportation et l'envoi de données.
Altova MapForce prend en charge la transformation de données au format JSON Lines, que ce soit comme source ou comme destination. Examinons un projet de transformation qui consiste à extraire des enregistrements d'une table de base de données et à les convertir en un fichier JSON Lines pour la sortie.

MapForce prend en charge le traitement avancé des données, notamment la mise en correspondance, la conversion et la transformation entre tous les formats de données courants et les bases de données relationnelles. Pour cet exemple, supposons que nous ayons pour mission de créer un fichier JSON Lines contenant les informations stockées dans une table de base de données, initialement conçue pour une application de sondage mobile. La table "Cars" fait partie d'une base de données qui contient les noms de modèles et les spécifications de voitures de nombreux fabricants.
Utilisation du format JSON Lines comme format de sortie pour la cartographie des données
Notre stratégie pour mener à bien cette tâche de conversion des données en format JSON Lines est simple : nous allons examiner la table de base de données existante, créer un petit fichier d'exemple pour représenter les données au format JSON Lines, puis établir une correspondance entre les colonnes de la table de base de données et les éléments correspondants dans la sortie JSON Lines, en utilisant une conception de mappage dans MapForce. Enfin, il suffit de cliquer sur le bouton "Sortie MapForce" pour traiter automatiquement l'intégralité de la table et générer le fichier de sortie.
Nous utiliserons des outils de la suite Altova MissionKit pour réaliser chaque étape. Tout d'abord, nous ouvrirons la base de données avec DatabaseSpy et nous examinerons la table "Cars" dans la vue "Table Designer" :

Le tableau contient 9 colonnes qui correspondent aux types de données numériques et aux chaînes de caractères JSON, bien que plusieurs colonnes puissent contenir des valeurs nulles. La fenêtre située à gauche affiche le nombre total de lignes de données, soit 6 266. Nous pouvons utiliser le menu contextuel accessible en faisant un clic droit pour récupérer les 200 premières lignes et examiner les données :

Les lignes 6 et 7 révèlent que certaines lignes contiennent effectivement des données nulles. Maintenant que nous comprenons la structure des données sources, nous pouvons créer un petit fichier d'exemple pour représenter cette structure dans une seule ligne JSON. Les fonctionnalités d'édition JSON d'XMLSpy constituent un outil excellent :

Nos données JSON sont codées par couleur dans XMLSpy, et nous pouvons vérifier que le fichier est correctement formaté. Notez que nous avons enregistré le fichier avec l'extension .jsonl pour indiquer qu'il s'agit de fichiers JSON Lines.
Ensuite, nous allons ouvrir une nouvelle instance de MapForce, importer la table de base de données et le fichier .jsonl :

Lorsque nous avons importé le fichier .jsonl, MapForce a automatiquement créé un schéma JSON qui décrit les types de données possibles pour chaque cellule du tableau représentant nos données. Le schéma par défaut ne décrit qu'un seul élément, mais nous pouvons sélectionner cet élément et utiliser le menu contextuel pour ajouter des doublons, créant ainsi 8 éléments enfants supplémentaires :

Ensuite, nous associons les colonnes de la base de données aux types de données appropriés pour chaque élément du tableau JSON, et nous associons également la table "Cars" au premier élément situé en haut du schéma JSON. Cela indique à la configuration de la correspondance de créer une nouvelle ligne de sortie pour chaque ligne de la table "Cars".

Nous pourrions cliquer sur le bouton "Sortie" situé en bas de la fenêtre de mappage pour convertir l'intégralité du tableau et afficher un aperçu des résultats. Cependant, il y a une complication : nous n'avons pas pris en compte les valeurs nulles. Si nous enregistrons le fichier de sortie maintenant, toutes les valeurs nulles de la base de données seront complètement ignorées, ce qui laissera des lignes dans le fichier JSON Lines avec moins de 9 champs. Ces lignes seraient impossibles à interpréter correctement lors d'un traitement ultérieur.
Cartographie des données JSON avec des valeurs nulles
MapForce comprend un filtre que nous pouvons utiliser pour identifier et traiter les champs vides :

Un seul élément dans le tableau JSON ne peut pas être à la fois un nombre et une valeur nulle. Les filtres et les composants connectés indiquent que les données nulles dans la colonne "Cylindre" seront associées au type de données "null" dans l'élément 4. Si la valeur n'est pas nulle, elle sera associée au type de données numérique. Nous pouvons utiliser cette même structure de filtre pour toutes les autres colonnes qui peuvent contenir des valeurs nulles.
MapForce inclut une fonctionnalité permettant de créer des fonctions personnalisées, ce qui nous permet de sauvegarder la structure du filtre et de la réutiliser dans cette transformation et dans d'autres transformations de données JSON qui incluent des données nulles. Nous sélectionnons simplement le filtre et les composants associés, puis nous choisissons l'option "Créer une fonction personnalisée" dans le menu principal des fonctions :

La fonction personnalisée encapsule les composants sélectionnés, les remplace dans la configuration d'origine, et est ajoutée à la bibliothèque de fonctions

Nous pouvons simplement faire glisser la fonction utilisateur depuis la bibliothèque et la connecter aux autres colonnes de la base de données qui peuvent contenir des valeurs nulles.
Parfois, lors de la conversion de données au format JSON, il peut être préférable de convertir une valeur texte nulle en une chaîne de caractères vide. MapForce peut gérer cette exigence grâce à une fonction de remplacement des valeurs manquantes. Dans l'image ci-dessous, une valeur texte nulle dans la dernière colonne de la base de données est convertie en une chaîne de caractères vide :

Voici une vue de la cartographie des données complétée, intégrant la fonction utilisateur de détection des valeurs nulles :

Notez la fonction utilisateur "détecteur de valeurs nulles" qui est mise en évidence dans la fenêtre "Bibliothèques" située à gauche.
Maintenant que toutes les valeurs nulles possibles ont été prises en compte, nous pouvons cliquer sur le bouton "Sortie" pour générer le fichier de sortie au format .jsonl

Notez que la ligne 1675 et d'autres lignes contiennent à la fois une valeur nulle et une chaîne de caractères vide, mais les lignes 1690 à 1691 sont entièrement remplies de données.
Pour une transformation unique, ce fichier de sortie peut être enregistré immédiatement. Si la base de données est mise à jour en permanence et qu'elle doit être transformée à nouveau ultérieurement, nous pouvons enregistrer la configuration sous forme de fichier d'exécution pour MapForce Server, afin de réaliser un traitement automatisé avec MapForce Server, ou bien la déployer directement sur FlowForce Server.
Cartographie des données : utilisation de fichiers JSON en format lignes comme source de données
Le schéma de correspondance des données ci-dessous illustre la manière dont un ensemble de données similaire, provenant d'un fichier source .jsonl, peut être mappé vers une table de base de données.

Pour rendre cette version plus claire, nous avons modifié le schéma JSON dans XMLSpy en ajoutant des descriptions et en supprimant les types de données non valides pour chaque cellule du tableau. En cliquant sur le bouton "Sortie" pour cette configuration, un script SQL sera généré pour charger les données dans la table de la base de données.
Notez qu'aucun des éléments "nuls" ne nécessite de connexion entre la source et la destination. Les valeurs nulles nécessaires sont insérées automatiquement dans la table de la base de données, comme on peut le constater à la ligne 18 :

Téléchargez une version d'essai gratuite qui comprend des tutoriels, une aide et de nombreux exemples pour vous aider à démarrer votre propre projet de cartographie de données JSON Lines ou pour répondre à d'autres besoins de cartographie, de conversion et de transformation de données !