Dans ce blog nous allons voir les options possibles pour mettre en place une hiérarchie dans HANA. Nous verrons aussi quel type de hiérarchie choisir en fonction du format des données source ainsi que de la visualisation souhaitée.
Qu’est-ce qu’une hiérarchie ?
Une hiérarchie en informatique est une structure de données dans laquelle l’information est classée sous la forme d’un arbre. Cela permet de montrer et de donner du contexte à des informations (liens de parenté).
Exemple :
- Un nœud est une entité de l’arbre hiérarchique
- Un nœud racine est un nœud qui n’a pas de parent.
- Un parent est un nœud de niveau supérieur à un autre nœud (Continent 1 est le parent de Pays 1 et de Pays 2)
- Un enfant est un nœud sous un parent (Pays 1 et Pays 2 sont les enfants de Continent 1)
- Une feuille est un nœud n’ayant pas d’enfant (Pays 1, Ville 1…)
Les types de hiérarchies
Avec HANA il existe deux options pour mettre en place une hiérarchie. D’un coté l’utilisation du module « hiérarchie » dans votre IDE Hana (pas de code nécessaire) et de l’autre l’utilisation la fonction SQL « HIERARCHY » (code SQL à écrire). Le choix du type d’implémentation dépendra de vos données sources, ci-dessous, les types de hiérarchies prises en compte par chacune des méthodes.
Module hiérarchie Hana:
- Structure Parent-Enfant
- Structure par niveau
Fonction « HIERARCHY » SQL:
- Structure Parent-Enfant
Dans la suite de ce Blog nous verrons dans un premier temps ce qui différencie les deux types de hiérarchies, puis dans un second temps comment créer une hiérarchie via le module Hana et via la fonction SQL avant de se pencher sur l’utilisation possible de chacune.
Hiérarchie Parent-Enfant
Si dans une table de données se trouve dans une colonne les valeurs et dans une autre les parents correspondant à chacune de ces valeurs, alors la création d’une hiérarchie parent-enfant est envisageable.
Exemple :
A chacun des nœuds ci-dessus est associé son nœud parent, sauf pour la valeur Monde qui est dans ce cas le nœud racine (Root).
NB : Pour ce modèle de hiérarchie tous les nœuds doivent être de même type. Ici le lien parent enfant se fera sur les ID, les valeurs de ces colonnes doivent être au même format (INTEGER dans notre cas).
Hiérarchie par niveau
Si au contraire, vous disposez d’une colonne distincte pour chacun des niveaux de la hiérarchie (ex : Pays, Ville, Continent), alors vous devrez modéliser ces données via la hiérarchie par niveau.
Exemple :
NB : Une hiérarchie par niveau doit forcément être équilibrée c’est-à-dire que chaque branche de l’arborescence doit être de longueur égale (3 ici). Dans notre cas on ne pourrait pas avoir de pays sans ville ou de continent sans pays. Ce n’est pas le cas de la hiérarchie parent-enfant.
Récapitulatif
Créer une hiérarchie dans Hana
Une fois le type de hiérarchie déterminé, il s’agit de le mettre en place au sein de l’IDE.
Hiérarchie Parent-Enfant via le module Hana
- Créer une « Calculation View » remontant l’ensemble des champs nécessaires à la hiérarchie. Vérifier qu’ils sont tous disponibles dans la couche sémantique.
- Cliquer sur l’onglet « Hiérarchie » dans la section détails, appuyer sur le +.
- Choisir Parent-Child comme type de hiérarchie, la nommer et définir les champs enfant et parent. Il est possible aussi de rentrer la valeur du nœud racine, « Monde » ici.
NB : Si un enfant peut avoir plusieurs parents alors il faut cocher la case « Multiple Parent » dans l’onglet « Advanced ».
Hiérarchie par niveau via le Module Hana
- Créer une « Calculation View » remontant l’ensemble des champs nécessaires à la hiérarchie. Vérifier qu’ils sont tous disponibles dans la couche sémantique.
- Cliquer sur l’onglet « Hiérarchie » dans la section détails, appuyer sur le +.
- Choisir Level comme type de hiérarchie, la nommer et définir les champs enfant et parent.
Les hiérarchies Parent-Enfant ou par niveau peuvent être exploitées dans Web Intelligence. Les deux types sont identiques à l’utilisation, ils se présentent sous la forme d’un champ dont il est possible de déplier l’arborescence.
Exemple:
Source : Hana Handbook BW/4HANA Modeling, blogs.sap.com (Hierarchy in webi)
Hiérarchie Parent-Enfant via la fonction SQL « Hierarchy »
Il existe une alternative permettant d’exploiter des données hiérarchiques. Celle-ci consiste à enrichir chaque enregistrement avec des informations permettant de donner du contexte à la ligne en question. Dans ce cas, nous ne pourrons pas avoir un affichage dépliable sur Web intelligence de la même manière que vu dans le paragraphe précédent.
Illustrons par l’exemple, avec les données sources suivantes :
Les champs de contexte que l’on peut rajouter sont par exemple :
- Le niveau (Level)
- Le rang (Rank)
- Taille de l’arborescence (Tree Size)
Le niveau (Level) permet de savoir à quelle hauteur se trouve chaque nœud dans la hiérarchie (un pays est au niveau 3).
Le rang (Rank) est un compteur, il peut être exploité par un tri afin de retrouver l’ordre hiérarchique permettant de voir voir la relation parent-enfant.
Le champ « Tree size » permet lui de connaitre le nombre d’enfants de l’enregistrement (NB: le nœud en question compte pour 1, « Tree Size » ≠ 0).
Notre table d’exemple pourrait ainsi être enrichie de la façon suivante :
Pour connaître l’exhaustivité des champs ainsi ajoutable de façon standard, je vous renvoie en bas de page sur le guide de l’éditeur (Cf « Source »).
L’enrichissement des données décrit passe par l’implémentation d’une vue scriptée en SQL en invoquant la fonction « Hierarchy ».
Mettre en place la fonction
Une fois la table disponible il faut créer la vue scriptée (choisir « SQL Script » au lieu de « Graphical » lors de la création d’une nouvelle vue).
Comme dans le module HANA il faut définir le champ parent et le champ enfant en les renommant respectivement PAREND_ID et NODE_ID. Il faut aussi appeler les variables à créer par la fonction (Level, Rank…) et ajouter les colonnes qui sont définies dans le script en sortie du bloc « Script View ».
Ci-dessous, uniquement le niveau (level) est ajouté.
Source: Help SAP
Conclusion
Plusieurs options sont donc envisageables pour créer une hiérarchie dans Hana. Il faut faire le choix de celle la plus adaptée en fonction de l’utilisation qu’on souhaite faire de celle-ci, ainsi qu’en fonction de la structure des données disponibles.
Si vous cherchez à avoir un rapport interactif avec la possibilité de déplier les arborescences, alors il faut passer par le module Hana. On privilégie dans ce cas la visualisation des liens et l’interaction utilisateur.
Si au contraire vous souhaitez enrichir votre table de données avec des colonnes mettant en évidence les liens parents-enfants, alors il faut passer par la fonction SQL.
N’hésitez pas à consulter les autres Blogs écrits par nos consultants pour être informé des dernières technologies SAP ainsi que des différents projets menés par nos équipes.
Alexandre Chevé
Derniers articles parAlexandre Chevé (voir tous)
- Tunez votre intégration de donnée dans HANA avec les Procédure Stockées - 25 juin 2021
- Hiérarchie dans HANA - 12 janvier 2021
- Produire le FEC (fichier des écritures comptables) avec une solution BI moderne - 27 octobre 2020