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 : Tableau de valeur pour hiérarchie par niveau

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

  1. 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.
  2. Cliquer sur l’onglet « Hiérarchie » dans la section détails, appuyer sur le +.
  3. 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.

Capture d'écran de Hana Studio permettant d'illustrer comment créer un hiérarchie Parent-Enfant

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

  1. 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.
  2. Cliquer sur l’onglet « Hiérarchie » dans la section détails, appuyer sur le +.
  3. Choisir Level comme type de hiérarchie, la nommer et définir les champs enfant et parent.

Capture d'écran de Hana Studio permettant d'illustrer comment créer un hiérarchie par niveau

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:

Capture d'écran illustrant la manière dont se déplie un champ hiérarchique dans Web Intelligence

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

Table utilisé pour le test de la fonction Hierarchy

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

Capture d'écran de l'Hana studio montrant une vue de type Script avec le code faisant appel à la fonction Hierarchy  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.

The following two tabs change content below.

Alexandre Chevé

Alexandre est un consultant junior spécialisé en Business Intelligence. Dynamique et rigoureux, il possède de solides connaissances sur la suite SAP BI ainsi que sur les outils SAP de visualisation.
Share This