bi dans un parcours de consultant et for dans power bi et

17
André MEYER-ROUSSILHON Le langage DAX Maîtrisez l’analyse et la modélisation de données dans Power BI et Excel concepts clés, notions avancées et exercices pratiques En téléchargement exemples Excel et Power BI sources exercices et corrigés

Upload: others

Post on 21-Jun-2022

12 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: BI dans un parcours de consultant et for dans Power BI et

André MEYER-ROUSSILHONLe la

ngag

e D

AX

ISBN

: 97

8-2-

409-

0296

5-3

21,9

5 €

Le langage DAXMaîtrisez l’analyse et la modélisation de données dans Power BI et Excel concepts clés, notions avancées et exercices pratiques

Le langage DAXMaîtrisez l’analyse et la modélisation de données dans Power BI et Excelconcepts clés, notions avancées et exercices pratiques

Le langage DAX est un langage majeur d’analyse et de modélisation de données utilisé avec Power BI ou Excel appelé à rapidement s’imposer, d’une part grâce à sa capacité à faire le lien entre l’analyse de tous les jours et les énormes volumes de données stockées dans les bases et, d’autre part, grâce à sa capacité à gérer une grande variété de sources de données. C’est un langage particulièrement puissant dans le sens où il permet l’analyse des données (par l’utilisation de fonctions géné-riques : somme, moyenne… ou spécifiques : analyse temporelle, financière…) mais aussi la modification du modèle de données (de nombreuses fonctions ont pour rôle de créer des tables temporaires ou de changer les relations entre les tables). Enfin c’est un langage dont le ressort principal est un concept clé : le contexte d’évaluation qu’il faut impérativement comprendre et maîtriser pour être à l’aise avec le DAX.Ce livre sur DAX vient compléter les livres Power BI Desktop, De l’analyse de don-nées au reporting et Renforcer, approfondir, explorer écrits par le même auteur. Le but de cet ouvrage est de vous permettre d’acquérir une très bonne maîtrise de ce langage à travers une alternance de bases théoriques indispensables pour com-prendre le fonctionnement du DAX et de nombreux exercices de mise en pratique.Les chapitres abordent les notions suivantes :· La définition du modèle· Les principes fondamentaux du langage DAX· Les variables· Les fonctions d’agrégation et d’itération· La fonction CALCULATE· Les fonctions logiques et les fonctions d’information· Les fonctions de manipulation du modèle physique· Les fonctions de date et la table du temps· Les autres familles de fonctionsChaque chapitre comprend une partie sur l’explication des concepts suivi de plu-sieurs énoncés d’exercices qu’il vous sera possible de réaliser en prenant le temps de réfléchir et de chercher la réponse. Ils sont suivis bien sûr d’une correction détaillée.Ces exercices illustrent les points développés dans la partie concept et bien souvent, apportent des éléments complémentaires : de nouvelles fonctions, des subtilités de concepts... Bref, ils font intégralement partie du cursus d’apprentissage. Ils sont pré-sentés et commentés dans Power BI qui est incontestablement l’outil fait pour le DAX.Pour réaliser ces exercices, vous disposez de deux modèles de données, l’un réfé-rençant les cours de l’or, l’autre simulant les ventes d’une librairie. Ces fichiers sont disponibles en téléchargement ainsi que les fichiers corrigés.

André MEYER-ROUSSILHON suit depuis 20 ans l’évolution des méthodes et outils de BI dans un parcours de consultant et for-mateur, de BusinessObjects à Cognos, de Microstrategy à, aujourd’hui, Tableau et Power BI ; il a également développé de nombreuses compétences dans le domaine de la modélisation dimensionnelle pour les bases de données et de la conduite de projet décisionnel. Surpris par la facilité de mise en œuvre de Power BI, son puissant langage et son évolution permanente, il est passionné par cet outil de BI. Il a créé le site www.daxone.fr où il publie régulièrement des articles pour vous permettre d’approfondir votre connaissance de Power BI.

