Dans ce parcours d'apprentissage connecté, nous allons créer une chaîne qui illustre comment convertir un fichier XML en fichier CSV. Nous verrons également comment comparer des ensembles de données afin d'isoler les différences.
| Objectif d'apprentissage principal | Le connecteur XML |
| Objectifs d'apprentissage secondaires | Transformation tabulaire Filtres intelligents, changement de délimiteur et commandes de requête avancées |
| Conditions préalables | Configuration de la connexion au connecteur XML |
| Modèle de support | CLP | Accès aux données XML |
Étape 1 : Créer une chaîne
- Add a new Chain, and name the Chain: CLP | Accessing XML Data.
- Créez deux variables de chaîne comme suit :
- Under Chain Variables, click the plus sign (+) twice.
- Utilisez les noms et valeurs suivants pour les variables :
- Variable XML
- Name: cv-XML-Employee
- Value: https://cs-sftp-training-bucket.s3.amazonaws.com/cs-training/transformation-qs/employees.xml
- Variable CSV
- Name: cv-CSV-Employee
- Value: https://cs-sftp-training-bucket.s3.amazonaws.com/cs-training/transformation-qs/employee_detail.csv
- Variable XML
- Sauvez la chaîne.
Étape 2 : Récupérer les données au format CSV
Utilisez le connecteur HTTP pour récupérer les données relatives aux effectifs au format CSV. Dans les étapes suivantes, nous récupérerons des informations similaires sur les effectifs au format XML, puis nous comparerons les ensembles de données afin d'identifier les différences.
- Add a GET Command from the HTTP Connector to the Start node.
-
Configurez la commande en utilisant les valeurs suivantes :
Nom GET - Effectifs au format CSV Nom de l'utilisateur <leave blank> Mot de passe <leave blank> Certificat CA <leave blank> Certificat <leave blank> Clé privée du certificat <leave blank> Afficher la réponse Vérifié URL cv-CSV-Employee Chain Variable Chaîne de requête <leave blank> Type de contenu texte/csv Réponse <leave blank> - Sauvegarder la commande.
Étape 3 : Récupérer les données au format XML
Utilisez le connecteur HTTP pour récupérer les données relatives aux effectifs au format XML. Comme indiqué à l'étape 2, dans une étape ultérieure, nous comparerons l'ensemble de données XML à l'ensemble de données CSV afin d'identifier les différences.
- Add a GET Command from the HTTP Connector to the Chain.
- Connect the Start Node (GET - Headcount in CSV Format) to the GET Command.
-
Configurez la commande en utilisant les valeurs suivantes :
Nom GET - Effectifs en format XML Nom de l'utilisateur <leave blank> Mot de passe <leave blank> Certificat CA <leave blank> Certificat <leave blank> Clé privée du certificat <leave blank> Afficher la réponse Vérifié URL cv-XML-Employee Chain Variable Chaîne de requête <leave blank> Type de contenu application/xml Réponse <leave blank> - Sauvegarder la commande.
Étape 4 : Convertir le fichier XML en fichier délimité
Utiliser le connecteur XML pour convertir les données XML en format CSV, ce qui nous permet d'exploiter des commandes plus loin dans la chaîne qui attendent des données dans un format délimité.
- Add an Element List to CSV Command from the XML Connector to the Chain.
- Connect the GET - Headcount in XML Format Command to the Element List to CSV Command.
- Configurez la commande en utilisant les valeurs suivantes :
- For the Input File parameter, select the Response Output from the GET - Headcount in XML Format Command.
- Leave the Input Text parameter blank.
- For the Path to root parameter, enter the following envelope information:
/employee_data/employee - Mark the Preview Result parameter checkbox.
-
For the Columns section, click the Add button 12 times.
For each of the added columns, enter the name of the field from the data record previewed in the previous step in both the Column Name and XPath fields.
Example: emp_id⚠️ Le champ XPath est sensible à la casse et doit correspondre à la casse de l'enveloppe.
- Pour le paramètre Délimiteur de valeurs multiples, entrez une barre verticale (|).
- Sauvegarder la commande.
- Publier, exécuter et faire fonctionner la chaîne.
-
Review the Log tab of the Element List to CSV - All Employees Command node and confirm a list of employees is displayed.
⚠️ Ne sautez pas l'examen de l'exécution et des résultats de cette étape, car une copie de cette commande sera créée dans la chaîne et toute erreur devra ensuite être corrigée dans plusieurs instances de la commande.
Étape 5 : Transformer le fichier XML converti de délimité par des tabulations en délimité par des virgules
Utilisez le connecteur de transformation tabulaire pour convertir la sortie générée par la conversion XML d'un format délimité par des tabulations à un format délimité par des virgules.
- Add a Change Delimiter Command from the Tabular Transformation Connector to the Chain.
- Connect the Element List to CSV - All Employees Command to the Change Delimiter Command.
- Configurez la commande en utilisant les valeurs suivantes :
- Name: Change Delimiter - All Employees
- Input File: Converted File Output from the Element List to CSV - All Employees Command
- Input Delimiter: \t
- Output Delimiter: , (comma)
- Sauvegarder la commande.
Étape 6 : Comparer les ensembles de données CSV et XML pour identifier les différences
Use Advanced Query to systematically identify differences between the XML and native CSV data sets. Dans cet exemple, identifiez tous les enregistrements de l'ensemble de données XML qui sont différents ou manquants dans l'ensemble de données CSV. Les enregistrements supplémentaires trouvés dans l'ensemble de données CSV qui ne figurent pas dans l'ensemble de données XML ne seront pas identifiés par cet exercice.
- Add an Advanced Query Command from the Tabular Transformation Connector to the Chain.
- Connect the Change Delimiter - All Employees Command to the Advanced Query Command.
- Name the Command: Advanced Query - All Employees.
- In the Tables section, click the Add button to add a second tab.
- Pour la première table :
- Specify the CSV Result Output from the Change Delimiter - All Employees Command.
- Specify XML as the Table Name.
- Pour la deuxième table :
- Specify the Response Output from the GET - Headcount in CSV Format Command.
Specify CSV as the Table Name. - In the Query parameter, enter the following:
Select * from XML EXCEPT Select * from CSV - In the Input Delimiter and Output Delimiter fields, specify Comma.
- Check the Preview Results option.
- Specify the Response Output from the GET - Headcount in CSV Format Command.
- Pour la première table :
- Sauvegarder la commande.
- Publish, Execute, and Run the Chain.
-
Review the Log tab of the Advanced Query - All Employees Command node and confirm the employee IDs match the below for the records returned by the query.
ID de l’employé 01-6875791 10-4199621 38-3932553 63-0417180 78-3600453 85-6818050 97-2828467
Étape 7 : Ajouter un groupe de commande
Ajouter un groupe de commande à la chaîne pour mieux organiser les commandes. Bien que cette étape soit requise dans le cadre de cet exercice, il ne s'agit pas d'une exigence technique pour la chaîne. Cette étape vise simplement à illustrer la possibilité d'organiser les nœuds d'une chaîne.
- Add a Command Group to the Chain.
- Connect the GET - Headcount in XML Format Command to the In section of the Command Group.
- Click the Command Group and then select the dropper icon to change the Command color to red.
- Name the Group: Active Employees.
Étape 8 : Filtrer les données CSV pour les employés actifs uniquement
Utilisez un filtre intelligent pour ne conserver que les enregistrements des employés actifs. Lors de la définition du filtre, nous supposons que le fait que le champ terminé (termed) soit vide indique qu'un employé est actif.
- Add a Smart Filter Rows Command from the Tabular Transformation Connector to the Chain.
- Connect the Group Start from the Command Group to the Smart Filter Command.
- Configurez la commande en utilisant les valeurs suivantes :
- Name the Command: Smart Filter Rows - CSV Data - Active Employees.
- For the Input file parameter, select the Response Output from the GET - Headcount in CSV Format Command.
- Leave the Output file parameter blank.
- Specify Comma as the Delimiter.
- In the Filters section complete the following steps:
- Click the Add button on the Text filters.
- In the Column name parameter, enter termed.
- Check the Case Insensitive option.
- From the Condition dropdown, select Equals.
- In the Compare Text parameter, enter true.
- Check the Not option.
- Leave the Trim checkbox unchecked.
This filter will now identify any record where the field "termed" does not contain a value of true (that is, it contains "false" or is blank).
- Leave the Preview Result option marked.
- The Inverse option allows the Smart Filter to either keep (checked) or remove (unchecked) all rows that match the filter criteria. Dans cet exercice, nous voulons conserver toutes les lignes où le champ « termed » a une valeur de true ou blank.
To achieve this, mark (check) the Inverse checkbox. - Sauvegarder la commande.
Étape 8 : Filtrer les données CSV pour les employés actifs uniquement
Utilisez un filtre intelligent pour ne conserver que les enregistrements des employés actifs. Lors de la définition du filtre, nous partons du principe que si le champ terminated (« termed ») est vide, c’est qu’un employé est actif.
- Add a Smart Filter Rows Command from the Tabular Transformation Connector to the Chain.
- Connect the Group Start from the Command Group to the Smart Filter Command.
- Configurez la commande en utilisant les valeurs suivantes :
- Name the Command: Smart Filter Rows - CSV Data - Active Employees.
- For Input file, select the Response Output from the GET - Headcount in CSV Format Command.
- Leave the Output file parameter blank.
- Specify Comma as the Delimiter.
- In the Filters section,
- Click the Add button on the Text filters.
- In the Column name parameter, enter termed.
- Check the Case Insensitive option.
- From the Condition dropdown, select Equals.
- In the Compare Text parameter, enter true.
- Check the Not option.
- Leave the Trim checkbox unchecked.
This filter will now identify any record where the field "termed" does not contain a value of true (that is, it contains "false" or is blank).
- Leave the Preview Result checkbox marked (checked).
- The Inverse option allows the Smart Filter to either keep (checked) or remove (unchecked) all rows that match the filter criteria. Dans cet exercice, nous voulons conserver toutes les lignes dont le champ "termed" a la valeur "true" ou "blank". To achieve this, mark (check) the Inverse checkbox.
- Sauvegarder la commande.
Étape 9 : Filtrer les données XML lors de la conversion en données délimitées
Dans cette étape, nous filtrons les données XML tout en les convertissant dans un format délimité afin d'identifier uniquement les employés actifs. Cet ensemble de données sera ensuite comparé à l'ensemble de données CSV filtré afin d'identifier les différences.
- Copy the Element List to CSV - All Employees Command.
- Connect the Group Start from the Command Group to the Element List to CSV - All Employees (Copy) Command.
- Edit the Command, naming it: Element List to CSV - Active Employees.
- In the "Path to root" parameter, enter the following.
/employee_data/employee[termed!='true']
This will now identify any record where the field "termed" does not contain a value of true (that is, it contains "false" or is blank). - Sauvegarder la commande.
Étape 10 : Transformer les données XML filtrées en données délimitées par des virgules
Comme pour la liste complète des employés, la liste filtrée des employés actifs qui a été convertie de XML en liste délimitée par des tabulations doit être convertie en liste délimitée par des virgules.
- Copy the Change Delimiter - All Employees Command.
- Connect the Element List to CSV - Active Employees Command to the Element Change Delimiter - All Employees (Copy) Command.
- Configurez la commande en utilisant les valeurs suivantes.
- Name: Change Delimiter - Active Employees.
- Modify the Input file parameter to use the Converted File Output from the Element List to CSV - Active Employees Command.
- Sauvegarder la commande.
Étape 11 : Vérifier les différences avec les salariés actifs
Comme pour la liste complète des employés, la liste filtrée des employés actifs qui a été convertie de XML en liste délimitée par des tabulations doit être convertie en liste délimitée par des virgules.
- Copy the Advanced Query - All Employees Command.
- Connect the Out of the Command Group to the Advanced Query - All Employees (Copy) Command. La connexion de la commande Requête avancée - Tous les employés à la sortie de groupe garantit que tout ce qui est connecté au début du groupe se termine avant que la chaîne ne progresse vers les commandes de la sortie de groupe.
- Configurez la commande en utilisant les valeurs suivantes :
- Name: Advanced Query - Active Employees.
-
In the Tables section, modify the File parameter for both tables using the following values:
Tableau Fichier XML CSV Result Output from the Change Delimiter - Active Employees Command CSV Smart Filter Row Output from the Smart Filter Rows - Active Only, CSV Data Command
- Sauvegarder la commande.
Étape 12 : Tester l'exercice
Maintenant que la chaîne est terminée, testez le résultat.
- Publish the Chain.
- Click Execute and then select Run Chain.
- Once the Chain has completed its run, click the Advanced Query - Active Employees node.
- On the Outputs tab, confirm that 4 records were output.
-
Cliquez sur l'onglet Journaux et confirmez que les identifiants des employés correspondent aux enregistrements renvoyés par la requête.
ID de l’employé 01-6875791 63-0417180 78-3600453 85-6818050
To learn more about data transformation using Chains, check out the Connected Learning Paths - Transformation Introduction!