Hierarchy

Het prefix hierarchy wordt gebruikt om een hiërarchietabel met bovenliggende-onderliggende objecten om te zetten in een tabel die bruikbaar is in een QlikView-gegevensmodel. Het prefix kan voor een LOAD- of SELECT-opdracht worden geplaatst en gebruikt het resultaat van de laadopdracht als invoer voor een tabeltransformatie.

De prefix maakt een uitgebreide knooppuntentabel, die normaliter hetzelfde aantal records bevat als de invoertabel, maar daarnaast wordt elk niveau in de hiërarchie ook nog een opgeslagen in een apart veld. Het padveld kan worden gebruikt in een boomstructuur.

Syntaxis:  

Hierarchy (NodeID, ParentID, NodeName, [ParentName], [PathSource], [PathName], [PathDelimiter], [Depth])(loadstatement | selectstatement) 

De invoertabel moet een aangrenzende knooppuntentabel zijn. Aangrenzende knooppuntentabellen zijn tabellen waarin elk record correspondeert met een knooppunt en een veld heeft dat de referentie naar het bovenliggende knooppunt bevat. In een dergelijke tabel wordt het knooppunt opgeslagen in slechts één record, maar kan het knooppunt wel meerdere onderliggende knooppunten hebben. De tabel kan natuurlijk aanvullende velden bevatten waarin kenmerken van de knooppunten worden beschreven.

Gewoonlijk heeft de interne tabel precies één record per knooppunt. In dat geval heeft de uitvoertabel hetzelfde aantal records. Soms zijn er echter knooppunten met meerdere bovenliggende knooppunten. Een knooppunt wordt dan gerepresenteerd door meerdere records in de invoertabel. In dat geval kan de uitvoertabel meer records hebben dan de invoertabel.

Alle knooppunten met een bovenliggende ID die niet is gevonden in de kolom node id (met inbegrip van knooppunten met ontbrekende bovenliggende ID) beschouwd worden als roots. Er worden dus alleen knooppunten geladen met een directe of indirecte verbinding met een root-knooppunt. Op deze wijze worden circulaire referenties voorkomen.

U kunt aanvullende velden met de naam van het bovenliggende knooppunt en het pad of de diepte van het knooppunt maken.

Argumenten:  

Argument Beschrijving
NodeID De naam van het veld dat de knooppunt-ID bevat. Dit veld moet bestaan in de invoertabel.
ParentID De naam van het veld dat de knooppunt-ID van het bovenliggende knooppunt bevat. Dit veld moet bestaan in de invoertabel.
NodeName De naam van het veld dat de naam van het knooppunt bevat. Dit veld moet bestaan in de invoertabel.
ParentName Een tekenreeks die wordt gebruikt als naam voor een nieuw veld ParentName. Als deze parameter wordt weggelaten, wordt dit veld niet gemaakt.
ParentSource De naam van het veld dat de naam van het knooppunt bevat dat wordt gebruikt om het knooppuntpad te bouwen. Optionele parameter. Als deze parameter wordt weggelaten, wordt NodeName gebruikt.
PathName Een tekenreeks die wordt gebruikt als naam voor het nieuwe veld Path. Hierin staat het pad van de root naar het knooppunt. Optionele parameter. Als deze parameter wordt weggelaten, wordt dit veld niet gemaakt.
PathDelimiter Een tekenreeks die wordt gebruikt als scheidingsteken in het nieuwe veld Path. Optionele parameter. Als deze parameter wordt weggelaten, wordt ‘/’ gebruikt.
Depth Een tekenreeks die wordt gebruikt als naam voor het nieuwe veld Depth. Hiermee wordt aangegeven wat de diepte van het knooppunt in de hiërarchie is. Optionele parameter. Als deze parameter wordt weggelaten, wordt dit veld niet gemaakt.

Voorbeeld:  

Hierarchy(NodeID, ParentID, NodeName, ParentName, NodeName, PathName, '\', Depth) LOAD * inline [

NodeID, ParentID, NodeName

1, 4, London

2, 3, Munich

3, 5, Germany

4, 5, UK

5, , Europe

];

Resultaat:

NodeID NodeName ParentID ParentName NodeName1 NodeName2 NodeName3 PathName Depth
5 Europe   - Europe - - Europe 1
3 Germany 5 Europe Europe Germany - Europe\Germany 2
2 Munich 3 Germany Europe Germany Munich Europe\Germany\Munich 3
4 UK 5 Europe Europe UK - Europe\UK 2
1 London 4 UK Europe UK London Europe\UK\London 3