Pour plus d’informations :

Téléchargementwww.editions-eni.fr.fr

sur www.editions-eni.fr : b sourcesb exemples Excel et Power BIb corrigés des exercices

En téléchargement

exemples Excel et Power BI

sources

exercices et corrigés

SOB_PT_K.indd 47SOB_PT_K.indd 47 02/04/2021 09:57:0402/04/2021 09:57:04

Page 2: BI dans un parcours de consultant et for dans Power BI et

© E

ditio

ns E

NI -

All

right

s res

erve

d1

Chapitre 1IntroductionA. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13B. Le DAX en trois mots. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14C. La présentation des fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15D. Que faut-il attendre de cet ouvrage ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17E. Les sources d’information sur le DAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

Chapitre 2Mise en routeA. Mise en route dans Excel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

1. Installation de Power Pivot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212. Importation des tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223. Rôle et sens de la relation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

B. Mise en route dans Power BI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281. Importation des tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282. Rôle et sens de la relation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

C. Modèle exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33D. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

1. Les relations et leur sens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36E. Corrigés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

1. Les relations et leur sens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37a. Dans Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37b. Dans Power BI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

Chapitre 3Les principes fondamentaux du DAXA. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41B. Les conventions d’écriture du DAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41C. Les mesures et les colonnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

1. Créer une mesure avec SUM, SUMX et RELATED . . . . . . . . . . . . . . . . . . . . . . . . 442. Créer une colonne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

D. Le premier script DAX : créer une table du temps avec Power BI . . . . . . . . . . . . . . . 48E. Créer une table de dates avec Power Pivot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

lcroise
Tampon
Page 3: BI dans un parcours de consultant et for dans Power BI et

Le langage DAX2 Concepts clés, notions avancées et exercices pratiques

F. Création de visuels avec Power BI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531. Créer un tableau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532. Créer un tableau croisé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543. Créer une carte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554. Créer un segment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

G. Création de visuels avec Excel et Power Pivot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571. Créer un tableau croisé dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572. Créer une carte (donnée unique) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593. Créer un segment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

H. Le contexte de filtre et le contexte de ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621. Le contexte de ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622. Le contexte de filtre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633. Les relations à double sens et la propagation du filtre avec CROSSFILTER . . . 674. La transition de contexte avec RELATEDTABLE . . . . . . . . . . . . . . . . . . . . . . . . . 705. Exemple commenté de formule complexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

I. La fonction CALCULATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751. La syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752. Les trois façons de modifier le contexte de filtre

(remplacer, ajouter, supprimer) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76J. L'éditeur de DAX de Power BI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79K. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

1. Les mesures, les colonnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81a. Créer des mesures dans le fichier librairie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81b. Créer des mesures dans le fichier or . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

2. Créer la table du temps avec Power BI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813. Créer la table du temps avec Excel et Power Pivot . . . . . . . . . . . . . . . . . . . . . . . . 814. Les conventions d’écriture du DAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

a. Mettre en forme une formule DAX : exemple 1 . . . . . . . . . . . . . . . . . . . . . . . 84b. Mettre en forme une formule DAX : exemple 2 . . . . . . . . . . . . . . . . . . . . . . . 84

5. Créer les visuels de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85a. Dans Power BI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85b. Dans Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

6. CALCULATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85a. Montant BD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85b. Différence 2019 / 2018. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85c. Pourcentage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85d. Montant moyen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

Page 4: BI dans un parcours de consultant et for dans Power BI et

© E

ditio

ns E

NI -

All

right

s res

erve

d3

L. Corrigés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 861. Les mesures, les colonnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

a. Créer des mesures dans le fichier librairie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86b. Créer des mesures dans le fichier or . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

2. Créer la table du temps avec Power BI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 873. Créer la table du temps avec Excel et Power Pivot . . . . . . . . . . . . . . . . . . . . . . . . 874. Les conventions d’écriture du DAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

a. Mettre en forme une formule DAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88b. Mettre en forme une formule DAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

