Chargement de données hiérarchiques

Les hiérarchies déséquilibrées de niveau n sont souvent utilisées pour représenter, entre autres, des dimensions organisationnelles ou géographiques des données. Les hiérarchies de ce type sont souvent stockées dans une table de nœuds adjacents, au sein d'une table où chaque enregistrement correspond à un nœud et comporte un champ contenant une référence au nœud parent.

Table de nœuds
NodeID ParentNodeID Titre
1 - General manager
2 1 Region manager
3 2 Branch manager
4 3 Department manager

Dans une table de ce type, le nœud est stocké dans un seul enregistrement bien qu'il puisse comprendre plusieurs enfants. La table peut bien sûr comporter des champs supplémentaires décrivant les attributs des nœuds.

Les tables de nœuds adjacents sont idéales en matière de maintenance mais sont difficiles à utiliser au quotidien. Pour les requêtes et les analyses, d'autres représentations sont donc utilisées. La table de nœuds étendus est une représentation classique dans laquelle chaque niveau de la hiérarchie est stocké dans un champ distinct. Les niveaux d'une table de nœuds étendus peuvent facilement être utilisés, par exemple dans une structure arborescente. Le mot-clé hierarchy peut être utilisé dans le script de chargement de données pour transformer une table de nœuds adjacents en table de nœuds étendus.

Example:  

Hierarchy (NodeID, ParentNodeID, Title, 'Manager') LOAD NodeID, ParentNodeID, Title FROM 'lib://data/hierarchy.txt' (txt, codepage is 1252, embedded labels, delimiter is ',', msq);
Table de nœuds étendus
NodeID ParentNodeID Titre 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

Dans une table de nœuds étendue, il est cependant difficile d'utiliser les champs de niveaux pour les recherches ou les sélections, puisque vous devez connaître le niveau à parcourir ou à sélectionner. Une table des ancêtres est une représentation différente qui permet de résoudre ce problème. Cette représentation est également appelée table de correspondance.

Une table des ancêtres contient un enregistrement pour chaque relation enfant-ancêtre identifiée dans les données. Elle contient des clés et les noms des enfants, ainsi que ceux des ancêtres. En d'autres termes, chaque enregistrement décrit le nœud auquel appartient un nœud spécifique. Il est possible d'utiliser le mot-clé hierarchybelongsto dans le script de chargement de données pour transformer une table de nœuds adjacents en table des ancêtres.

See also: