---
title: "Validation et débogage des transformations de données"
date: "2022-11-30"
categories: 
  - "data-integration"
  - "tools"
tags: 
  - "data-integration"
  - "data-mapping"
  - "data-mapping-debugger"
  - "data-mapping-validation"
  - "mapforce"
description: Découvrez comment valider et déboguer les transformations de données à l'aide de MapForce. Cet article explore les techniques permettant de garantir la précision de la cartographie et de l'intégration des données.
---
Status: #blog

Tags:  #data-integration #data-mapping #data-mapping-debugger #data-mapping-validation #mapforce

Categories: [data-integration](/blog/fr/category/data-integration.md) | [etl](/blog/fr/category/etl.md)
# Validation et débogage des transformations de données

Les développeurs de logiciels et les autres professionnels des données ont souvent besoin de transformer des données d'un format à un autre. Ces transformations peuvent être de simples conversions directes, ou nécessiter des manipulations plus complexes. Par exemple, il est parfois nécessaire de créer des relations lors de l'importation de fichiers CSV plats dans une base de données, ou les données sources peuvent devoir être divisées pour correspondre au format cible, comme dans le cas du nom complet par rapport au prénom, au deuxième prénom (le cas échéant), au nom de famille et à un suffixe éventuel. La validation de la transformation des données est essentielle pour éviter la perte ou la corruption des données.

