Hierarchy

Le préfixe hierarchy permet de transformer une table de hiérarchies parent-enfant en table utile dans un modèle de données QlikView. Vous pouvez l'insérer devant une instruction LOAD ou SELECT. Il utilise le résultat de l'instruction de chargement comme entrée pour une transformation de table.

Le préfixe crée une table de nœuds étendus, qui contient normalement le même nombre d'enregistrements que la table d'entrée, à ceci près que chaque niveau de la hiérarchie est stocké en plus dans un champ distinct. Il est possible d'utiliser le champ du chemin d'accès dans une structure arborescente.

Syntax:  

Hierarchy (NodeID, ParentID, NodeName, [ParentName], [PathSource], [PathName], [PathDelimiter], [Depth])(loadstatement | selectstatement) 

La table d'entrée doit être une table de nœuds adjacents. Les tables de nœuds adjacents sont des tables dans lesquelles chaque enregistrement correspond à un nœud et possède un champ contenant une référence au nœud parent. Dans une table de ce type, le nœud est stocké dans un seul enregistrement, mais il peut comporter plusieurs enfants. La table peut bien sûr comporter des champs supplémentaires décrivant les attributs des nœuds.

En général, la table d'entrée présente un enregistrement par nœud, tout comme la table de sortie. Cependant, certains nœuds présentent plusieurs parents, c'est-à-dire qu'un nœud est représenté par plusieurs enregistrements dans la table d'entrée. Dans ce cas, la table de sortie peut contenir plus d'enregistrements que la table d'entrée.

Tous les nœuds pour lesquels aucun ID de parent n'a été détecté dans la colonne de nœud d'ID (y compris les nœuds dont l'ID de parent est manquant) sont alors considérés comme des racines. En outre, seuls les nœuds connectés directement ou indirectement à un nœud racine sont chargés, évitant ainsi les références circulaires.

Des champs supplémentaires contenant le nom du nœud parent, le chemin d'accès et la profondeur du nœud peuvent être créés.

Arguments:  

Argument Description
NodeID Nom du champ contenant l'ID du nœud. Ce champ doit exister dans la table d'entrée.
ParentID Nom du champ contenant l'ID du nœud parent. Ce champ doit exister dans la table d'entrée.
NodeName Nom du champ contenant le nom du nœud. Ce champ doit exister dans la table d'entrée.
ParentName Chaîne utilisée pour nommer le nouveau champ ParentName. Si cette chaîne est omise, le champ n'est pas créé.
ParentSource Nom du champ contenant le nom du nœud utilisé pour créer le chemin d'accès au nœud. Paramètre facultatif. S'il est omis, NodeName est utilisé.
PathName Chaîne utilisée pour nommer le nouveau champ Path, qui contient le chemin d'accès à la racine au nœud. Paramètre facultatif. Si cette chaîne est omise, le champ n'est pas créé.
PathDelimiter Chaîne utilisée comme délimiteur dans le nouveau champ Path. Paramètre facultatif. S'il est omis, ‘/’ est utilisé.
Depth Chaîne utilisée pour nommer le nouveau champ Depth, qui contient la profondeur du nœud dans la hiérarchie. Paramètre facultatif. Si cette chaîne est omise, le champ n'est pas créé.

Example:  

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

];

Résultat :

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