Het in kaart brengen van gestructureerde data met verbeterde knooppuntfuncties

We hebben eerder al gerapporteerd over ondersteuning voor knooppuntenfuncties die het verwerken van gestructureerde data vereenvoudigen door de noodzaak om een functie meerdere keren te kopiëren en plakken in een mapping te elimineren. Het herhalen van dezelfde functie is onnodig en maakt de lay-out van de mapping rommelig, waardoor het moeilijker wordt om de datamapping te begrijpen of aan te passen.

MapForce biedt ook aanvullende filters die beschikbaar zijn voor het definiëren van knooppuntenfuncties. Deze parameters stellen ontwikkelaars in staat om functies en standaardwaarden toe te passen op specifieke knooppunten, gebaseerd op door henzelf gedefinieerde criteria. Zo kunt u bijvoorbeeld een knooppuntfunctie toepassen op basis van metadata van het knooppunt, zoals de naam van het knooppunt, de lengte van het knooppunt, de precisie van het gegevenstype van het knooppunt, aangepaste annotaties voor het knooppunt, en meer.

Laten we eens kijken naar een visualisatie met verbeterde knooppuntfuncties.

De onderstaande datamapping is een voorbeeld van een functie van de node "PriceCalculation.mfd" die is geïnstalleerd met MapForc. Dit voorbeeld berekent de uiteindelijke verkoopprijs voor een lijst met artikelen, op basis van hun oorspronkelijke kosten en een opslagfactor. De brongegevens zijn een tekstbestand in CSV-formaat, en de uitvoer is een XML-bestand.

In deze mapping wordt een "node-functie" gedefinieerd en toegepast op het element "Articles" in het uitvoerbestand, evenals op de onderliggende elementen. Door dubbel te klikken op het vetgedrukte functie-icoon links van het "Articles"-element, opent u de definitie van de node-functie.

Het dropdownmenu "Toepassen op" linksboven geeft aan dat deze functie bedoeld is voor alle onderliggende elementen van "Artikel". Het gedeelte "Functieomschrijving" vertelt ons dat deze functie het metagegevens-element "node_fractionDigits" gebruikt als parameter voor de functie voor afronding van precisie. Als "node_fractionDigits" niet is gedefinieerd voor een van de onderliggende elementen, wordt in plaats daarvan de waarde nul gebruikt.

We kunnen een dieper inzicht krijgen in de functie door op de knop "Bewerken" te klikken, die zich bovenaan in het midden van de afbeelding staat. Dit opent de functie in een apart venster voor datamapping, vergelijkbaar met een door de gebruiker gedefinieerde functie:

Het mapping-item node_fractionDigits in de linkeronderhoek biedt een invoerwaarde voor de functie, gebaseerd op de structuur van de doelgegevens. Laten we dieper in de metadata van de node kijken om node_fractionDigits te vinden.

Definitie van knooppuntmetadata

De metadata die beschikbaar is voor elk gestructureerd databestand, is afkomstig van de definitie van de datastructuur zelf. In ons voorbeeld is het doel van de mapping een XML-document. Daarom wordt de metadata die beschikbaar is voor elke node gedefinieerd in het XML-schema.

De afbeelding hieronder toont het XML-schema voor prijsberekening in de grafische schemaweergave van XMLSpy:

Het XML-element "SalePrice", dat in het diagram is gemarkeerd, is gedefinieerd als een instantie van het type "Amount". Dit type is zelf een decimaal getal met maximaal 2 decimalen, zoals te zien is in het venster "Facets" rechtsonder. Daarom is de metadata "node_fractionDigits" voor de node "SalePrice" gelijk aan 2.

De beschikbare parameters voor de "node"-functie zijn altijd afhankelijk van het type gestructureerde databestand – bijvoorbeeld XML, een relationele database, een PDF-bestand, een CSV-bestand, enz. – en van de mate van detail die in de schema-definitie is opgenomen.

Het structureren van data met behulp van parameters van node-functies

Wanneer u een nieuwe knooppuntfunctie maakt, wordt u in eerste instantie een ruwe waarde en een resultaatwaarde getoond die niet met elkaar verbonden zijn. Klik op de blauwe knop "Knooppuntinstellingen toevoegen" om een parameter voor de knooppuntfunctie in te voegen. Hierdoor wordt het dialoogvenster "Knooppuntinstellingen" geopend, waar u een knooppuntparameter kunt selecteren:

Let op de optie voor gevallen waarin een bepaalde knoop geen ondersteuning biedt voor het geselecteerde metadatatype. In de mapping voor de prijsberekening wordt dit gedrag direct afgehandeld in de definitie van de knoopfunctie. De knoopfunctie wordt alleen toegepast op numerieke datatypes, en voor elke knoop waar het veld "fractionDigits" niet is gespecificeerd, levert de functie "substitute-missing" de waarde nul.

Het observeren van de uitvoering van de functie

We kunnen een pauzepunt instellen via het contextmenu dat verschijnt wanneer u met de rechtermuisknop op een van de knooppunten van het uitvoercomponent klikt, en we kunnen de ingebouwde MapForce-debugger gebruiken om de uitvoering van de functie te volgen.

In de volgende gedeeltelijke weergave is een breakpoint ingesteld op het veld "SalePrice". We hebben de mapping vanuit het menu "Debug" gestart, waarna de uitvoering werd onderbroken bij het breakpoint. De tussenliggende waarden zijn toegevoegd aan het hoofdvenster van de mapping.

We kunnen zien dat de laatste waarde voor "SalePrice" die door de mapping is berekend, 49.183323875 was. De knooppuntfunctie heeft deze uiteindelijke waarde afgerond naar 49.18.

De daadwerkelijke uitvoering van de knooppuntfunctie wordt niet weergegeven in het debugresultaat in het hoofdvenster, maar door te klikken in het venster "Berichten" wordt de knooppuntfunctie geopend, samen met alle tussenliggende waarden:

De voorbeelden die met MapForce worden geïnstalleerd, bevatten verschillende andere voorbeelden van datamappingen voor knooppunten. Het geïntegreerde help-systeem van MapForce bevat zelfs een stapsgewijze handleiding om een datamapping voor een knooppunt vanaf nul op te bouwen.

U kunt zelfs de voorbeeldmapping die hier beschreven staat aanpassen om zelf te zien hoe de output verandert. U kunt bijvoorbeeld het XML-schema bewerken om drie decimalen toe te staan, of de mapping wijzigen om de "node function" uit te laten voeren op de "Number"-node, het eerste kindelement van "Article", en vervolgens het nieuwe resultaat bekijken.

Om te zien hoe knooppunten in actie werken, bekijk deze demonstratievideo van MapForce.