5. Créer les visuels de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89a. Dans Power BI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89b. Dans Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

6. CALCULATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89a. Le montant pour la catégorie BD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89b. Différence entre le montant 2019 et le montant 2018 . . . . . . . . . . . . . . . . . 90c. Pourcentage de chaque catégorie par rapport au total . . . . . . . . . . . . . . . . . . 90d. Le montant moyen par commande . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

Chapitre 4Utiliser les variablesA. Rôle et déclaration des variables avec VAR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95B. Exemple de lisibilité facilitée et de performance améliorée . . . . . . . . . . . . . . . . . . . . 96C. Correction de formules avec les variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98D. Les variables et le contexte de filtre. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100E. Déclarer une variable à l’intérieur de la formule . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102F. En résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103G. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

1. Renforcer la lisibilité et améliorer la performance . . . . . . . . . . . . . . . . . . . . . . . 1042. Débugger une formule. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1053. Jouer sur le contexte de filtre. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

H. Corrigés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1071. Renforcer la lisibilité et améliorer la performance . . . . . . . . . . . . . . . . . . . . . . . 1072. Débugger une formule. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1093. Jouer sur le contexte de filtre. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

Page 5: BI dans un parcours de consultant et for dans Power BI et

Le langage DAX4 Concepts clés, notions avancées et exercices pratiques

Chapitre 5Agrégation et itérationA. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117B. Pourquoi systématiquement agréger un nombre . . . . . . . . . . . . . . . . . . . . . . . . . . . 117C. Les fonctions d’agrégation (SUM, AVERAGE…) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

1. Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1202. Une utilisation majeure de la fonction MAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1213. Compter avec COUNT et COUNTROWS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

D. Les fonctions d’itération pour agréger (SUMX, AVERAGEX, …). . . . . . . . . . . . . . . 1241. Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1242. Calculer la moyenne mobile avec AVERAGEX . . . . . . . . . . . . . . . . . . . . . . . . . . . 1263. La fonction RANKX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1304. La fonction CONCATENATEX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

E. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1371. Les fonctions d’agrégation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

a. Calculer le cours de l’or à fin de semaine . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137b. Compter le nombre de … . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

2. Les fonctions d’itération pour agréger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139a. Calculer le montant moyen de la commande pour chaque mois. . . . . . . . . 139b. Calculer le montant moyen des ventes

pour les trois meilleurs livres de chaque catégorie . . . . . . . . . . . . . . . . . . . . 140c. La fonction RANKX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140d. La fonction CONCATENATEX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

F. Corrigés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1411. Les fonctions d’agrégation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

a. Calculer le cours de l’or à fin de semaine . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141b. Compter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

2. Les fonctions d’itération pour agréger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145a. Calculer le montant moyen de la commande pour chaque mois. . . . . . . . . 145b. Calculer le montant moyen des ventes

pour les trois meilleurs livres de chaque catégorie . . . . . . . . . . . . . . . . . . . . 146c. La fonction RANKX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147d. La fonction CONCATENATEX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

Page 6: BI dans un parcours de consultant et for dans Power BI et

© E

ditio

ns E

NI -

All

right

s res

erve

d5

Chapitre 6CALCULATE et les modifications du filtreA. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153B. Les principes de CALCULATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

1. La syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1532. Comment CALCULATE modifie le contexte de filtre . . . . . . . . . . . . . . . . . . . . . 155

