Cartographie des données structurées avec des fonctions de nœud améliorées

Nous avions déjà signalé précédemment la fonctionnalité de support des fonctions de nœud qui simplifie la transformation de données structurées en éliminant la nécessité de copier-coller une fonction plusieurs fois dans une transformation. La répétition inutile de la même fonction encombre la structure de la transformation et rend la compréhension ou la modification de la transformation de données plus difficiles.

MapForce propose également des filtres supplémentaires pour la définition des fonctions des nœuds. Ces paramètres permettent aux développeurs d'appliquer des fonctions et des valeurs par défaut à des nœuds spécifiques, en fonction de critères définis par l'utilisateur. Par exemple, vous pouvez appliquer une fonction à un nœud en fonction de ses métadonnées, telles que le nom du nœud, sa longueur, la précision du type de données du nœud, des annotations personnalisées, et bien plus encore.

Examinons une représentation avec des fonctions de nœuds améliorées.

La correspondance de données présentée ci-dessous est un exemple de fonction de nœud PriceCalculation.mfd, installée avec MapForc. Cet exemple calcule le prix de vente final pour une liste d'articles, en se basant sur leur coût initial et un coefficient de marge. Les données sources sont un fichier texte au format CSV, et la sortie est un fichier XML.

Dans cette configuration, une fonction de nœud est définie et appliquée à l'élément "Articles" dans le fichier de sortie, ainsi qu'à ses éléments enfants. Un double-clic sur l'icône de la fonction, en gras, située à gauche de l'élément "Articles", permet d'ouvrir la définition de cette fonction de nœud.

Le menu déroulant "Appliquer à" situé en haut à gauche indique que cette fonction est conçue pour s'appliquer à tous les éléments enfants de l'élément "Article". La section "Description de la fonction" nous informe que cette fonction utilise l'élément de métadonnées du nœud, "node_fractionDigits", comme paramètre pour la fonction d'arrondi. Si "node_fractionDigits" n'est pas défini pour un élément enfant, la valeur zéro sera utilisée à la place.

Nous pouvons obtenir une perspective plus approfondie de la fonction de nœud en cliquant sur le bouton "Modifier" qui apparaît en haut au centre de l'image ci-dessus. Cela ouvre la fonction dans une fenêtre de mappage de données dédiée, dans une vue similaire à celle d'une fonction définie par l'utilisateur :

L'élément de configuration "node_fractionDigits", situé en bas à gauche, fournit une valeur d'entrée à la fonction, en fonction de la structure des données cibles. Examinons plus en détail les métadonnées du nœud pour localiser "node_fractionDigits".

Définition des métadonnées des nœuds

Les métadonnées disponibles pour tout fichier de données structurées proviennent de la définition même de la structure des données. Dans notre exemple, le composant de destination de la correspondance est un document XML. Par conséquent, les métadonnées disponibles pour chaque nœud sont définies dans le schéma XML.

L'image ci-dessous présente le schéma XML de calcul de prix dans l'interface graphique XMLSpy

L'élément XML "SalePrice" mis en évidence dans le diagramme est défini comme une instance du type "Amount", qui est lui-même un nombre décimal avec un maximum de 2 chiffres après la virgule, comme on peut le constater dans la fenêtre "Facets" en bas à droite. Par conséquent, la métadonnée "node_fractionDigits" pour le nœud "SalePrice" est de 2.

Les paramètres de la fonction de nœud disponibles pour tout fichier de données structurées dépendront toujours du type de données – XML, base de données relationnelle, PDF, fichier CSV, etc. – et du niveau de détail inclus dans la définition du schéma.

Cartographier les données structurées à l'aide de paramètres de fonctions Node.js

Lorsque vous créez une nouvelle fonction de nœud, vous verrez d'abord une valeur brute et une valeur de résultat qui ne sont pas liées. Cliquez sur le bouton bleu "Ajouter les paramètres du nœud" pour insérer un paramètre de fonction de nœud. Cela ouvre la fenêtre "Paramètres du nœud", où vous pouvez sélectionner un paramètre de nœud :

Notez l'option disponible pour les cas où un nœud particulier ne prend pas en charge le type de métadonnées sélectionné. Dans la configuration du calcul des prix, ce comportement est géré directement dans la définition de la fonction du nœud. La fonction du nœud n'est appliquée qu'aux types de données numériques, et pour tout nœud où le paramètre fractionDigits n'est pas spécifié, la fonction substitute-missing fournit la valeur zéro à la place.

Observer l'exécution de la fonction nœud

Nous pouvons définir un point d'arrêt à partir du menu contextuel qui s'affiche en faisant un clic droit sur n'importe quel nœud du composant de sortie, et utiliser le débogueur intégré de MapForce pour observer l'exécution de la fonction.

Dans la vue partielle ci-dessous, le point d'arrêt est défini sur le champ "SalePrice". Nous avons exécuté le mappage depuis le menu Débogage, et l'exécution s'est arrêtée au point d'arrêt, avec les valeurs intermédiaires affichées dans la fenêtre de mappage principale.

On peut constater que la dernière valeur de "SalePrice" calculée par la fonction de mappage était de 49,183323875. La fonction du nœud a arrondi cette valeur finale à 49,18.

L'exécution réelle de la fonction du nœud n'est pas affichée dans les résultats du débogage dans la fenêtre de mappage principale, mais en cliquant dans la fenêtre des messages, la fonction du nœud s'ouvre avec toutes les valeurs intermédiaires :

Les exemples installés avec MapForce comprennent plusieurs autres exemples de mappages de données pour les fonctions de nœud. Le système d'aide intégré de MapForce inclut même un tutoriel étape par étape pour créer un mappage de fonction de nœud à partir de zéro.

Vous pouvez même modifier la correspondance d'exemple décrite ici pour constater par vous-même comment la sortie change. Par exemple, vous pourriez modifier le schéma XML pour autoriser trois chiffres après la virgule, ou modifier la correspondance pour permettre à la fonction de nœud de s'exécuter sur le nœud "Number", qui est le premier enfant de l'élément "Article", et examiner le nouveau résultat.

Pour voir les fonctions des nœuds en action, consultez cette vidéo de démonstration de MapForce.