Comment créer et gérer facilement des hiérarchies sous HANA ?
Introduction
Chez chacun de nos clients, nous rencontrons des hiérarchies de type « Organisation commerciale », « Client », ou « Article ».
Or, la création, le chargement, la gestion et le parcours des hiérarchies sont souvent complexes, puisqu’ils nécessitent notamment l’usage de la récursivité.
Mais ça, c’était avant ! Grâce aux fonctionnalités mises à disposition par SAP au travers de HANA, ces processus sont désormais grandement facilités.
Nous vous proposons de découvrir dans cet article :
- La définition d’une hiérarchie
- Les différents types de hiérarchie
- Le mode d’emploi pour les créer et les définir sous HANA
- Une restitution graphique dans SAP Analytics Cloud.
Qu’est-ce qu’une hiérarchie ?
En informatique décisionnelle, le concept de hiérarchie est très souvent utilisé dans les schémas d’organisation de structures de données.
L’information se présente généralement comme un arbre :

Le terme “Hiérarchie” va de pair avec les termes suivants :
- Nœud : Membre de la hiérarchie
- Parent / Enfant : Membre se situant à un niveau supérieur à un autre membre, qui sera ainsi l’enfant (Membre 4 parent des Membres 6 et 7 et enfant du Membre 2)
- Nœud racine : Membre n’ayant pas de parent et étant à la base de la hiérarchie (Membre 1)
- Feuille : Membre n’ayant pas d’enfant (Membre 8).
Les différents types de hiérarchies
En référence, prenons une hiérarchie se présentant comme ceci :

Hiérarchie Parent – Enfant
Cette hiérarchie se construit en ayant une colonne de « VALEUR » et une colonne indiquant le « PARENT » correspondant.
Pour ce modèle de hiérarchie, tous les nœuds doivent être de même type.
Voici un exemple de table représentant la hiérarchie précédente sous forme Parent – Enfant.

Hiérarchie par niveau
Des colonnes distinctes sont renseignées pour chacun des niveaux de la hiérarchie.
Chaque branche de l’arborescence doit être de longueur égale.
Voici un exemple de table représentant la hiérarchie précédente sous forme par niveau :

Nous retrouvons ici 4 colonnes, correspondant aux 4 niveaux de notre hiérarchie.
Comment définir une hiérarchie dans HANA ?
Il y a deux possibilités pour définir une hiérarchie dans HANA :
- Par le biais d’une Calculation View (Type Graphical)
- Par le biais d’une Script View (Type SQL Script)
Via les Calculation Views
Hiérarchie Parent – Enfant
En passant par une calculation view de type Graphical, nous avons la possibilité de créer une hiérarchie Parent – Enfant.
Le paramétrage se fait dans l’onglet « Hiérarchie » de la couche sémantique de la vue. Il faut cliquer sur le « + » et choisir le type de hiérarchie « Parent – Enfant ».

Nous voyons sur l’image ci-dessus que nous avons bien choisi le type de hiérarchie « Parent-Child Hierarchy », et que nous avons défini le champ « VALEUR » comme champ Enfant, et le champ « PARENT » comme champ Parent .
Voici ce que nous obtenons comme visualisation :

Hiérarchie par Niveau
Il y a également la possibilité de créer une hiérarchie par niveau. Pour cela, nous choisissons cette fois-ci dans les paramétrages le type « Level Hierarchy ».

Nous choisissons également quels sont les différents niveaux de notre hiérarchie en les plaçant dans l’ordre.
Voici ce que nous obtenons comme visualisation :

Via les Script Views et la fonction HIERARCHY
Création d’une script view
Lors de la création de la calculation view, choisir le type « SQL Script ».
Pour appeler une table dans une script view, nous devons utiliser une requête SQL de type SELECT * FROM « TABLE »
Par exemple dans le cas ci-dessous, nous souhaitons sélectionner une hiérarchie à partir de la table « HC_MATERI ».

Afin de mieux comprendre le code, voici l’utilité des différentes fonctions utilisées :
- BEGIN / END : Mots clés permettant de débuter et clore notre code SQL Script.
- var_out : Permet de sélectionner quels sont les champs que l’on souhaite remonter dans la vue.
- HIERARCHY : Définit quelle est la hiérarchie et quelles vont être ses options (Cette fonction sera développée ultérieurement dans l’article).
- NODE_ID / PARENT_ID : Ces champs permettent d’identifier les valeurs comme étant « Enfant » (NODE_ID) ou « Parent » (PARENT_ID).
Cette requête SQL sélectionne une hiérarchie à partir de la table citée précédemment, et en extrait les parents, enfants, ainsi que le niveau de hiérarchie et une mesure. Tous ces champs seront ainsi envoyés dans la couche sémantique.
La fonction HIERARCHY permet de spécifier que notre table source est une hiérarchie et permet ainsi l’utilisation de fonctions diverses implémentées par SAP.
Les options possibles de la fonction HIERARCHY
Il est également possible de spécifier des paramétrages pour la hiérarchie que nous souhaitons créer.
Ces fonctions sont les suivantes :
Type de fonction | Fonction complète | Description |
---|---|---|
SOURCE | SOURCE | Utilisée pour identifier la source d’où provient la hiérarchie (quelle table utiliser). |
START | START WHERE | Préciser où nous souhaitons faire débuter la hiérarchie (où se situe le haut, le niveau 1). |
ORDER | SIBLING ORDER | Définit l’ordre de tri des valeurs ayant un même parent. |
DEPTH | DEPTH | Définit la profondeur de la hiérarchie que nous souhaitons avoir. |
MULTIPARENT | MULTIPARENT | Une valeur ayant plusieurs parents est autorisée. |
MULTIPARENT ERROR | Une valeur ayant plusieurs parents renvoie une erreur. | |
MULTIPARENT LEAVES | Avoir plusieurs parents pour une seule valeur est autorisé si cette valeur est une feuille (dernier niveau, n’a pas d’enfant). | |
ORPHAN | ORPHAN IGNORE | Est utilisé par défaut. Les orphelins sont ignorés. |
ORPHAN ROOT | Définit un orphelin comme nœud racine. | |
ORPHAN ERROR | Si la hiérarchie contient un orphelin, une erreur est détectée. | |
ORPHAN ADOPT | Définit le nœud de rattachement de l’orphelin. |
Hiérarchie récupérée sous SAP Analytics Cloud
Sous SAP Analytics Cloud, il est possible d’observer la hiérarchie par niveau que nous avons créée dans notre vue HANA :

Conclusion
Grâce à la modélisation graphique sous HANA, à la virtualisation et aux fonctions mises à disposition par SAP pour les scripts views, travailler avec les hiérarchies chez vos clients n’est plus un casse-tête !
Au final, vous bénéficiez :
- D’un gain de temps
- D’une mise en place simplifiée, via l’interface graphique
- De plus de facilité de traitement.
Et si, en plus de vous simplifier les hiérarchies, vous souhaitez optimiser vos performances de développement sur HANA, allez faire un tour vers cet article de Loïc : « SAP HANA 2.0 : comment optimiser vos performances ? » !