In dit Aangesloten Leerpad zullen we een Ketting maken die illustreert hoe u een XML-bestand naar CSV kunt converteren. Ook zullen we onderzoeken hoe we datasets kunnen vergelijken om verschillen te isoleren.
| Primair leerdoel | De XML-connector |
| Secundaire leerdoelen | Tabulaire transformatie Slimme filters, scheidingsteken wijzigen en geavanceerde queryopdrachten |
| Vereisten | XML-connectorverbinding configureren |
| Ondersteunende sjabloon | CLP | XML-gegevens openen |
Stap 1: Maak een ketting
- Voeg een nieuwe Chain toe en geef de Chain een naam: CLP | XML-gegevens openen.
- Maak als volgt twee Chain-variabelen aan:
- Klik onder Chain Variables tweemaal op het plusteken (+).
- Gebruik de volgende namen en waarden voor de variabelen:
- XML Variabele
- Naam: cv-XML-Werknemer
- Waarde: https://cs-sftp-training-bucket.s3.amazonaws.com/cs-training/transformation-qs/employees.xml
- CSV Variabele
- Naam: cv-CSV-Werknemer
- Waarde: https://cs-sftp-training-bucket.s3.amazonaws.com/cs-training/transformation-qs/employee_detail.csv
- XML Variabele
- Red de ketting.
Stap 2: Gegevens ophalen in CSV-formaat
Gebruik de HTTP Connector om gegevens over headcount op te halen in CSV-formaat. In latere stappen zullen we vergelijkbare informatie over het aantal werknemers in XML-formaat ophalen en vervolgens de datasets vergelijken om verschillen vast te stellen.
- Voeg een opdracht GET van de HTTP Connector toe aan het knooppunt Start.
-
Configureer de opdracht met de volgende waarden:
Naam GET - Aantal werknemers in CSV-formaat Gebruikersnaam <laat leeg> Wachtwoord <laat leeg> CA-certificaat <laat leeg> Certificaat <laat leeg> Certificaat Privé Sleutel <laat leeg> Antwoord tonen Gecontroleerd URL cv-CSV-Werknemer Ketenvariabele Querystring <laat leeg> Type inhoud tekst/csv Reactie <laat leeg> - Sla de opdracht op.
Stap 3: Gegevens ophalen in XML-indeling
Gebruik de HTTP Connector om gegevens over headcount op te halen in XML-formaat. Zoals opgemerkt in stap 2, zullen we in een volgende stap de XML-dataset vergelijken met de CSV-dataset om verschillen vast te stellen.
- Voeg een GET opdracht van de HTTP Connector toe aan de ketting.
- Verbind het Startknooppunt (GET - Headcount in CSV-indeling) met het commando GET.
-
Configureer de opdracht met de volgende waarden:
Naam GET - Hoofdaantal in XML-indeling Gebruikersnaam <laat leeg> Wachtwoord <laat leeg> CA-certificaat <laat leeg> Certificaat <laat leeg> Certificaat Privé Sleutel <laat leeg> Antwoord tonen Gecontroleerd URL cv-XML-Werknemer Ketenvariabele Querystring <laat leeg> Type inhoud toepassing/xml Reactie <laat leeg> - Sla de opdracht op.
Stap 4: Het XML-bestand converteren naar Delimited
Gebruik de XML Connector om de XML-gegevens te converteren naar een CSV-formaat, zodat we later in de keten gebruik kunnen maken van opdrachten die gegevens in een afgebakend formaat verwachten.
- Voeg een Element List to CSV opdracht van de XML Connector toe aan de Chain.
- Verbind de opdracht GET - Hoofdaantal in XML-indeling met de opdracht Element List to CSV.
- Configureer de opdracht met de volgende waarden:
- Selecteer voor de parameter Input File de parameter Response Output van de opdracht GET - Headcount in XML Format.
- Laat de parameter Input Text leeg.
- Voer voor de parameter Path to root de volgende envelop-informatie in:
/employee_data/employee - Schakel het selectievakje Preview Result in.
-
Klik voor het gedeelte Columns 12 keer op de knop Add.
Voer voor elk van de toegevoegde kolommen de naam in van het veld uit de gegevensrecord die in de vorige stap is bekeken in zowel de velden Column Name als XPath.
Voorbeeld: emp_id⚠️ Het XPath-veld is hoofdlettergevoelig en moet overeenkomen met de hoofdletter van de envelop.
- Voer voor de parameter Scheidingsteken tussen meerdere waarden een pijp (|) in.
- Sla de opdracht op.
- Publiceer, voer uit en voer de ketting uit.
-
Bekijk het tabblad Log van het opdrachtknooppunt Element List to CSV - All Employees en controleer of er een lijst met werknemers wordt weergegeven.
⚠️ Sla de uitvoering en controle van de resultaten van deze stap niet over, aangezien er een kopie van deze opdracht in de keten wordt gemaakt en eventuele fouten vervolgens in meerdere instanties van de opdracht moeten worden gecorrigeerd.
Stap 5: Verander de geconverteerde XML van Tab-delimited in Comma-delimited
Gebruik de Tabular Transformation Connector om de uitvoer die wordt gegenereerd door de XML-conversie, om te zetten van een tabel-gelimiteerd formaat naar een komma-gelimiteerd formaat.
- Voeg een opdracht Delimiter wijzigen van de Tabular Transformation Connector toe aan de ketting.
- Verbind de opdracht Element List to CSV - All Employees met de opdracht Change Delimiter.
- Configureer de opdracht met de volgende waarden:
- Naam: Delimiter wijzigen - Alle werknemers
- Invoerbestand: Geconverteerd bestand Uitvoer van de Elementenlijst naar CSV - Alle werknemers Opdracht
- Scheidingsteken invoer: \t
- Uitgang Scheidingsteken:, (komma)
- Sla de opdracht op.
Stap 6: Vergelijk de CSV- en XML-datasets om verschillen vast te stellen
Gebruik Advanced Query om systematisch verschillen te identificeren tussen de XML en native CSV gegevenssets. Identificeer in dit voorbeeld alle records in de XML-dataset die verschillen van of ontbreken in de CSV-dataset. Eventuele extra records die in de CSV-dataset worden gevonden en niet in de XML-dataset, worden door deze oefening niet geïdentificeerd.
- Voeg een Advanced Query opdracht van de Tabular Transformation Connector toe aan de ketting.
- Verbind de opdracht Delimiter wijzigen - alle werknemers met de opdracht Geavanceerde query.
- Geef de opdracht een naam: Geavanceerde query - Alle werknemers.
- Klik in het gedeelte Tabellen op de knop Toevoegen om een tweede tabblad toe te voegen.
- Voor de eerste tabel:
- Geef de uitvoer op CSV-resultaat van de opdracht Scheidingsteken wijzigen - alle werknemers.
- Geef XML op als de Tabelnaam.
- Voor de tweede tabel:
- Geef de Response Output op van de opdracht GET - Headcount in CSV-indeling.
Geef CSV op als de Tabelnaam. - Voer in de parameter Query het volgende in:
Selecteer * uit XML EXCEPT Selecteer * uit CSV - Geef in de velden Input Delimiter en Output Delimiter Comma op.
- Vink de optie Voorbeeldresultaten aan.
- Geef de Response Output op van de opdracht GET - Headcount in CSV-indeling.
- Voor de eerste tabel:
- Sla de opdracht op.
- Publiceer, voer uit en voer de ketting uit.
-
Bekijk het tabblad Log van het opdrachtknooppunt Geavanceerde query - Alle werknemers en controleer of de ID's van de werknemers overeenkomen met de onderstaande voor de records die door de query zijn geretourneerd.
Werknemer ID 01-6875791 10-4199621 38-3932553 63-0417180 78-3600453 85-6818050 97-2828467
Stap 7: Een commandogroep toevoegen
Voeg een opdrachtgroep toe aan de ketting om opdrachten beter te organiseren. Hoewel deze stap vereist is voor deze oefening, is dit geen technische vereiste voor de Chain. Deze stap dient alleen ter illustratie van de mogelijkheid om knooppunten van een Chain te organiseren.
- Voeg een Commandogroep toe aan de ketting.
- Verbind de opdracht GET - Headcount in XML met het gedeelte In van de opdrachtgroep.
- Klik op de Commandogroep en selecteer vervolgens het pipetpictogram om de Commandokleur te wijzigen in rood.
- Geef de groep een naam: Actieve werknemers.
Stap 8: CSV-gegevens filteren op alleen actieve werknemers
Gebruik een Smart Filter om alleen de werknemerrecords te bewaren waarin de werknemer actief is. Bij het definiëren van het filter gaan we ervan uit dat het veld beëindigd (termed) leeg aangeeft dat een werknemer actief is.
- Voeg een opdracht Smart Filter Rows van de Tabular Transformation Connector toe aan de ketting.
- Verbind de Group Start van de Command Group met de Smart Filter Command.
- Configureer de opdracht met de volgende waarden:
- Geef de opdracht een naam: Smart Filter Rows - CSV Data - Actieve werknemers.
- Selecteer voor de parameter Invoerbestand de parameter Antwoorduitvoer van de opdracht GET - Headcount in CSV-indeling.
- Laat de parameter Uitvoer bestand leeg.
- Geef Komma op als scheidingsteken .
- Voer in het gedeelte Filters de volgende stappen uit:
- Klik op de knop Add op de filters Text.
- Voer in de parameter Kolomnaam de term in.
- Vink de optie Case Insensitive aan.
- Selecteer in de vervolgkeuzelijst Voorwaarde Gelijk aan.
- Voer in de parameter Vergelijk tekst true in.
- Vink de optie Niet aan.
- Laat het selectievakje Trim uitgeschakeld.
Dit filter zal nu alle records identificeren waar het veld "termed" geen waarde bevat van true (dat wil zeggen, het bevat "false" of is leeg).
- Laat de optie Voorbeeldresultaat ingeschakeld.
- Met de optie Inverse kan het slimme filter alle rijen die aan de filtercriteria voldoen behouden (aangevinkt) of verwijderen (niet aangevinkt). In deze oefening willen we alle rijen behouden waarin het veld "termed" de waarde true of blanco heeft.
Om dit te bereiken, vinkt u het selectievakje Inverse aan. - Sla de opdracht op.
Stap 8: CSV-gegevens filteren op alleen actieve werknemers
Gebruik een Smart Filter om alleen de werknemerrecords te bewaren waarin de werknemer actief is. Bij het definiëren van het filter gaan we ervan uit dat het veld beëindigd ("termed") leeg aangeeft dat een werknemer actief is.
- Voeg een opdracht Smart Filter Rows van de Tabular Transformation Connector toe aan de ketting.
- Verbind de Group Start van de Command Group met de Smart Filter Command.
- Configureer de opdracht met de volgende waarden:
- Geef de opdracht een naam: Smart Filter Rows - CSV Data - Actieve werknemers.
- Selecteer voor Invoerbestand de responsuitvoer van de opdracht GET - Headcount in CSV-indeling.
- Laat de parameter Uitvoer bestand leeg.
- Geef Komma op als scheidingsteken .
- In de sectie Filters,
- Klik op de knop Add op de filters Text.
- Voer in de parameter Kolomnaam de term in.
- Vink de optie Case Insensitive aan.
- Selecteer in de vervolgkeuzelijst Voorwaarde Gelijk aan.
- Voer in de parameter Vergelijk tekst true in.
- Vink de optie Niet aan.
- Laat het selectievakje Trim uitgeschakeld.
Dit filter zal nu alle records identificeren waar het veld "termed" geen waarde bevat van true (dat wil zeggen, het bevat "false" of is leeg).
- Laat het selectievakje Preview Result ingeschakeld (aangevinkt).
- Met de optie Inverse kan het slimme filter alle rijen die aan de filtercriteria voldoen behouden (aangevinkt) of verwijderen (niet aangevinkt). In deze oefening willen we alle rijen behouden waarin het veld met de term de waarde waar of leeg heeft. Om dit te bereiken, vinkt u het selectievakje Inverse aan.
- Sla de opdracht op.
Stap 9: XML-gegevens filteren tijdens het converteren naar Delimited
In deze stap filteren we de XML-gegevens tijdens het converteren naar een afgebakend formaat om alleen actieve werknemers te identificeren. Deze dataset wordt vervolgens vergeleken met de gefilterde CSV-dataset om verschillen vast te stellen.
- Kopieer de Elementenlijst naar CSV - Alle werknemers Opdracht.
- Verbind de opdracht Group Start van de opdrachtgroep met de opdracht Element List to CSV - All Employees (Copy).
- Bewerk de opdracht en geef deze een naam: Elementenlijst naar CSV - Actieve werknemers.
- Voer in de parameter "Pad naar root" het volgende in.
/employee_data/employee[termed!='true']
Hiermee wordt nu elke record geïdentificeerd waarbij het veld "termed" geen waarde true bevat (dat wil zeggen, het bevat "false" of is leeg). - Sla de opdracht op.
Stap 10: De gefilterde XML-gegevens veranderen in door komma's gescheiden gegevens
Net als bij het volledige werknemersrooster, moet het gefilterde actieve werknemersrooster dat geconverteerd is van XML naar tab-delimited, geconverteerd worden naar comma-delimited.
- Kopieer de opdracht Delimiter wijzigen - Alle werknemers.
- Verbind de opdracht Element List to CSV - Active Employees met de opdracht Element Change Delimiter - All Employees (Copy).
- Configureer de opdracht met de volgende waarden.
- Naam: Delimiter wijzigen - Actieve werknemers.
- Wijzig de parameter Invoerbestand om het geconverteerde bestand te gebruiken uitvoer van de opdracht Element List to CSV - Active Employees.
- Sla de opdracht op.
Stap 11: Controleer op verschillen met actieve werknemers
Net als bij het volledige werknemersrooster, moet het gefilterde actieve werknemersrooster dat geconverteerd is van XML naar tab-delimited, geconverteerd worden naar comma-delimited.
- Kopieer de opdracht Geavanceerde query - Alle werknemers.
- Verbind de Out van de opdrachtgroep met de opdracht Geavanceerde query - Alle werknemers (Kopiëren). Door de opdracht Advanced Query - All Employees (Geavanceerde zoekopdracht - Alle werknemers) aan de Group Out (Groepsuitgang) te koppelen, zorgt u ervoor dat alles wat met de Group Start (Groepsbegin) verbonden is, beëindigd wordt voordat de keten verdergaat met de opdrachten in de Group Out (Groepsuitgang).
- Configureer de opdracht met de volgende waarden:
- Naam: Geavanceerde query - Actieve werknemers.
-
Wijzig in het gedeelte Tabellen de parameter Bestand voor beide tabellen met de volgende waarden:
Tabel Bestand XML CSV Resultaatuitvoer van de opdracht Scheidingsteken wijzigen - Actieve werknemers CSV Smart Filter-rij uitvoer van de Smart Filter-rijen - Alleen actief, CSV-gegevensopdracht
- Sla de opdracht op.
Stap 12: De oefening testen
Nu de Chain compleet is, kunt u het resultaat testen.
- Publiceer de keten.
- Klik op Uitvoeren en selecteer vervolgens Keten uitvoeren.
- Zodra de Chain is uitgevoerd, klikt u op het knooppunt Advanced Query - Active Employees.
- Bevestig op het tabblad Outputs dat er 4 records zijn uitgevoerd.
-
Klik op het tabblad Logs en bevestig dat de werknemer-ID's overeenkomen met de onderstaande voor de records die door de query zijn geretourneerd.
Werknemer ID 01-6875791 63-0417180 78-3600453 85-6818050
Om meer te leren over datatransformatie met behulp van Chains, kunt u de Connected Learning Paths - Transformation Introduction bekijken!