Hierarchy
Prefixet hierarchy används för att omvandla en hierarkisk tabell till en tabell som fungerar i en Qlik Sense-datamodell. Det kan sättas framför en LOAD- eller SELECT-sats och det använder resultatet från den laddade satsen som indata för en tabellomvandling.
Prefixet skapar en expanderad nodtabell som normalt har samma antal poster som indatatabellen, men dessutom lagras varje nivå i hierarkin i ett separat fält. Sökvägsfältet kan användas i en trädstruktur.
Syntax:
Hierarchy (NodeID, ParentID, NodeName, [ParentName, [PathSource, [PathName, [PathDelimiter, Depth]]]])(loadstatement | selectstatement)
Indatatabellen måste vara en ”adjacent nodes”-tabell. ”Adjacent nodes”-tabeller är tabeller där varje post motsvarar en nod och har ett fält som innehåller en referens till modernoden. I en sådan tabell lagras noden i en post men kan ha valfritt antal döttrar. Tabellen kan självklart innehålla ytterligare fält som beskriver nodernas attribut.
Prefixet skapar en expanderad nodtabell som normalt har samma antal poster som indatatabellen, men dessutom lagras varje nivå i hierarkin i ett separat fält. Sökvägsfältet kan användas i en trädstruktur.
Indatatabellen har vanligtvis exakt en post per nod. Om så är fallet innehåller utdatatabellen samma antal poster. Ibland kan det finnas noder med flera mödrar, d.v.s. varje nod motsvaras av flera poster i indatatabellen. Om så är fallet kan utdatatabellen innehålla fler poster än indatatabellen.
Alla noder med ett överordnat ID som inte hittas i nod-ID-kolumnen (inklusive de som saknar överordnat ID) behandlas som rötter. Dessutom kommer endast noder med en koppling till en rotnod – direkt eller indirekt – att laddas för att undvika cirkelreferenser.
Man kan skapa ytterligare fält som innehåller modernodens namn, sökvägen till noden och nodens djup.
Argument:
Argument | Beskrivning |
---|---|
NodeID | Namnet på det fält som innehåller nodens ID. Detta fält måste förekomma i indatatabellen. |
ParentID | Namnet på det fält som innehåller modernodens nod-ID. Detta fält måste förekomma i indatatabellen. |
NodeName | Namnet på det fält som innehåller nodens namn. Detta fält måste förekomma i indatatabellen. |
ParentName | En sträng som används för att namnge det nya ParentName-fältet. Om den utelämnas skapas ej detta fält. |
ParentSource | Namnet på det fält som innehåller namnet på den nod som används för att bygga nodens sökväg. Valfri parameter. Om den utelämnas används NodeName. |
PathName | En sträng som används för att namnge det nya fältet Path som innehåller sökvägen från rot till nod. Valfri parameter. Om den utelämnas skapas ej detta fält. |
PathDelimiter | En sträng som används som avgränsare i det nya Path-fältet. Valfri parameter. Om den utelämnas används '/'. |
Depth | En sträng som används för att namnge det nya fältet Depth som innehåller djupet på noden i hierarkin. Valfri parameter. Om den utelämnas skapas ej detta fält. |
Exempel:
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 |