Caricamento dei dati gerarchici

Le gerarchie di livello n non bilanciate vengono spesso utilizzate per rappresentare, tra le altre cose, le dimensioni geografiche o organizzative nei dati. In genere, questi tipi di gerarchie vengono memorizzati in una tabella di nodi adiacenti, in cui ciascun record corrisponde a un nodo e presenta un campo contenente un riferimento al nodo padre.

Tabella di nodi
NodeID ParentNodeID Titolo
1 - General manager
2 1 Region manager
3 2 Branch manager
4 3 Department manager

In questa tabella il nodo è salvato solamente su un record, ma può presentare un numero qualsiasi di figli. Ovviamente la tabella può contenere campi aggiuntivi che descrivono gli attributi dei nodi.

Una tabella di nodi adiacenti è ottimale per la manutenzione, ma difficile da utilizzare nel lavoro quotidiano. Invece, nelle query e nelle analisi, vengono utilizzate altre rappresentazioni. Le tabelle di nodi espanse sono una rappresentazione comune, in cui ciascun livello della gerarchia è memorizzato in un campo separato. I livelli in una tabella di nodi espansi possono essere facilmente utilizzati in una struttura ad albero. La parola chiave hierarchy può essere utilizzata nello script di caricamento dei dati per trasformare una tabella di nodi adiacenti in una tabella di nodi espansi.

Example:  

Hierarchy (NodeID, ParentNodeID, Title, 'Manager') LOAD NodeID, ParentNodeID, Title FROM 'lib://data/hierarchy.txt' (txt, codepage is 1252, embedded labels, delimiter is ',', msq);
Tabella di nodi espansi
NodeID ParentNodeID Titolo Title1 Title2 Title4 Title4
1 - General manager General manager - - -
2 1 Region manager General manager Region manager - -
3 2 Branch manager General manager Region manager Branch manager -
4 3 Department manager General manager Region manager Branch manager Department manager

Un problema che si presenta con la tabella di nodi espansi è che non è facile utilizzare i campi di livello per ricerche o selezioni, perché è necessaria una conoscenza a priori del livello in cui eseguire tali operazioni. Una tabella padre è una rappresentazione differente che consente di risolvere questo problema. Questa rappresentazione viene inoltre denominata tabella ponte.

Una tabella padre contiene un record per ogni relazione figlio-padre presente nei dati. Contiene chiavi e nomi relativi ai figli e ai padri. Ad esempio, ogni record descrive a che nodo appartiene un nodo specifico. La parola chiave hierarchybelongsto può essere utilizzata nello script di caricamento dei dati per trasformare una tabella di nodi adiacenti in una tabella padre.

See also: