Vai al contenuto principale Passa a contenuto complementare

Hierarchy

Il prefisso hierarchy viene utilizzato per trasformare una tabella gerarchica padre-figlio in una tabella utile in un modello dati Qlik Sense. Può essere inserito prima di un'istruzione LOAD o SELECT e utilizzerà i risultati 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, [PathSource, [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.

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.

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:  

Argomenti
Argomento Descrizione
NodeID Il nome del campo contenente l'ID del nodo. Questo campo deve esistere nella tabella di input.
ParentID Il nome del campo contenente l'ID nodo del nodo padre. Questo campo deve esistere nella tabella di input.
NodeName Il nome del campo contenente il nome del nodo. Questo campo deve esistere 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, sarà utilizzato il simbolo '/'.
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

];

 

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

Hai trovato utile questa pagina?

Se riscontri problemi con questa pagina o con il suo contenuto – un errore di battitura, un passaggio mancante o un errore tecnico – facci sapere come possiamo migliorare!