Power Pivot: Leçon de DAX no.3 (COUNTROWS)

Publié le 01 octobre 2015 par Sopmar01 @mon_cher_watson

Cet article fait suite aux articles Power Pivot: Leçon de DAX no.1 (fonctions X)  et Power Pivot: Leçon de DAX no.2 (RELATED) Il vise à démontrer comment utiliser la fonction COUNTROWS en langage DAX (Data Analysis Expression), soit le langage utilisé par Power Pivot.

Fonction COUNTROWS

La fonction COUNTROWS retourne, tout simplement, le nombre de lignes d’une table.

Exemple: Mesure qui retourne le nombre de transactions de ventes

Dans l’exemple ci-bas, la fonction COUNTROWS retourne le nombre de lignes dans la table Ventes. Autrement dit, elle retourne le nombre de transactions total de la table, soit 13,341.

Lorsqu’on visualise les données à partir d’un tableau croisé dynamique, on retrouve le nombre de transactions de 13,341. À noter que dans ce tableau croisé dynamique, le champ de valeur est notre nouvelle mesure, soit NbTransactions.

Et lorsqu’on appose un filtre sur le canal #1, on obtient le nombre de transactions de ce canal uniquement, soit 4,240. On observe donc que notre mesure répond bien au contexte de filtres.

Nous aurions pu obtenir le même résultat en utilisant le champ Ventes et en choisissant l’option COUNT plutôt que SUM dans notre tableau croisé dynamique, tel qu’illustré plus bas. Toutefois cette façon de procéder aurait défié les meilleures pratiques d’affaires. Apprenez pourquoi en jetant un coup d’oeil à l’article suivant: Power Pivot: Mesures explicites vs mesures implicites.

Exemple: Mesure qui retourne le nombre de transactions de ventes du canal #1

Dans l’exemple suivant, nous utilisons la fonction DAX FILTER. Cette fonction fera l’objet d’un billet de blogue séparé. Pour le moment, ce que vous devez comprendre de la formule ci-bas, c’est qu’elle retourne le nombre de lignes de la table Ventes, mais en ne considérant que les lignes qui appartiennent au canal #1.

Ce faisant, lorsque l’on visualise les données dans un tableau croisé dynamique, on remarque que le total de transactions n’est plus 13,341 mais plutôt 4,240, soit le nombre de transactions du canal #1. On remarque également que ce total est modulé selon les étiquettes de lignes et les étiquettes de colonnes, i.e. selon le contexte de filtres.

Exemple: Mesure qui retourne le nombre de transactions de ventes du canal #2 ou #3

Le langage DAX dispose d’opérateurs communs. Par exemple || est employé pour désigner un OR (OU). Pour en savoir davantage sur les opérateurs du langage DAX, je vous invite à consulter la page suivante PowerPivot: DAX: Operator Reference. Ainsi, la formule suivante retourne le nombre de transactions de la table Ventes, pour toutes les lignes comprenant le canal #2 ou le canal #3.

Dans le tableau croisé dynamique suivant, nous avons placé notre mesure NBTransactionsCanal1 dans la première colonne. Le total est toujours de  4,240 transactions. Dans la deuxième colonne, nous avons placé notre nouvelle mesure NbTransactionsCanal2ou3. Le total est de 9,101 transactions. En additionnant ces deux valeurs, on revient à notre nombre total de transactions, 13,341, puisque cette table de ventes ne comprend que 3 canaux.

Pour valider le résultat précédent, on pourrait également reproduire un tableau croisé dynamique à partir de la mesure NbTransactions et apposer un filtre pour ne retenir que les canaux #2 et #3. C’est ce qui est fait ci-bas.

Exemple: Mesure qui retourne le nombre de canaux ou le nombre de #skus

L’exemple suivant utilise la fonction DAX VALUES, qui retourne le nombre de valeurs uniques d’une table ou d’une colonne. Dans notre exemple, nous avons calculé le nombre de canaux (NbCanaux) et ensuite le nombre de #skus (NbSku) uniques dans notre tables de données de ventes.

Remarquez, dans le tableau croisé dynamique ci-bas, que ce nombre n’est pas influencé par certains filtres et qu’il l’est par d’autres. Par exemple, peu importe le mois, le nombre de canaux uniques et le nombre de skus uniques demeurent les mêmes. Ça signigie qu’à tous les mois, l’entreprise a vendu de tous ses skus, dans tous ses canaux. Si cela n’avait pas été le cas, nous aurions obtenus des résultats différents. Quant au nombre de canaux uniques par canal, il retourne évidemment 1 pour chaque canal (voir dernier tableau croisé dynamique) et le nombre de skus uniques par canal retourne le nombre de skus vendus dans chaque canal (voir dernier tableau croisé dynamique également).

À noter que vous auriez pu obtenir le même résultat à partir de la formule suivante: NbCanaux:=COUNTROWS(DISTINCT(Ventes[# canal])).

Exemple: Mesure qui retourne le nombre de transactions de ventes dans le canal #1 peu importe les filtres

La mesure suivante, NbTransactionsCanal1Total retourne le nombre de transactions de ventes dans le canal 1, mais contrairement à la mesure NbTransactionsCanal1, créée plus tôt, celle-ci retourne le nombre total de transactions dans le canal 1, peu importe le contexte de filtres. Ceci est dû à l’emploi de la fonction ALL. Cette fonction fera l’objet d’un billet de blogue séparé. Pour le moment, sachez que cette fonction fait en sorte d’ignorer le contexte de filtres.

Ainsi, peu importe ce que l’on insére comme étiquettes de lignes ou autres filtres, le résultat demeure toujours 4,240, soit le nombre de transactions total du canal 1 dans la table Ventes.

De même, peu imoprte le mois, le nombre de transactions total dans la table Ventes pour le canal 1 demeure à 4,240.

Vous souhaitez en apprendre plus sur Power Pivot?

Jetez un coup d’oeil à nos formations.


NOTRE OFFRE DE FORMATIONS


Le CFO masqué vous offre 13 formations, réparties dans 4 catégories: Tableaux de bord, Modélisation financière, Finance corporative et Analyse et modélisation de données. Ces formations sont offertes en classe, en entreprise et en ligne. Nos formateurs sont des experts dans leur domaine et sont accrédités par Emploi-Québec et vous remettent un certificat, à la fin de chaque formation, que vous pouvez notamment utiliser pour faire reconnaître des heures de formation continue auprès de votre ordre professionnel.

Consulter la liste des formations offertes

Pour info: 514-605-7112 ou info@lecfomasque.com