---
title: "Intégration des données des services web"
date: "2020-05-11"
categories: 
  - "data-integration"
  - "json"
  - "tools"
tags: 
  - "data-integration"
  - "data-mapping"
  - "excel-data-mapping"
  - "json-mapping"
  - "mapforce"
  - "web-services"
description: Découvrez comment intégrer des données de prévisions météorologiques provenant d'un service web dans Excel en utilisant MapForce, en mettant l'accent sur les techniques de mappage JSON et de conversion de données.
---
Status: #blog

Tags:  #data-integration #data-mapping #excel-data-mapping #json-mapping #mapforce #web-services

Categories: [data-integration](/blog/fr/category/data-integration.md) | [json](/blog/fr/category/json.md) | [tools](/blog/fr/category/tools.md)
# Intégration des données des services web

Dans une [publication précédente](https://www.altova.com/blog/analyze-json-data-in-xmlspy-grid-view/), nous avons écrit que chaque tâche d'intégration de données et de reporting doit commencer par une compréhension claire des données sources. En utilisant la vue en grille dans XMLSpy, l'éditeur [XML et JSON de référence dans l'industrie](https://www.altova.com/fr/xmlspy-xml-editor), nous avons analysé des données JSON relatives aux prévisions météorologiques pour 5 jours, obtenues à partir d'un service web.

En reprenant le scénario que nous avons présenté précédemment, nous utiliserons MapForce, un outil graphique primé [Outil de mappage de données pour la conversion et l'intégration de données, quel que soit le format de départ et d'arrivée](https://www.altova.com/fr/mapforce), pour transformer les prévisions concernant une série de ports majeurs de transport de marchandises en documents Excel bien structurés. Nous souhaitons mettre en évidence les prévisions de vents forts ou de fortes pluies qui pourraient entraîner des retards en perturbant le fonctionnement des grues chargant et déchargeant les conteneurs, ou en ralentissant l'entrée et la sortie des navires dans les ports.

![](/blog/images/containership.jpg)

<!--more-->

La requête REST pour les prévisions météorologiques accepte les coordonnées de latitude et de longitude afin de renvoyer une prévision pour les 5 prochains jours pour n'importe quel endroit dans le monde. Une seule configuration MapForce peut gérer plusieurs entrées et sorties, nous allons donc commencer le projet d'intégration des données du service web en créant une liste des ports de marchandises et de leurs coordonnées.

Il est très simple de créer cette liste sous forme de nouveau document JSON dans la vue grille de XMLSpy. Il suffit de saisir les données sans se soucier des caractères spécifiques à la syntaxe JSON. Sur l'image ci-dessous, nous avons cliqué sur l'icône en haut à gauche pour afficher la liste sous forme de tableau :

[![Une liste des principaux ports de marchandises, affichée sous forme de grille JSON dans XMLSpy](/blog/images/port-list-grid.png)](port-list-grid.png)

La vue en grille facilite grandement l'examen et la consultation du contenu des fichiers, contrairement à la vue texte, qui affiche tous les caractères de syntaxe nécessaires dans un fichier JSON valide.

[![Le même fichier JSON, affiché en mode texte](/blog/images/port-list-text.png)](port-list-text.png)

### Aperçu de la cartographie des données

Le projet d'intégration de données du service web MapForce prendra la liste des ports comme fichier d'entrée, enverra une requête REST pour chaque ensemble de coordonnées, et convertira les données JSON résultantes pour chaque port en une feuille de calcul Excel.

MapForce utilise des fichiers de schéma JSON, conformément aux spécifications de [json-schema.org](http://json-schema.org), pour modéliser les structures de données JSON utilisées pour la transformation. MapForce peut générer automatiquement un schéma JSON à partir d'un exemple de données JSON. Cela fonctionnera parfaitement pour le fichier unique port-list.json.

Nous avons également besoin d'un schéma JSON pour structurer les données renvoyées par le service web, ce qui est un peu plus complexe. Nous ne disposons pas d'un seul fichier .json contenant toutes les variations possibles des données obligatoires et facultatives dans la réponse.

Heureusement, XMLSpy peut générer un schéma JSON à partir de plusieurs documents d'exemple regroupés dans un dossier de projet XMLSpy.

[![Générer un schéma JSON à partir de plusieurs fichiers d'exemple au format XML dans XMLSpy](/blog/images/xmlspy-schema-gen.png)](xmlspy-schema-gen.png)

En ouvrant le schéma résultant dans la vue JSON Schema, on constate que l'objet "pluie" est facultatif. Cela est dû au fait qu'au moins un des fichiers d'instances de prévisions ne prévoyait aucune pluie pendant toute la période de 5 jours, ce qui explique pourquoi aucun objet "pluie" n'a été inclus dans la réponse.

[![Examinez le schéma dans la vue Schéma de XMLSpy](/blog/images/schema-view.png)](schema-view.png)

Nous pouvons utiliser ce schéma pour décrire les données de la réponse REST dans la configuration.

Sur l'image ci-dessous, nous avons commencé à établir la correspondance des données en intégrant le fichier "post-list.json" et un nouveau service web. Nous avons ajouté l'URL REST et nous avons défini les coordonnées de latitude et de longitude comme paramètres d'entrée pour construire la requête. Pour l'instant, le corps de la réponse ne possède pas de structure définie.

[![Ajouter la réponse REST à la cartographie de l'intégration des données du service web](/blog/images/port-mapping-1.png)](port-mapping-1.png)

Nous pouvons cliquer sur le corps du document pour ouvrir la boîte de dialogue "Structure de la réponse" et y affecter le schéma que nous avons généré dans XMLSpy

[![Ajouter le schéma JSON pour définir la structure des données de la réponse REST](/blog/images/response-structure-dialog.png)](response-structure-dialog.png)

Une fois le schéma attribué, tous les éléments du corps du document sont disponibles pour être mappés

[![Afficher chaque élément de la réponse REST dans la configuration de l'intégration des données du service web](/blog/images/port-mapping-2.png)](port-mapping-2.png)

Maintenant, nous pouvons ajouter le fichier Excel cible. On nous a fourni une feuille de calcul exemple à utiliser comme modèle, avec quelques styles de cellules et des graphiques, ainsi que des données fictives :

[![Un modèle de tableur pour le résultat final](/blog/images/sheet-1.png)](sheet-1.png)

Nous pouvons ajouter cette feuille de calcul à la configuration de l'intégration des données du service web, en la définissant comme la destination, mais nous devons encore identifier les cellules qui recevront les données

[![Ajouter la feuille de calcul à la cartographie des données](/blog/images/port-mapping-3.png)](port-mapping-3.png)

En cliquant sur le bouton situé à droite de l'entrée "Lignes 1, n=dyn", la fenêtre "Sélectionner la plage" s'ouvre. La ligne 10 contient les en-têtes de colonnes pour les données, nous voulons donc mapper le tableau principal à partir de la ligne 11 dans les colonnes A à K. Les colonnes ont des types de données différents, qui correspondent principalement à des types texte ou numériques dans la source JSON, et à des types de format dans Excel. La fenêtre "Sélectionner la plage" nous permet de définir précisément les cibles et les types de données :

[![Sélectionner la plage de cellules qui recevra les données](/blog/images/select-range-dialog.png)](select-range-dialog.png)

L'identification des noms de colonnes dans la boîte de dialogue "Sélectionner la plage" permet de les ajouter en tant que libellés dans la correspondance de sortie. Ensuite, nous pouvons définir la logique permettant d'associer chaque prévision à un fichier Excel distinct, comme illustré ci-dessous :

[![Créer des noms de fichiers uniques pour chaque feuille de calcul](/blog/images/port-mapping-4.png)](port-mapping-4.png)

Le nom de fichier, situé tout en haut de la feuille Excel cible, est défini sur <dynamic>, ce qui indique que la transformation générera des noms de fichiers. Chaque nom de fichier réel est construit à l'aide d'une fonction de concaténation qui intègre le nom de la ville provenant de la liste source, créant ainsi des noms comme forecast-Seattle.xlsx, etc.

Nous devons également nous assurer que le tableau de données principal de chaque fichier commence à la ligne 11. Pour ce faire, nous avons lié l'objet de niveau supérieur du tableau à la cible aux lignes 10, avec n=dynamique, et nous avons utilisé une fonction de numérotation automatique pour réinitialiser la ligne de départ à chaque fois que le nom du fichier change.

Chaque objet de liste dans la réponse sera associé à une nouvelle ligne dans la feuille de calcul Excel. Nous pouvons maintenant associer les éléments individuels de la réponse aux colonnes de cette ligne. Sur l'image ci-dessous, nous avons associé tous les éléments qui ne nécessitent aucune transformation supplémentaire.

[![Associer les éléments de la réponse REST aux cellules de la feuille de calcul](/blog/images/port-mapping-5.png)](port-mapping-5.png)

Pour les éléments directement liés, les types de données dans la réponse JSON correspondent directement aux types que nous avons spécifiés pour les colonnes dans la feuille de calcul. La valeur "Temp" dans les données JSON sources est numérique, et la colonne E dans la cible est également numérique. Le type de données pour la description dans la source est une chaîne de caractères, et la colonne B dans la cible est également une chaîne de caractères, et ainsi de suite.

Dans le schéma JSON de la réponse, nous avons constaté que l'objet "rain" (pluie) était facultatif. Si cet objet n'existe pas, nous souhaitons le remplacer par la valeur zéro. Cela peut être facilement réalisé en construisant une expression qui combine les fonctions "exists" (existe) et "if-else" (si-alors) :

[![Attribuer la valeur zéro en cas de données de précipitations manquantes.](/blog/images/port-mapping-6.png)](port-mapping-6.png)

Une limitation du format de données JSON est qu'il ne prend en charge que deux types de données : les chaînes de caractères et les nombres. Les types de données tels que les entiers et les dates, ou les formats spéciaux d'Excel comme les pourcentages et les données comptables, ne sont pas définis dans JSON. MapForce intègre des fonctions qui permettent de convertir facilement les données sources vers les types de données souhaités dans la structure de données cible. C'est ainsi que nous pouvons créer le format de date et heure que nous voulons dans la colonne A du tableau Excel.

L'élément "main.dt_text" dans les données JSON représente la date et l'heure sous forme de chaîne de caractères, par exemple : 2020-05-09 06:00:00. MapForce dispose d'une fonction "parse-dateTime" qui prend en entrée la chaîne de caractères et un modèle de format, et qui renvoie une valeur de date et d'heure. Cependant, il y a une complication supplémentaire : la chaîne "dt-txt" est exprimée dans le fuseau horaire GMT, et non dans l'heure locale de la ville pour laquelle la prévision est établie. Le décalage horaire local est indiqué dans l'élément "city.timezone" sous forme de secondes positives ou négatives.

Afin de maintenir la vue principale de cartographie simple, nous avons créé une fonction utilisateur appelée "calc-local-time". Cette fonction prend une chaîne de caractères et un décalage, et calcule l'heure locale. Cette fonction utilisateur est utilisée de la même manière qu'une fonction intégrée :

[![](/blog/images/port-mapping-7-2.png)](port-mapping-7-2.png)

La dernière étape pour finaliser la correspondance des données de l'intégration du service web consiste à combiner les noms des villes et des pays, puis à les ajouter à la ligne 1, colonne C

[![Ajouter la ville et le pays dans la première ligne](/blog/images/port-mapping-8.png)](port-mapping-8.png)

Voici une vue d'ensemble complète de la cartographie finale :

[![Une vue d'ensemble complète de la cartographie pour l'intégration de données de services web](/blog/images/port-mapping-complete.png)](port-mapping-complete.png)

Pour obtenir les documents Excel correctement formatés pour chaque ville, nous avons besoin d'un fichier Excel existant, déjà formaté, qui corresponde à chaque nom de fichier cible. Un fichier batch est un moyen rapide de créer les fichiers originaux en copiant de manière répétée le fichier Excel de référence, avec ses styles et ses formules.

### Résultats de l'intégration des données des services web

En cliquant sur le bouton "Sortie" situé en bas à gauche de la fenêtre de mappage, le processus de mappage est exécuté et les fichiers de sortie sont générés. Si Excel est installé sur la station de travail, l'aperçu du fichier Excel généré s'affiche dans la fenêtre "Sortie" :

[![La fenêtre de prévisualisation affiche le premier fichier Excel généré](/blog/images/port-forecast-output-1.png)](port-forecast-output-1.png)

La date, l'heure et les conditions météorologiques actuelles, ainsi que les résumés textuels situés à côté du graphique des précipitations, sont générés par des formules dans la feuille de calcul Excel. Les neuf fichiers de sortie ont été créés et nous pouvons sélectionner et prévisualiser n'importe quel fichier individuellement. Ci-dessous, vous trouverez la liste déroulante de sélection des fichiers et le septième fichier, qui contient les prévisions pour Seattle :

[![Le menu permet de prévisualiser un autre fichier de sortie](/blog/images/port-forecast-output-2.png)](port-forecast-output-2.png)

Les fonctionnalités d'Excel sont disponibles dans la fenêtre de prévisualisation. Par exemple, cette feuille de calcul utilise une fonction de défilement en écran divisé, avec une partie supérieure figée. Nous pouvons faire défiler la table de données principale jusqu'en bas pour voir précisément la quantité de précipitations prévue dans la dernière prévision. Notez les numéros de ligne sur le côté gauche :

[![Faire défiler les données de sortie dans la fenêtre de prévisualisation](/blog/images/port-forecast-output-3.png)](port-forecast-output-3.png)

Si le résultat est satisfaisant, nous pouvons enregistrer un ou tous les fichiers générés :

[![Sauvegarde des fichiers de sortie de l'intégration des données du service web](/blog/images/port-forecast-output-4.png)](port-forecast-output-4.png)

### Données intermédiaires

MapForce est conçu pour optimiser la conversion des données. Nous n'avons jamais eu à enregistrer, gérer ou manipuler explicitement les données JSON intermédiaires provenant de la réponse REST. L'exécution de cette transformation de données pour l'intégration de services web ne sauvegarde pas les données intermédiaires.

Si nous souhaitons ou avons besoin de conserver les données de la réponse JSON en plus des feuilles de calcul Excel finales, MapForce offre plusieurs options. Une possibilité consiste à créer une transformation en chaîne qui enregistre les données de la réponse sous forme de fichier JSON intermédiaire, en utilisant le même schéma que la réponse. Ensuite, nous pourrions mapper ce fichier JSON pour générer la sortie Excel. Une transformation en chaîne vous permet de prévisualiser et d'enregistrer les fichiers intermédiaires ainsi que le résultat final. L'image ci-dessous montre la liste des fichiers de sortie générée par une transformation en chaîne, avec l'un des fichiers JSON affiché en mode texte en arrière-plan :

[![Une méthode de mappage alternative pour l'intégration de données de services web, utilisant des données intermédiaires](/blog/images/port-forecast-output-5.png)](port-forecast-output-5.png)

### Intégration automatisée des données des services web

Notre scénario de flux de travail nécessiterait la mise à jour des prévisions quotidiennement. Nous pouvons enregistrer la configuration sous forme de fichier d'exécution pour MapForce Server, afin de permettre un [traitement automatisé](https://www.altova.com/fr/mapforce-server) par MapForce Server, ou bien la déployer directement sur FlowForce Server pour générer de nouvelles prévisions selon un calendrier automatisé. Une tâche FlowForce Server peut combiner des tâches d'intégration de données avec de multiples actions, notamment des actions système comme le déplacement de fichiers ou l'envoi d'e-mails, ou une tâche FlowForce Server peut [exécuter des flux de travail complexes](https://www.altova.com/fr/flowforceserver) qui peuvent transmettre des résultats et des paramètres pour déclencher d'autres tâches.

Regardez une courte [démonstration vidéo](https://www.altova.com/fr/mapforce/demos) de MapForce, ou [téléchargez une version d'essai gratuite](https://www.altova.com/fr/mapforce/download) qui comprend des tutoriels, une aide et de nombreux exemples pour vous aider à démarrer votre propre projet d'intégration de données JSON et de services web, ou pour répondre à d'autres besoins de mappage, de conversion et de transformation de données !
