Hierarchy
Mithilfe des hierarchy-Zusatzes wird eine über-/untergeordnete Hierarchie-Tabelle in eine Tabelle umgewandelt, die in einem Qlik Sense-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.
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.
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
];
NodeID | ParentID | NodeName | NodeName1 | NodeName2 | NodeName3 | ParentName | PathName | Depth |
1 | 4 | London | Europe | UK | London | UK | Europe\UK\London | 3 |
2 | 3 | Munich | Europe | Germany | Munich | Germany | Europe\Germany\Munich | 3 |
3 | 5 | Germany | Europe | Germany | - | Europe | Europe\Germany | 2 |
4 | 5 | UK | Europe | UK | - | Europe | Europe\UK | 2 |
5 | Europe | Europe | - | - | - | Europe | 1 |