C. Les arguments de filtres complexes (AND, OR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1561. Sur une colonne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1562. Sur plusieurs colonnes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

D. Les fonctions de filtre : FILTER et KEEPFILTERS . . . . . . . . . . . . . . . . . . . . . . . . . . 1611. FILTER. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1612. KEEPFILTERS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

E. Les fonctions ALL* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1641. ALL, ALLEXCEPT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1652. ALLSELECTED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

F. Ordre des opérations dans CALCULATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168G. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

1. Les principes de CALCULATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170a. Combien de livres par catégorie ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170b. Comprendre le contexte de filtre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

2. Les arguments de filtres complexes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1713. Les fonctions de filtre : FILTER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1724. Les fonctions ALL, ALLEXCEPT et ALLSELECTED . . . . . . . . . . . . . . . . . . . . . . 1735. Trois exercices sur CALCULATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173

a. Les clients nantais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173b. Le nombre de jours où il y a eu des commandes . . . . . . . . . . . . . . . . . . . . . . 174c. Les quantités toutes années et toutes catégories . . . . . . . . . . . . . . . . . . . . . 174

H. Corrigés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1751. Les principes de CALCULATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

a. Combien de livres par catégorie ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175b. Comprendre le contexte de filtre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

2. Les arguments de filtres complexes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1773. Les fonctions de filtre : FILTER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1784. Les fonctions ALL, ALLEXCEPT et ALLSELECTED . . . . . . . . . . . . . . . . . . . . . . 1795. Trois exercices sur CALCULATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

a. Les clients nantais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180b. Le nombre de jours où il y a eu des commandes . . . . . . . . . . . . . . . . . . . . . . 180c. Les quantités toutes années et toutes catégories . . . . . . . . . . . . . . . . . . . . . 181

Page 7: BI dans un parcours de consultant et for dans Power BI et

Le langage DAX6 Concepts clés, notions avancées et exercices pratiques

Chapitre 7Les fonctions logiques et les fonctions d'informationA. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185B. Le traitement conditionnel et les fonctions logiques . . . . . . . . . . . . . . . . . . . . . . . . 186

1. La fonction IF et ses variantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1862. La gestion des erreurs avec IFERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1903. COALESCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190

C. Les fonctions d’information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1921. ISBLANK, ISEMPTY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1922. FILTERS, VALUES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1943. ISFILTERED, ISCROSSFILTERED. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1964. HASONEVALUE, SELECTEDVALUE, ISINSCOPE. . . . . . . . . . . . . . . . . . . . . . . 196

D. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2001. Le traitement conditionnel et les fonctions logiques . . . . . . . . . . . . . . . . . . . . . 2002. Les fonctions d’information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

a. FILTERS, VALUES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201b. HASONEVALUE, SELECTEDVALUE, ISINSCOPE. . . . . . . . . . . . . . . . . . . . 202

E. Corrigés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2021. Le traitement conditionnel et les fonctions logiques . . . . . . . . . . . . . . . . . . . . . 2022. Les fonctions d’information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204

a. FILTERS, VALUES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204b. HASONEVALUE, SELECTEDVALUE, ISINSCOPE. . . . . . . . . . . . . . . . . . . . 205

Chapitre 8Les fonctions de manipulation du modèle physiqueA. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209B. Les fonctions de table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210

1. FILTER, ALL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2112. CALCULATETABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2123. VALUES, DISTINCT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2134. ADDCOLUMNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2165. SUMMARIZE, CROSSJOIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2186. Un mot sur les tables d’agrégation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2217. SELECTCOLUMNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2238. UNION / INTERSECT / EXCEPT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2249. GENERATESERIES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229

Page 8: BI dans un parcours de consultant et for dans Power BI et

© E

ditio

ns E

NI -

All

right

s res

erve

d7

C. Les fonctions de relation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2301. Les types de relations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2302. RELATED / RELATEDTABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2333. USERELATIONSHIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2344. CROSSFILTER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2355. TREATAS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386. LOOKUPVALUE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242

D. Les fonctions de conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2451. CONVERT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2452. FORMAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2463. VALUE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2474. DATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475. TIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247

E. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2491. Les fonctions de table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249

a. Table des livres de littérature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249b. Table des villes et quantité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250c. Table des combinaisons ville-genre et montant . . . . . . . . . . . . . . . . . . . . . . 251d. Agrégat année-moyen de paiement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252e. Quels genres promouvoir ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252

2. Les fonctions de relation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252a. USERELATIONSHIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252b. CROSSFILTER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254c. TREATAS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255

F. Corrigés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2551. Les fonctions de table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255

a. Table des livres de littérature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255b. Table des villes et quantité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257c. Table des combinaisons ville-genre et montant . . . . . . . . . . . . . . . . . . . . . . 258d. Agrégat année-moyen de paiement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259e. Quels genres promouvoir ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259

2. Les fonctions de relation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260a. USERELATIONSHIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260b. CROSSFILTER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261c. TREATAS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263

Page 9: BI dans un parcours de consultant et for dans Power BI et

Le langage DAX8 Concepts clés, notions avancées et exercices pratiques

Chapitre 9Les fonctions de date et la table du tempsA. Créer la table du temps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

1. Faut-il toujours ajouter une table du temps ? . . . . . . . . . . . . . . . . . . . . . . . . . . . 2672. Une ou plusieurs tables ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2683. CALENDARAUTO, CALENDAR et le script DAX . . . . . . . . . . . . . . . . . . . . . . . . 270

B. Travailler avec les semaines (WEEKNUM). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2721. Les normes de calcul de la semaine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2722. Le calcul de la semaine en norme ISO 8601. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273

C. Travailler avec les heures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273D. Les fonctions de date. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276

1. DATEDIFF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2762. NOW, TODAY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2773. DAY, MONTH, QUARTER, YEAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

E. CALCULATE et les fonctions de Time Intelligence. . . . . . . . . . . . . . . . . . . . . . . . . . 2771. Les briques de base de la Time Intelligence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2782. Les fonctions de Time Intelligence

pour cumuler (DATESYTD, TOTALYTD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2793. Le cas particulier du cumul hebdomadaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2804. La moyenne mobile avec AVERAGEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2815. La moyenne mobile avec DATESINPERIOD . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2826. La variation avec DATEADD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2837. DATEADD, PARALLELPERIOD et SAMEPERIODLASTYEAR . . . . . . . . . . . . . 2868. La tendance (ou saisonnalité). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2899. Les autres fonctions de Time Intelligence en deux mots . . . . . . . . . . . . . . . . . . 290

F. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2911. Créer la table du temps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2912. Les fonctions de date. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291

a. DATEDIFF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2913. CALCULATE et les fonctions de Time Intelligence. . . . . . . . . . . . . . . . . . . . . . . 292

a. Calculer la quantité l’année précédente (A-1) . . . . . . . . . . . . . . . . . . . . . . . . 292b. Calculer un cumul annuel de la quantité . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292c. Calculer un total trimestriel glissant de la quantité . . . . . . . . . . . . . . . . . . . 293d. Calculer un cumul perpétuel de la quantité . . . . . . . . . . . . . . . . . . . . . . . . . . 293e. Calculer la variation par rapport au mois précédent . . . . . . . . . . . . . . . . . . . 294f. Le cumul annuel à date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294g. Calculer la moyenne mobile des montants à 7 jours. . . . . . . . . . . . . . . . . . . 295

Page 10: BI dans un parcours de consultant et for dans Power BI et

© E

ditio

ns E

NI -

All

right

s res

erve

d9

G. Corrigés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2951. Créer la table du temps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2952. Les fonctions de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298

a. DATEDIFF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2983. CALCULATE et les fonctions de Time Intelligence . . . . . . . . . . . . . . . . . . . . . . . 300

a. Calculer la quantité l’année précédente (A-1) . . . . . . . . . . . . . . . . . . . . . . . . 300b. Calculer un cumul annuel de la quantité . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301c. Calculer un total trimestriel glissant de la quantité . . . . . . . . . . . . . . . . . . . 301d. Calculer un cumul perpétuel de la quantité . . . . . . . . . . . . . . . . . . . . . . . . . . 302e. Calculer la variation par rapport au mois précédent . . . . . . . . . . . . . . . . . . . 303f. Le cumul annuel à date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304g. Calculer la moyenne mobile des montants à 7 jours. . . . . . . . . . . . . . . . . . . 304

Chapitre 10Aperçu des autres familles de fonctionsA. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307B. Les fonctions de manipulation du texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308C. Les fonctions d’analyse financière . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310D. Les fonctions mathématiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313E. Les fonctions statistiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315

Conclusion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323

Page 11: BI dans un parcours de consultant et for dans Power BI et

Chapitre 6 : CALCULATE et les modifications du filtre©

Edi

tions

EN

I - A

ll rig

hts r

eser

ved

153

Chapitre 6 : CALCULATE et les modifications du f iltreLe langage DaxA. Introduction

SI vous souhaitez approfondir vos connaissances sur la fonction CALCULATE, je vousconseille mon précédent ouvrage, Power BI Desktop : Renforcer, approfondir, explorer,aux Éditions ENI, dont le chapitre 3 décrit notamment des motifs courants et des ana-lyses fréquentes rendues possibles avec CALCULATE. Je ne reviendrai pas sur cespoints, mais je résume les caractéristiques essentielles de cette fonction et j’ajoute icid’autres aspects de son fonctionnement.

B. Les principes de CALCULATEVous l’avez vu depuis le début de cet ouvrage, la fonction CALCULATE revient tout letemps. La raison en est simple, et fondamentale : CALCULATE a le pouvoir de modifierle contexte de filtre généré par le visuel, les segments, le rapport en général.

1. La syntaxeElle est très simple :CALCULATE ( <Expression> [ , <Filtre1> ] [ , <Filtre2> ] [ , ...])Mais ceci amène à de nombreuses remarques.

CALCULATE et la transition de contexte

Tout d’abord, CALCULATE peut s’utiliser avec pour seul argument l’expression qu’ils’agit de calculer. En effet, c’est un rôle second de la fonction : lorsqu’elle est invoquéedans un contexte de ligne (c’est-à-dire lors de la création d’une colonne ou lors de sonutilisation dans une fonction itérative – SUMX par exemple), la formuleCALCULATE(<expression>) déclenche une transition de contexte, et la lignedans son intégralité devient un filtre, qui se propage donc aux tables du modèle.

lcroise
Tampon
Page 12: BI dans un parcours de consultant et for dans Power BI et

Le langage Dax154 Concepts clés, notions avancées et exercices pratiques

Ce phénomène est loin d’être rare : en fait, il est essentiel de se rappeler qu’à chaque foisqu’une mesure est appelée dans une formule, un CALCULATE implicite est systémati-quement ajouté.

Prenons un exemple. La mesure [Montant facturé] est définie par la formule :[Montant facturé] = SUM(Ventes[Montant])Si l’on souhaite connaître le montant moyen facturé chaque jour, la formule s’écrit :[Montant moyen facturé] =AVERAGEX (

Date[Date] ,[Montant facturé]

)Soit, en développant la formule en incluant le CALCULATE implicite :[Montant moyen facturé] =AVERAGEX (

Date[Date] ,CALCULATE([Montant facturé])

)CALCULATE étant invoqué dans le cadre d’un contexte de ligne (dû à la fonction AVE-RAGEX, itérateur), la transition de contexte est déclenchée, et la date est donc propagéeà la table Ventes. Celle-ci est donc filtrée, il ne reste que les lignes de la table Ventescorrespondant à la date du contexte de ligne. C’est ce qui permet le calcul de la moyenne,les montants restants sont additionnés, puis le résultat est divisé par le nombre delignes.

Un nombre de filtres non limité

La seconde remarque tient au nombre de filtres de CALCULATE : vous pouvez en ajou-ter autant que vous le souhaitez. Les filtres sont tous traités simultanément (l’ordre desfiltres n’a donc aucune importance) – mais nous reviendrons sur cette notion, lorsquenous distinguerons les filtres proprement dits et les modificateurs.

Un filtre dans CALCULATE peut être une table (c’est-à-dire le résultat d’une fonction detable, autrement dit une liste de valeurs), ou un prédicat booléen (Vrai/Faux).

Exercice : pour mettre en pratique, vous pouvez réaliser l'exercice Combien de livrespar catégories ? à la fin de ce chapitre.

Page 13: BI dans un parcours de consultant et for dans Power BI et

Chapitre 6 : CALCULATE et les modifications du filtre©

Edi

tions

EN

I - A

ll rig

hts r

eser

ved

155Voici un exemple du premier cas, retournant une liste de valeurs :calculate FILTER =CALCULATE (

[montant] ,FILTER (

produits ,produits[couleur] = "Rouge"

))Voici un exemple du second, retournant vrai ou faux :CALCULATE (

[Montant] ,‘Produit’[Couleur] = ‘Rouge’

)Il est utile et important de noter que cette dernière syntaxe est un raccourci, simple àécrire, qui est systématiquement développé par DAX en :CALCULATE (

[Montant] ,FILTER (

ALL(Produit),‘Produit’[Couleur] = ‘Rouge’

))Le filtre booléen Vrai/Faux cache la fonction de table FILTER, dont le résultat est uneliste de valeurs.

Attention, la première et la deuxième expression ne produisent pas toujours le mêmerésultat. Un exercice vous permettra de creuser ce point.

2. Comment CALCULATE modifie le contexte de filtreJe vous renvoie et je vous encourage à relire la section consacrée à ce point dans lechapitre Les principes fondamentaux du DAX du présent ouvrage (La fonctionCALCULATE - Les trois façons de modifier le contexte de filtre (remplacer, ajouter,supprimer)). Il est essentiel que vous compreniez bien ces notions.

En résumé, CALCULATE agit de trois manières :y Remplacer le contexte de filtre : lorsque le filtre explicite donné comme argument de

la fonction CALCULATE porte sur la même colonne que celle qui définit le contexteimplicite (celui que génère le rapport), CALCULATE remplace ce dernier par lepremier.

y Ajouter au contexte de filtre : lorsque le filtre explicite porte sur une nouvelle colonne,le nouveau filtre est ajouté au filtre implicite.

Page 14: BI dans un parcours de consultant et for dans Power BI et

Le langage Dax156 Concepts clés, notions avancées et exercices pratiques

y Supprimer le contexte de filtre : c’est le rôle de la fonction ALL et de ses variantes.

C. Les arguments de filtres complexes (AND, OR)

1. Sur une colonnePar filtre complexe, il faut comprendre un filtre portant plusieurs fois sur la mêmecolonne, pour encadrer des dates par exemple ou encore, indiquer plusieurs catégories.

Deux cas se présentent : celui où les deux conditions doivent s’appliquer simultanémentet celui où l’une ou l’autre des conditions doit s’appliquer.

Lorsque la date doit être comprise entre deux bornes, alors les conditions doivents’appliquer simultanément. C’est ce qui se passe lorsque vous indiquez plusieurs filtresdans CALCULATE :montant janv-mars 2019 =CALCULATE(

[montant] ,Datum[Date] >= DATE(2019,01,01) ,Datum[Date] <= DATE(2019,03,31)

)

Exercice : pour mettre en pratique, vous pouvez réaliser l'exercice Les arguments defiltres complexes à la fin de ce chapitre.

G Il existe de nombreux cas de figure : vous en trouverez à la fin de cette section untableau récapitulatif simplifié.

Page 15: BI dans un parcours de consultant et for dans Power BI et

Chapitre 6 : CALCULATE et les modifications du filtre©

Edi

tions

EN

I - A

ll rig

hts r

eser

ved

157

Par défaut, les deux conditions dans CALCULATE sont liées par un ET (AND). Laformule précédente pourrait aussi s’écrire à l’aide de l’opérateur && :montant janv-mars 2019 =CALCULATE(

[montant] ,Datum[Date] >= DATE(2019,01,01)&& Datum[Date] <= DATE(2019,03,31)

)Elle peut aussi s’écrire avec l’opérateur AND :montant janv-mars 2019 =CALCULATE(

[montant] ,AND(

Datum[Date] >= DATE(2019,01,01),Datum[Date] <= DATE(2019,03,31)

))

Le cas inverse est celui où l’une ou l’autre des conditions doit s’appliquer. Dans ce cas,c’est l’opérateur OU (OR) qui doit lier les conditions ( symbole || , appelé double pipe,c’est-à-dire les touches G 6) :montant produits verts ou turquoises =CALCULATE(

[montant] ,produits[couleur] = "Vert"|| produits[couleur] = "Turquoise"

)

G Il n’est sans doute pas inutile de rappeler que la table Datum ayant été marquéecomme table de dates, le contexte de filtre induit par le visuel (donc ici le champ Anneemois) est ramené à un filtre sur un ensemble de dates (donc sur le champ Date). Dansle CALCULATE ci-dessus, le filtre porte lui aussi sur le champ Date, il remplace doncle contexte de filtre existant. C’est la raison pour laquelle nous retrouvons le mêmemontant sur toutes les lignes du tableau. Ceci explique également pourquoi la ligne201912 apparaît : bien qu’il n’y ait pas de montant ce mois-là, puisqu’il y en a un pourjanv-mars, cette ligne est rajoutée au tableau.

G Attention, l’opérateur AND (de même que OR) n’accepte que deux arguments. Si votrefiltre doit porter sur trois conditions ou plus, alors privilégiez &&.

Page 16: BI dans un parcours de consultant et for dans Power BI et

Le langage Dax158 Concepts clés, notions avancées et exercices pratiques

La formule précédente pourrait aussi s’écrire à l’aide de l’opérateur IN :montant produits verts ou turquoises =CALCULATE(

[montant] ,produits[couleur] IN { "Vert" , "Turquoise" }

)

Elle peut aussi s’écrire avec l’opérateur OR :montant produits verts ou turquoises =CALCULATE(

[montant] ,OR(

produits[couleur] = "Vert",produits[couleur] = "Turquoise"

))

2. Sur plusieurs colonnesLorsqu’il s’agit de faire porter les filtres sur plusieurs colonnes, de la même table ou detables différentes, il faut à nouveau distinguer le cas où ils s’appliquent simultanémentou si l’un ou l’autre doit s’appliquer.

Dans le premier cas, l’écriture reste simple :montant produits verts en 2019 =CALCULATE(

[montant] ,produits[couleur] = "Vert" ,Datum[Annee] = "2019"

)

GNotez bien les accolades pour énumérer la liste des catégories.

G Attention, l’opérateur OR n’accepte que deux arguments. Si votre filtre doit porter surtrois conditions ou plus, alors privilégiez ||.

Page 17: BI dans un parcours de consultant et for dans Power BI et

Chapitre 6 : CALCULATE et les modifications du filtre©

Edi

tions

EN

I - A

ll rig

hts r

eser

ved

159En revanche, l’utilisation de && n’est plus possible. La formule ci-dessous génère uneerreur :montant produits verts en 2019 (ERREUR) =CALCULATE(

[montant] ,produits[couleur] = "Vert"&& Datum[Annee] = "2019"

)Lorsque l’une ou l’autre condition doit être appliquée (opérateur OU), la syntaxe simplen’est pas non plus possible, et génère la même erreur que précédemment :montant produits verts ou 2019 (ERREUR) =CALCULATE(

[montant] ,produits[couleur] = "Vert"|| Datum[Annee] = "2019"

)

Dans ce cas, il est nécessaire de recourir à la syntaxe développée, complexe, notammentsi les deux colonnes ne proviennent pas de la même table :montant produits verts ou 2019 =CALCULATE(

[montant] ,FILTER(

CROSSJOIN(ALL(produits[couleur]) ,ALL(Datum[Annee])

) ,produits[couleur] = "Vert"|| Datum[Annee] = "2019"

))Ici, la fonction CROSSJOIN retourne une table avec toutes les combinaisons possiblesdes deux colonnes.