Partager via


Fonctionnement des fonctions pour les hiérarchies de type parent-enfant dans DAX

DAX fournit cinq fonctions qui permettent aux utilisateurs de gérer les données présentées sous forme de hiérarchie de type parent-enfant dans leurs modèles. Avec ces fonctions, un utilisateur peut obtenir le lignage entier des parents d'une ligne, connaître le nombre de niveaux du lignage jusqu'au parent supérieur, identifier les niveaux n parents au-dessus de la ligne actuelle, identifier le descendant n par rapport au sommet de la hiérarchie de ligne actuelle, et déterminer si un parent spécifique est bien un parent dans la hiérarchie de ligne actuelle.

Fonctions parent-enfant dans DAX

Le tableau suivant contient une hiérarchie de type parent-enfant relative aux colonnes : EmployeeKey et ParentEmployeeKey, qui est utilisée dans tous les exemples de fonctions.

EmployeeKey

ParentEmployeeKey

112

14

112

3

14

11

3

13

3

162

3

117

162

221

162

81

162

Dans le tableau ci-dessus, vous pouvez voir que l'employé 112 n'a aucun parent défini, l'employé 14 a l'employé 112 comme responsable (ParentEmployeeKey), l'employé 3 a l'employé 14 comme responsable, et les employés 11, 13 et 162 ont l'employé 3 comme responsable. Les informations ci-dessus nous aident à comprendre que l'employé 112 n'a aucun responsable hiérarchique et qu'il est le plus haut responsable de tous les employés indiqués ici ; par ailleurs, l'employé 3 doit rendre compte à l'employé 14, alors que les employés 11, 13 et 162 doivent rendre compte à l'employé 3.

Le tableau suivant présente les fonctions disponibles, ainsi qu'une brève description et un exemple de chaque fonction à partir des données indiquées ci-dessus.

Fonction

Description / Exemple

Fonction PATH (DAX)

Retourne un texte délimité avec les identificateurs de tous les parents de la ligne actuelle, depuis l'élément le plus ancien ou le plus élevé jusqu'à l'élément actuel.

Dans l'exemple suivant, la colonne « Path » est définie comme suit : « =PATH(EmployeeKey, ParentEmployeeKey) »

EmployeeKey

ParentEmployeeKey

Path

112

112

14

112

112|14

3

14

112|14|3

11

3

112|14|3|11

13

3

112|14|3|13

162

3

112|14|3|162

117

162

112|14|3|162|117

221

162

112|14|3|162|221

81

162

112|14|3|162|81

Fonction PATHLENGTH (DAX)

Retourne le nombre de niveaux d'un PATH() donné, depuis le niveau actuel jusqu'au niveau parent le plus ancien ou le plus élevé.

Dans l'exemple suivant, la colonne PathLength est définie comme suit « =PATHLENGTH([Path]) » ; l'exemple inclut toutes les données de l'exemple Path() afin de faciliter la compréhension du fonctionnement de cette fonction.

EmployeeKey

ParentEmployeeKey

Path

PathLength

112

112

1

14

112

112|14

2

3

14

112|14|3

3

11

3

112|14|3|11

4

13

3

112|14|3|13

4

162

3

112|14|3|162

4

117

162

112|14|3|162|117

5

221

162

112|14|3|162|221

5

81

162

112|14|3|162|81

5

Fonction PATHITEM (DAX)

Retourne l'élément à la position spécifiée à partir du résultat de la fonction PATH(), en comptant de gauche à droite.

Dans l'exemple suivant, la colonne PathItem - 4e position en partant de la gauche est définie comme suit : « =PATHITEM([Path], 4) » ; cet exemple retourne EmployeKey à la quatrième position en partant de la gauche de la chaîne Path, à l'aide des mêmes données que celles de l'exemple Path().

EmployeeKey

ParentEmployeeKey

Path

PathItem - 4e position en partant de la gauche

112

112

14

112

112|14

3

14

112|14|3

11

3

112|14|3|11

11

13

3

112|14|3|13

13

162

3

112|14|3|162

162

117

162

112|14|3|162|117

162

221

162

112|14|3|162|221

162

81

162

112|14|3|162|81

162

Fonction PATHITEMREVERSE (DAX)

Retourne l'élément situé à position à partir d'un résultat de fonction PATH(), en comptant en sens inverse, de droite à gauche.

Dans l'exemple suivant, la colonne PathItemReverse - 3e position en partant de la droite est définie comme suit : « =PATHITEMREVERSE([Path], 3) » ; cet exemple retourne EmployeKey à la troisième position en partant de la droite de la chaîne Path, à l'aide des mêmes données que celles de l'exemple Path().

EmployeeKey

ParentEmployeeKey

Path

PathItemReverse - 3e position en partant de la droite

112

112

14

112

112|14

3

14

112|14|3

112

11

3

112|14|3|11

14

13

3

112|14|3|13

14

162

3

112|14|3|162

14

117

162

112|14|3|162|117

3

221

162

112|14|3|162|221

3

81

162

112|14|3|162|81

3

Fonction PATHCONTAINS (DAX)

Retourne TRUE si le paramètre item spécifié existe dans le paramètre path spécifié.

Dans l'exemple suivant, la colonne PathContains - employé 162 est définie comme suit : « =PATHCONTAINS([Path], "162") » ; cet exemple retourne TRUE si le chemin d'accès donné contient l'employé 162. Cet exemple utilise les résultats de l'exemple Path() ci-dessus.

EmployeeKey

ParentEmployeeKey

Path

PathContains - employé 162

112

112

FALSE

14

112

112|14

FALSE

3

14

112|14|3

FALSE

11

3

112|14|3|11

FALSE

13

3

112|14|3|13

FALSE

162

3

112|14|3|162

TRUE

117

162

112|14|3|162|117

TRUE

AttentionAttention

Dans SQL Server 2012 Analysis Services, le moteur d'analyse en mémoire xVelocity (VertiPaq) ne prend pas en charge la définition des hiérarchies de type parent-enfant ; toutefois, le langage DAX fournit un ensemble de fonctions qui permettent aux utilisateurs d'explorer les hiérarchies de type parent-enfant et de les utiliser dans des formules.