Dans un article précédent, publié sur.. [Intégration des données des services web](https://www.altova.com/blog/web-service-data-integration/), Nous avons combiné une valeur de chaîne de caractères représentant l'heure GMT avec un décalage numérique en secondes afin de générer l'heure locale utilisée pour les prévisions météorologiques. Nous avons créé une fonction utilisateur qui effectue toutes les étapes nécessaires pour réaliser cette opération. MapForce intègre un débogueur de mappage de données interactif et puissant qui permet de suivre et de valider facilement cette transformation. Examinons maintenant son fonctionnement.

![Un développeur de logiciels travaillant sur un ordinateur](/blog/images/Mapforce_debug_blog_1.jpg)

<!--more-->

Voici la fonction utilisateur "calc-local-time" dans notre projet de transformation de données. Comme vous pouvez le constater, MapForce prend en charge la transformation des données sans programmation, grâce à une interface visuelle et intuitive par glisser-déposer.

[![Une fonction utilisateur pour calculer l'heure locale dans le projet de transformation de données](/blog/images/data-mapping-1-2.png)](data-mapping-1-2.png)

La fonction accepte `dt_txt`, qui est une chaîne de caractères représentant une date et une heure au format AAAA-MM-JJ HH:MM:SS, ainsi que la valeur numérique du fuseau horaire, qui correspond au décalage par rapport au temps universel coordonné (UTC) pour le lieu de la prévision, exprimé en secondes.

Une fois les données transformées, le résultat de la fonction est affiché dans la colonne A d'une feuille de calcul Excel. Dans cette feuille de calcul, le format de la colonne A est défini comme étant une date, et ce format inclut l'heure, comme dans l'exemple suivant : 20/05/2020 16:00.

En double-cliquant sur l'en-tête de la fonction utilisateur, celle-ci se développe pour afficher les opérations individuelles qu'elle contient

[![Les opérations incluses dans la fonction utilisateur permettant de calculer l'heure locale](/blog/images/calc-local-time-1.png)](calc-local-time-1.png)

Les deux valeurs d'entrée se trouvent à droite, et la valeur de sortie finale, étiquetée A, se trouve tout à gauche. Pour simplifier, la fonction ajoute les secondes correspondant au fuseau horaire à la date et à l'heure contenues dans la variable dt_txt afin de calculer l'heure locale. MapForce inclut une fonction intégrée de manipulation de dates et d'heures qui effectue cette opération, comme on peut le voir sur l'image ci-dessus, juste à gauche de la valeur de sortie A. Mais rien n'est aussi simple qu'il n'y paraît ! Les valeurs d'entrée reçues du service web sont dans différents formats et doivent être adaptées au format et à la syntaxe de la fonction de manipulation de dates et d'heures.

### Valider la transformation des données à l'aide du débogueur MapForce

Nous pouvons utiliser MapForce [débogueur de transformation de données](https://www.altova.com/fr/mapforce#data_mapping_debugger) pour suivre l'exécution de la fonction utilisateur et s'assurer qu'elle produit le résultat souhaité. Tout d'abord, nous allons définir un point d'arrêt de débogage en cliquant avec le bouton droit sur le champ de saisie de la zone horaire :

[![Valider la transformation des données à l'aide d'un point d'arrêt dans le débogueur](/blog/images/debug-1.png)](debug-1.png)

Plusieurs fenêtres d'aide au débogage sont ouvertes, et le processus de transformation se poursuit jusqu'à ce que le point d'arrêt soit atteint. La valeur traitée au point d'arrêt est mise en évidence :

[![Le débogage de la transformation des données s'arrête au point d'arrêt](/blog/images/debug-2.png)](debug-2.png)

Nous proposons plusieurs options pour poursuivre l'exécution. L'option "Pas minimal" offre la vue la plus détaillée de chaque étape de transformation des données.

[![Options de pas à pas du débogueur dans la barre d'outils de MapForce](/blog/images/debug-3.png)](debug-3.png)

Cette commande divise une étape et s'arrête généralement deux fois pour chaque connexion : une fois lorsque la source produit une valeur et une fois lorsque la cible la consomme. En cliquant de manière répétée sur "Étape minimale", l'exécution de la transformation continue, ce qui nous permet de voir précisément ce qui se passe lorsque la fonction calc-local-time est exécutée

[![Exécution pas à pas de la fonction définie par l'utilisateur](/blog/images/debug-4.png)](debug-4.png)

Au fur et à mesure de l'exécution, les valeurs de chaque connexion sont ajoutées à la fenêtre.

La fonction intégrée `datetime-add` requiert une valeur de type date et heure pour le premier argument, et une chaîne de caractères spécifiant la période de temps à ajouter comme deuxième argument. Dans l'image ci-dessous, nous avons suivi le processus jusqu'à la production de la valeur de sortie. Les entrées de la fonction `datetime-add` et le résultat final produit sont mis en évidence :

[![Cliquez à nouveau pour afficher le résultat de la fonction](/blog/images/debug-5.png)](debug-5.png)

La valeur de décalage initiale pour les secondes est de 28 800 secondes, ce qui équivaut à huit heures. Le résultat obtenu est donc huit heures plus tard que l'heure de référence dt_txt, ce qui confirme la validité de la sortie.

### En tenant compte d'autres cas

Le décalage par rapport au temps GMT ne sera positif que pour les endroits situés à l'est du méridien de Greenwich. Les endroits situés à l'ouest du méridien de Greenwich devraient avoir un décalage négatif. En d'autres termes, New York est située à l'ouest de Londres, et l'heure locale est antérieure. Pékin est située à l'est du méridien de Greenwich, et l'heure locale est postérieure.

Nous devons vérifier le fonctionnement de la fonction "calc-local-time" dans le cas où le décalage de fuseau horaire est négatif.

Il existe plusieurs façons de procéder. Notre liste de villes contient des localités situées à l'est du fuseau horaire GMT et d'autres à l'ouest. Nous pourrions continuer l'exécution étape par étape jusqu'à rencontrer une localité dont le fuseau horaire est négatif.

[![Vue de la liste des villes à saisir dans le fichier d'entrée pour la correspondance des données du service Eb](/blog/images/port-list-grid-1.png)](port-list-grid-1.png)

Le service web renvoie 40 prévisions pour chaque ville, ce qui signifie qu'il serait fastidieux de consulter les prévisions pour les quatre premières villes.

Nous pourrions modifier la liste des villes en y ajoutant une nouvelle ville située dans l'hémisphère occidental en haut de la liste, ou nous pourrions créer un nouveau fichier d'entrée pour un cas de test. Dans de nombreuses situations, c'est une stratégie de test tout à fait raisonnable.

Ou bien, nous pouvons définir une condition de point d'arrêt. Si nous pouvons configurer le point d'arrêt pour qu'il s'active uniquement lorsque la valeur rencontrée est négative, nous pouvons continuer avec notre fichier d'entrée initial. Ce sera le moyen le plus rapide pour parvenir à une conclusion finale.

Pour revenir à la configuration des données, nous cliquons avec le bouton droit de la souris sur le point d'arrêt afin de modifier ses propriétés :

[![Modifier les propriétés du point d'arrêt](/blog/images/breakpoint-props-1.png)](breakpoint-props-1.png)

Cela ouvre une fenêtre de dialogue où nous pouvons définir une propriété pour rendre le point d'arrêt conditionnel. L'image ci-dessous illustre la condition qui permet de suspendre l'exécution si la valeur du fuseau horaire est négative :

[![Boîte de dialogue des propriétés du point d'arrêt pour la validation des transformations de données](/blog/images/breakpoint-props-2.png)](breakpoint-props-2.png)

Maintenant, nous pouvons relancer le processus de conversion en mode débogage. Les premières villes de la liste d'entrée, situées toutes à l'est du fuseau horaire GMT, sont traitées. Lorsque la première valeur de fuseau horaire négative est rencontrée, le point d'arrêt est déclenché et l'exécution est interrompue.

[![La condition de point d'arrêt est atteinte et l'exécution est interrompue](/blog/images/debug-6.png)](debug-6.png)

En utilisant la même méthode d'incrémentation décrite ci-dessus, nous pouvons suivre l'évolution de la valeur négative au fur et à mesure que la fonction calc-local-time effectue son traitement.

[![Valider la transformation des données en suivant l'exécution pour une valeur d'entrée négative](/blog/images/debug-7.png)](debug-7.png)

La valeur du fuseau horaire, qui est de -25 200 secondes, est convertie en une chaîne de caractères. Ensuite, la fonction de concaténation intégrée ajoute des caractères au début et à la fin pour construire la chaîne de caractères représentant la durée, qui sera utilisée par la fonction "datetime-add".

Ajouter une valeur négative équivaut à une soustraction, mais à ce stade, la syntaxe pour la durée n'est pas tout à fait correcte. Le signe moins (tiret) doit être le premier caractère de la chaîne de caractères représentant la durée. Ainsi, la fonction de remplacement recherche la chaîne pour trouver "PT-" et, si elle le trouve, la remplace par "-PT".

La valeur de 25 200 secondes équivaut à sept heures. En soustrayant sept heures à la valeur d'entrée 2020-05-23T00:00:00, on obtient 2020-05-22T17:00:00, soit le 22 mai 2020 à 17h00. Nous avons maintenant validé la fonction utilisateur pour les cas avec des décalages positifs et négatifs.

Que vous validiez la transformation de données pour vérifier son exactitude ou que vous recherchiez la cause d'un résultat inattendu, [débogage de la conversion de données](https://www.altova.com/fr/mapforce#data_mapping_debugger) Et la fonctionnalité de transformation dans MapForce offre une compréhension approfondie du fonctionnement interne précis des projets d'intégration de données et d'ETL, d'une manière qui n'était jamais possible auparavant, même avec des produits de cartographie de données beaucoup plus coûteux.

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 !
