Hierarchy

Mithilfe des Zusatzes hierarchy wird eine Hierarchie-Tabelle mit übergeordneten/untergeordneten Elementen in eine Tabelle umgeformt, die in einem QlikView-Datenmodell verwendet werden kann. Er kann vor dem Befehl LOAD oder SELECT eingefügt werden und verwendet anschließend das Ergebnis des Ladebefehls als Eingabe für eine Tabellenumformung.

Der Zusatz erstellt eine erweiterte Knotentabelle, die normalerweise über die gleiche Anzahl von Datensätzen wie die Eingabetabelle verfügt. Darüber hinaus wird jedoch jeder Produktlevel in der Hierarchie in einem gesonderten Feld gespeichert. Das Pfadfeld kann in einer Baumstruktur verwendet werden.

Syntax:  

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

Die Eingabetabelle muss eine Tabelle mit benachbarten Knoten sein. Tabellen mit benachbarten Knoten sind Tabellen, in denen jeder Datensatz einem Knoten entspricht und über ein Feld verfügt, das auf einen übergeordneten Knoten verweist. Jeder Knoten wird in dieser Tabelle in nur einem Datensatz gespeichert, jedoch kann der Knoten über mehrere untergeordnete Elemente verfügen. Natürlich kann die Tabelle auch weitere Felder enthalten, etwa mit Attributen.

Normalerweise enthält die interne Tabelle für jeden Knoten genau einen Datensatz. In einem derartigen Fall enthält die Ausgabetabelle die gleiche Anzahl an Datensätzen. Unter Umständen liegen auch Knoten mit mehreren übergeordneten Tabellen vor, d. h. ein Knoten wird mithilfe mehrerer Datensätze in der Eingabetabelle dargestellt. In diesem Fall enthält die Ausgabetabelle u. U. mehr Datensätze als die Eingabetabelle.

Alle Knoten mit einer ElternID, die nicht in der Spalte KnotenID enthalten ist (einschließlich Knoten mit einer fehlenden ElternID) gelten als Wurzelknoten. Um Zirkelbezüge zu vermeiden, werden nur Knoten geladen, die eine direkte oder indirekte Verbindung zu einem Wurzelknoten haben.

Es können zusätzliche Felder für Name des Elternknotens, Pfad und Ebene des Knotens generiert werden.

Argumente:  

Argument Beschreibung
NodeID Der Name des Felds, das die Knoten-ID enthält. Das Feld muss in der Eingabetabelle vorhanden sein.
ParentID Der Name des Felds, das die ID der Eltern, d. h. des direkt übergeordneten Knotens, enthält. Das Feld muss in der Eingabetabelle vorhanden sein.
NodeName Der Name des Felds, das die Bezeichnung des Knotens enthält. Das Feld muss in der Eingabetabelle vorhanden sein.
ParentName Ein String zur Benennung des neuen ParentName-Felds. Fehlt dieser Parameter, wird kein solches Feld generiert.
ParentSource Der Name des Felds, das die Namen der Knoten enthält, die für den Pfad zum Knoten verwendet werden sollen. Dieser Parameter ist optional. Wird er weggelassen, wird NodeName verwendet.
PathName Ein String zur Benennung des neuen Path-Feldes, das den Pfad vom Wurzelknoten zum betreffenden Knoten enthält. Dieser Parameter ist optional. Fehlt dieser Parameter, wird kein solches Feld generiert.
PathDelimiter Ein String, der als Trennzeichen im neuen Path-Feld dient. Dieser Parameter ist optional. Wird er weggelassen, wird '/' verwendet.
Depth Ein String zur Benennung des neuen Depth-Felds, das angibt, in welcher Ebene, vom Wurzelknoten aus betrachtet, sich der betreffende Knoten befindet. Dieser Parameter ist optional. Fehlt dieser Parameter, wird kein solches Feld generiert.

Beispiel:  

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

];

Ergebnis:

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