Dans ce post on se penchera sur certaines fonctions de gestion des relations.
Dans la première version de Power Pivot on ne pouvait pas créer de relations entre deux colonnes de la même table. Aujourd’hui, la nouvelle version permet la gestion des relations parent_enfant via les fonctions DAX.
Pour mieux comprendre, on utilisera un exemple « fichier employé_responsable » renseignant pour chaque employé les responsables hiérarchiques, s’ils existent.
La première fonction qu’on testera est la fonction Path.
PATH([employe],[responsable]) :Retourne une chaine de caractères délimitée par la clé_employé de tous les nœuds parents de la clé employé courante, commençant du plus ancien au plus courant.

Par exemple si on s’intéresse à l’employée « Melanie_Furion » on peut voir qu’elle a pour responsable « NADIA_FARSSI », et que « Nadia farssi » a pour responsable « Jhon Dior » ce qui correspond bien au path 111|8|18.
La seconde fonction à laquelle on s’intéresse est PATHLENGTH.
PATHLENGTH (PATH([employe],[responsable])) : Retourne la longueur du path, dans le cas Melani_furion la fonction retourne 3, donc 3 niveaux hiérarchiques.

Intéressons-nous maintenant à la fonction PATHITEM.
PATHITEM(PATH([employe],[responsable]),2)) :Retourne le deuxième niveau de la hiérarchie commençant par le niveau le plus haut. Par exemple pour l’employé Melanie_furion le responsable de niveau 2, correspond à l’id 8 (Nadia Farssi)

Il serait également intéressant de combiner les fonctions LOOKPVALUE, PATH, PATHITEM. Ceci nous permettrait de créer une sorte de hiérarchie associée à cette relation parent_enfant, de chaque niveau.
LOOKPVALUE ([nom-complet],[employe],PATHITEM(PATH([employe],[responsable]),2) :
Retourne le nom de l’employé associé au deuxième niveau de la hiérarchie

On peut ainsi dresser la hiérarchie de l’entreprise.

On peut rapidement voir les différents niveaux hiérarchiques, en déduire des responsables.

PowerPivot code Denali nous offre une fonction de relation parent-enfant intéressante, mais restant limitée comparée à la solution Microsoft SSAS. Notamment, on remarquera l’existence de niveaux « blancs ». Par exemple Jhon Dior étant le plus haut responsable, les niveaux 2 et 3 ne sont pas renseignés.
Là où SSAS nous permet d’utiliser la propriété HideMemberIf permettant de résoudre ce point, Powerpivot ne propose pas d’équivalent simple. Il existe malgré tout des solutions de contournement qui ont été publiées, parmi elles on peut citer la solution d’Alberto Ferrari.
Retour vers la synthèse des nouveautés de Powerpivot V2.
D’autres articles à venir sur les autres nouveautés…
Commentaires récents