Accéder au contenu principal Passer au contenu complémentaire

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 Qlik Sense. 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.

 

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.

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.

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éé.

 

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

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – dites-nous comment nous améliorer !