Hierarchy
Il prefisso hierarchy viene utilizzato per trasformare una tabella gerarchica padre-figlio in una tabella utile in un modello dati di QlikView. Può essere inserito prima di un'istruzione LOAD o SELECT e utilizzerà il risultato dell'istruzione di caricamento come input per la trasformazione della tabella.
Il prefisso crea una tabella di nodi espansi che, in generale, presenta lo stesso numero di record della tabella di input, ma dove ogni livello all'interno della gerarchia viene memorizzato in un campo separato. Il campo del percorso può essere utilizzato in una struttura ad albero.
Sintassi:
Hierarchy (NodeID, ParentID, NodeName, [ParentName, [ParentSource, [PathName, [PathDelimiter, Depth]]]])(loadstatement | selectstatement)
La tabella di input deve essere una tabella di nodi adiacenti. Le tabelle di nodi adiacenti sono tabelle in cui ogni record corrisponde a un nodo e presenta un campo contenente un riferimento al nodo padre. In questa tabella il nodo è salvato solamente su un record, anche se può presentare un qualsiasi numero di figli. Ovviamente la tabella può contenere campi aggiuntivi che descrivono gli attributi dei nodi.
In generale, la tabella di input presenta esattamente un record per nodo; in questi casi, la tabella di output contiene lo stesso numero di record. Tuttavia, a volte esistono nodi con più padri, ad esempio un nodo è rappresentato da più record nella tabella di input. In questo caso, la tabella di output potrà avere più record della tabella di input.
Tutti i nodi con un ID padre non presente nella colonna dell'ID del nodo (inclusi i nodi con ID padre mancanti) verranno considerati nodi radice. Inoltre, verranno caricati solo i nodi con una connessione, diretta o indiretta, al nodo radice, in modo da evitare riferimenti circolari.
È anche possibile creare campi aggiuntivi contenenti il nome del nodo padre, il percorso del nodo e la relativa profondità.
Argomenti:
Argomento | Descrizione |
---|---|
NodeID | Il nome del campo contenente l'ID del nodo. Questo campo deve essere contenuto nella tabella di input. |
ParentID | Il nome del campo contenente l'ID nodo del nodo padre. Questo campo deve essere contenuto nella tabella di input. |
NodeName | Il nome del campo contenente il nome del nodo. Questo campo deve essere contenuto nella tabella di input. |
ParentName | Una stringa utilizzata per assegnare un nome al nuovo campo ParentName. Se omessa, il campo non verrà creato. |
ParentSource | Il nome del campo contenente il nome del nodo utilizzato per creare il percorso del nodo. È un parametro opzionale. Se omesso, verrà utilizzato NodeName. |
PathName | Una stringa utilizzata per assegnare un nome al nuovo campo Path, che contiene il percorso dalla radice al nodo. È un parametro opzionale. Se omessa, il campo non verrà creato. |
PathDelimiter | Una stringa utilizzata come delimitatore nel nuovo campo Path. È un parametro opzionale. Se omesso, verrà utilizzato '/'. |
Depth | Una stringa utilizzata per assegnare un nome al nuovo campo Depth, il quale contiene la profondità del nodo nella gerarchia. È un parametro opzionale. Se omessa, il campo non verrà creato. |
Esempio:
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
];
Risultato:
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 |