Vous êtes sur la page 1sur 950

n

llo
ti
an
Un compendium de techniques pour
Microsoft Excel BI & Microsoft Power BI
V0.11 Révision 98 (2020-05-07)
ch

Vincent Isoz, Daname Kolani, Laurianne Demarlière


É
Vincent ISOZ

Le but de ce fichier est de parcourir avec des exemples simples et concrets le maximum de
fonctions DAX de Power BI permettant de bien comprendre l'utilité de chacune (lorsque associée
à d'autres fonctions ou pas) et de se préparer aussi à la certification Exam 70-778 sur Power BI.

L'idée étant de produire une multitude de petits MWE (Minimal Working Example).

Chaque exemple est donné avec un petit résumé fixant l'objectif à atteindre et à la page suivante,
la résolution avec la capture d'écran de la formule DAX dans la barre de formule et le résultat tel

n
qu'il apparaît dans le tableau de bord ou à l'écran.

Chaque exercice doit être fait dans une feuille Power BI à part!

llo
Le participant devra s'aider de la référence en ligne suivante pour faire les exercices:

https://msdn.microsoft.com/en-us/library/ee634396.aspx

On rappelle :

1. Qu'il n'est pas possible de changer le typage des colonnes à ce jour dans des mesures
DAX. Donc pour les colonnes numériques contenant des erreurs ou des textes, on sera
ti
obligé de d'abord créer des colonnes en DAX qui effectuent le nettoyage avant de pouvoir
faire de mesures avec en DAX!!!!!!!!!!!!!

2. Donc qu'il n'est pas possible de créer des mesures DAX renvoyant des images pour faire
an
des KPI et que vous serez obligé de passer par la création de colonnes DAX!
ch
É

Microsoft Power BI / Microsoft Excel BI 2/950


Vincent ISOZ

1. Table des matières


1. Table des matières................................................................................................................. 3
2. À propos du rédacteur ........................................................................................................ 12
3. Avertissement ...................................................................................................................... 14
4. Votre avis nous intéresse! ................................................................................................... 15
5. Préambule ............................................................................................................................ 16

n
6. Copyright ............................................................................................................................. 17
7. Médiagraphie (liens) ........................................................................................................... 18
8. Introduction ......................................................................................................................... 21
Modélisation de bases de données (schémas en étoile ou flocon) .......................................................... 35

llo
9. Nouveautés ........................................................................................................................... 36
10. Licences ................................................................................................................................ 40
11. Limites.................................................................................................................................. 45
12. Meilleures Pratiques (best practices) ................................................................................ 46
13. Moteurs VertiPaq et XVelocity.......................................................................................... 48
14. Data Munging ...................................................................................................................... 52
Data Input ............................................................................................................................................... 53

ti
Data sources............................................................................................................................................ 54
Tables manuelles ................................................................................................................................................ 54
Tables DAX ....................................................................................................................................................... 56
Microsoft SharePoint ......................................................................................................................................... 61
Bibliothèque d'images (Asset Library) ............................................................................................................................ 61
Liste d'images (liste personnalisée avec colonne Image) ................................................................................................ 66
an
Microsoft Excel .................................................................................................................................................. 70
Import d'un fichier Microsoft Excel stocké sur SharePoint ............................................................................................. 70
Import (fusion) automatique de toutes les feuilles (incluant les futures) d'un classeur ................................................... 75
Import contenu bibliothéques SharePoint ....................................................................................................................... 78
JSON .................................................................................................................................................................. 87
Microsoft SQL Server ........................................................................................................................................ 92
DirectQuery .................................................................................................................................................................... 94
Query Folding ................................................................................................................................................................. 97
OData ............................................................................................................................................................... 101
ch

Dataflow........................................................................................................................................................... 106
Streaming Dataset ............................................................................................................................................ 112
Import vs DirectQuery vs Live Connection.......................................................................................... 126
Data Flows (flux de données) ............................................................................................................... 129
Gateways .............................................................................................................................................. 130
15. Refresh (mises à jour des données).................................................................................. 140
Mises à jour des tables dans Power Query ........................................................................................... 141
Mises à jour des tables dans Power BI Desktop ................................................................................... 142
Mises à jour manuelle de toutes les tables ....................................................................................................... 142
É

Mises à jour manuelle de certaines tables ........................................................................................................ 142


Mises à jour automatique ................................................................................................................................. 143
Mises à jour incrémentielles............................................................................................................................. 145
Mises à jour dans Power BI Service ..................................................................................................... 146
Mises à jour manuelles ..................................................................................................................................... 146
Mises à jour automatiques................................................................................................................................ 146
16. Data Mashup (Power Query) ........................................................................................... 147
Commentaires M .................................................................................................................................. 148

Microsoft Power BI / Microsoft Excel BI 3/950


Vincent ISOZ

Icônes Power Query.............................................................................................................................. 149


Lister toutes les fonctions ..................................................................................................................... 150
Tri sur colonnes multiples .................................................................................................................... 154
Construction d'un VLOOKUP approximatif ........................................................................................ 157
Utiliser des variables ............................................................................................................................ 168
Fusion de feuilles multiples d'un unique fichier Microsoft Excel ........................................................ 169
Traîtement batch d'un dossier de fichiers Microsoft Excel avec feuilles identiquement nommées ..... 170
Fusion de fichiers Microsoft Excel d'un dossier avec feuille unique non identiquement nommées .... 182

n
Fusionner un dossier avec problèmes d'en-têtes de colonnes ............................................................... 184
Ajouter la date de dernières mise à jour sur un rapport ........................................................................ 188
Supprimer automatiquement toutes les lignes après une ligne particulière .......................................... 191
Création d'une Table de calendrier simple avec durée en M ................................................................ 194

llo
Création d'une Table de calendrier avec étendue fixe en M ................................................................. 196
Création d'une Table de calendrier avec variable en M ........................................................................ 197
Création d'une Table de calendrier complète en M .............................................................................. 198
Filtre dynamique en M ......................................................................................................................... 201
Création d'une Fonction simple en M ................................................................................................... 203
Création d'une Fonction avec arguments optionnels en M ................................................................... 204
Création d'une Fonction avec arguments optionnels et typés en M ...................................................... 205
Fonction de nettoyage d'espaces (pour Power Query Excel seulement!) ............................................. 206

ti
Création d'une Liste numérique en M ................................................................................................... 211
Création d'une Séquence numérique en M ........................................................................................... 212
Création d'une Séquence numérique en M avec pas spécifique ........................................................... 213
Création d'une Liste statique en M ....................................................................................................... 214
Création d'une Table statique en M ...................................................................................................... 216
an
Création d'une Table dynamique en M ................................................................................................. 218
Création d'un simple colonne de valeurs aléatoires .............................................................................. 220
Ajout d'une colonne de valeurs aléatoires numériques ......................................................................... 221
Création d'une colonne de valeurs aléatoires catégorielles................................................................... 225
Échantillonnage aléatoire simple .......................................................................................................... 226
Traitements des dates............................................................................................................................ 231
Création d'un paramètre pour chemin de fichiers (ou serveurs) ........................................................... 232
Importer le fichier du jour..................................................................................................................... 240
ch

Compter les mots .................................................................................................................................. 242


Extraire les premiers/derniers de groupes............................................................................................. 255
Numéroter des groupes ......................................................................................................................... 262
Fusionner de multiples lignes en une seule ligne ................................................................................. 270
Lag de colonnes .................................................................................................................................... 275
Fuseaux horaires ................................................................................................................................... 278
17. DAX (Data Analysis Expression) ..................................................................................... 282
Reverse Query (DAX) .......................................................................................................................... 283
Exemple 1.: Requête EVALUATE .................................................................................................................. 284
É

Solution ......................................................................................................................................................................... 286


Exemple 2.: Requête ALL................................................................................................................................ 293
Exemple 3.: Requête SELECTCOLUMNS avec table unique......................................................................... 297
Exemple 4.: Requête VALUES........................................................................................................................ 299
Exemple 5.: Requête DISTINCT ..................................................................................................................... 302
Exemple 6.: Requête SELECTCOLUMNS( ) + DISTINCT( ) + AVERAGE( ) + ROUND( ) ....................... 305
Exemple 7.: Requête CALCULATETABLE ................................................................................................... 306
Exemple 8.: Requête FILTER .......................................................................................................................... 309

Microsoft Power BI / Microsoft Excel BI 4/950


Vincent ISOZ

Exemple 9.: Requête SAMPLE........................................................................................................................ 310


Exemple 10.: Requête SUMMARIZE ............................................................................................................. 311
Exemple 11.: Requête SUMMARIZE avec tables multiples ........................................................................... 315
Exemple 12.: Requête GROUPBY et CURRENTGROUP ............................................................................. 319
Exemple 13.: Requête SUMMARIZECOLUMNS .......................................................................................... 320
Exemple 14.: Requête SUMMARIZECOLUMNS et IGNORE ...................................................................... 321
Exemple 15.: Requête TOPN ........................................................................................................................... 322
Exemple 16.: Requête RANK.EQ .................................................................................................................... 324
Exemple 17.: Requête ROW ............................................................................................................................ 325

n
Exemple 18.: Requête SELECTCOLUMNS avec RELATED ........................................................................ 328
Exemple 19.: Requête GENERATE avec RELATEDTABLE ........................................................................ 332
Exemple 20.: Requête GENERATEALL avec RELATEDTABLE ................................................................ 336
Exemple 21.: Requête NATURALINNERJOIN.............................................................................................. 339

llo
Exemple 22.: Requête NATURALLEFTOUTERJOIN ................................................................................... 344
Exemple 23.: Requête ADDCOLUMNS ......................................................................................................... 350
Exemple 24.: Requête ROLLUP ...................................................................................................................... 352
Exemple 25.: Requête ROLLUPGROUP ........................................................................................................ 353
Exemple 26.: Requête ISSUBTOTAL ............................................................................................................. 355
Exemple 27.: Requête ROLLUPADDISSUBTOTAL ..................................................................................... 357
Data Definition (DAX) ......................................................................................................................... 358
Exercice 28.: Commande CALENDAR ........................................................................................................... 359
Solution ......................................................................................................................................................................... 360

ti
Exercice 29.: Commande CALENDARAUTO ................................................................................................ 363
Solution ......................................................................................................................................................................... 364
Exercice 30.: Commande SUMMARIZE ........................................................................................................ 366
Solution ......................................................................................................................................................................... 367
Exercice 31.: Commande ADDCOLUMNS .................................................................................................... 368
Solution ......................................................................................................................................................................... 369
an
Exercice 32.: Commande UNION ................................................................................................................... 370
Solution ......................................................................................................................................................................... 371
Exercice 33.: Commande UNION et ROW ..................................................................................................... 372
Solution ......................................................................................................................................................................... 373
Exercice 34.: Commande UNION et GENERATESERIES ............................................................................ 374
Solution ......................................................................................................................................................................... 376
Exercice 35.: Commande DATATABLE ........................................................................................................ 377
Solution ......................................................................................................................................................................... 378
Exercice 36.: Commande INTERSECTION .................................................................................................... 380
ch

Solution ......................................................................................................................................................................... 381


Exemple 37.: Commande CROSSJOIN ........................................................................................................... 382
Exemple 38.: Commande GENERATESERIES avec génération de de séquences ou nombres aléatoires ..... 386
Data Analysis (DAX) ........................................................................................................................... 389
Compatibilités fonctions DAX ......................................................................................................................... 393
Raccourcis claviers DAX ................................................................................................................................. 394
Commentaires DAX ......................................................................................................................................... 395
Icônes DAX ..................................................................................................................................................... 396
Organiser les fonctions.................................................................................................................................................. 397
"Table" de mesures ........................................................................................................................................................................ 398
É

Dossiers et sous-dossiers de mesures ............................................................................................................................................. 400


Opérateurs DAX .............................................................................................................................................. 403
DAX Catégorie Fonctions d'Informations........................................................................................................ 404
Exercice 1.: Fonction USERNAME.............................................................................................................................. 404
Exercice 2.: Fonction USERPRINCIPALNAME ......................................................................................................... 405
Exercice 3.: Fonction USERCULTURE ....................................................................................................................... 406
DAX Variables................................................................................................................................................. 407
DAX Catégorie Fonctions Logiques ................................................................................................................ 408
Exercice 4.: Fonction IF (+VALUE)............................................................................................................................. 408

Microsoft Power BI / Microsoft Excel BI 5/950


Vincent ISOZ

Solution ......................................................................................................................................................................................... 409


Exercice 5.: Fonction IF, OR (+VALUE) ..................................................................................................................... 410
Solution ......................................................................................................................................................................................... 411
Exercice 6.: Fonction AND ........................................................................................................................................... 412
Exercice 7.: Fonction SWITCH (pour KPI) .................................................................................................................. 413
Solution ......................................................................................................................................................................................... 414
DAX Catégorie de Filtres ................................................................................................................................ 415
Exercice 8.: Fonction RELATED ................................................................................................................................. 415
Solution ......................................................................................................................................................................................... 417
Exercice 9.: Fonction CALCULATE ............................................................................................................................ 419

n
Solution ......................................................................................................................................................................................... 420
Exercice 10.: Fonctions FILTER et AND dans CALCULATE .................................................................................... 421
Solution ......................................................................................................................................................................................... 422
Exercice 11.: Fonctions FILTER et IN dans CALCULATE ......................................................................................... 423
Solution ......................................................................................................................................................................................... 424
Exercice 12.: Fonction FILTER avec FOUND ou LEFT .............................................................................................. 428

llo
Solutions ........................................................................................................................................................................................ 429
Exercice 13.: Fonction FILTER avec EVALUATE et ORDER BY ............................................................................. 430
Exercice 14.: Fonction ALL.......................................................................................................................................... 431
Solution ......................................................................................................................................................................................... 432
Exercice 15.: Fonction ALL et REMOVEFILTER avec slicer (segment) ignoré et filtre statique supplémentaire ...... 434
Solution ......................................................................................................................................................................................... 435
Exercice 16.: Fonction ALLSELECTED ...................................................................................................................... 436
Exercice 17.: Fonction ALLSELECTED avec calcul ................................................................................................... 438
Solution ......................................................................................................................................................................................... 439
Exercice 18.: Fonction ALLSELECTED avec colonnes multiples ............................................................................... 440
ti
Solution ......................................................................................................................................................................................... 441
Exercice 19.: Fonction ALLSELECTED et EXCEPT( )............................................................................................... 443
Solution ......................................................................................................................................................................................... 444
Exercice 20.: Fonction ALLSELECTED et ISONORAFTER pour les Running Total ................................................ 446
Exercice 21.: Fonction DISTINCT ............................................................................................................................... 451
Solution ......................................................................................................................................................................................... 452
an
Exercice 22.: Fonction ALLEXCEPT ........................................................................................................................... 453
Solution ......................................................................................................................................................................................... 454
Exercice 23.: Fonction HASONEVALUE avec application pour formatage ................................................................ 455
Solution ......................................................................................................................................................................................... 456
Exercice 24.: Fonction HASONEVALUE vs ISFILTERED vs HASONEFILTER ..................................................... 459
Solution ......................................................................................................................................................................................... 463
Exemple 25.: Requête ALLNOBLANKROW .............................................................................................................. 466
Solution ......................................................................................................................................................................................... 468
Exercice 26.: Fonction USERELATIONSHIP.............................................................................................................. 469
Solution ......................................................................................................................................................................................... 472
Exercice 27.: Fonction SELECTEDVALUE ................................................................................................................ 473
ch

Solution ......................................................................................................................................................................................... 474


Exercice 28.: Fonction INTERSECT avec SUM et CALCULATE .............................................................................. 476
Solution ......................................................................................................................................................................................... 479
Exercice 29.: Fonction TREATAS avec SUM et CALCULATE ................................................................................. 480
Solution ......................................................................................................................................................................................... 483
Exercice 30.: Fonction ISINSCOPE ............................................................................................................................. 485
Solution ......................................................................................................................................................................................... 486
DAX Catégorie Fonctions Statistiques ............................................................................................................ 489
Exercice 31.: Fonction SUM ......................................................................................................................................... 489
Solution ......................................................................................................................................................................................... 490
É

Exercice 32.: Fonction SUMX (+RELATED) ............................................................................................................. 493


Solution ......................................................................................................................................................................................... 495
Exercice 33.: Fonction SUMX (+FILTER +AND) ...................................................................................................... 497
Solution ......................................................................................................................................................................................... 498
Exercice 34.: Interlude sur les SUM et SUMX ............................................................................................................. 503
Exercice 35.: Fonction AVERAGE .............................................................................................................................. 506
Premier cas .................................................................................................................................................................................... 507
Solution ......................................................................................................................................................................................... 508
Deuxième cas................................................................................................................................................................................. 510
Solution ......................................................................................................................................................................................... 511
Troisième cas ................................................................................................................................................................................. 512

Microsoft Power BI / Microsoft Excel BI 6/950


Vincent ISOZ

Solution ......................................................................................................................................................................................... 513


Exercice 36.: Fonction AVERAGEX ............................................................................................................................ 514
Solution ......................................................................................................................................................................................... 515
Exercice 37.: Moyenne Résumée, vs Moyenne Globale, vs Moyenne semi-locale....................................................... 517
Solution ......................................................................................................................................................................................... 518
Exercice 38.: Fonction MIN.......................................................................................................................................... 520
Solution ......................................................................................................................................................................................... 521
Exercice 39.: Fonction MINX ....................................................................................................................................... 523
Solution ......................................................................................................................................................................................... 524
Exercice 40.: Fonction MAX ........................................................................................................................................ 525
Solutions ........................................................................................................................................................................................ 526

n
Exercice 41.: Fonction MAXX ..................................................................................................................................... 527
Solutions ........................................................................................................................................................................................ 528
Exercice 42.: Calcul de l'étendue pour utilisation conjointe de MAX et MIN .............................................................. 529
Solution ......................................................................................................................................................................................... 530
Exercice 43.: Utilisation d'un slicer d'intervalle de date avec MAX et MIN ................................................................. 531

llo
Solution ......................................................................................................................................................................................... 532
Exercice 44.: Fonction COUNT .................................................................................................................................... 533
Solution ......................................................................................................................................................................................... 534
Exercice 45.: Fonction COUNT, CALCULATE et USERELATIONSHIP .................................................................. 535
Solution ......................................................................................................................................................................................... 538
Exercice 46.: Fonction COUNTX ................................................................................................................................. 539
Solution ......................................................................................................................................................................................... 540
Exercice 47.: Fonction COUNTA ................................................................................................................................. 541
Solution ......................................................................................................................................................................................... 542
Exercice 48.: Fonction COUNTAX .............................................................................................................................. 543

ti
Solution ......................................................................................................................................................................................... 544
Exercice 49.: Fonction COUNTROWS ........................................................................................................................ 545
Solution ......................................................................................................................................................................................... 546
Exercice 50.: Fonction COUNTBLANK ...................................................................................................................... 547
Solution ......................................................................................................................................................................................... 548
Exercice 51.: Fonction DISTINCTCOUNT .................................................................................................................. 549
Solution ......................................................................................................................................................................................... 550
an
Exercice 52.: Fonction PERCENTILEX.INC ............................................................................................................... 551
Solution ......................................................................................................................................................................................... 552
Exercice 53.: Fonction PERCENTILE.INC .................................................................................................................. 555
Solution ......................................................................................................................................................................................... 556
Exercice 54.: Fonction TOPN simple ........................................................................................................................... 557
Solutions ........................................................................................................................................................................................ 558
Exercice 55.: Fonction TOPN dans calcul .................................................................................................................... 559
Solution ......................................................................................................................................................................................... 560
Exercice 56.: Fonction TOPN dans calcul avec paramètre dynamique ......................................................................... 561
Solution ......................................................................................................................................................................................... 562
ch

Exercice 57.: Fonction TOPN en tant que requête ........................................................................................................ 564


Exercice 58.: Fonction RANKX simple avec ALL( ) ................................................................................................... 565
Solution ......................................................................................................................................................................................... 566
Exercice 59.: Fonction RANK.EQ ................................................................................................................................ 570
Solution ......................................................................................................................................................................................... 571
DAX Catégorie Fonctions de Temps ............................................................................................................... 574
Exercice 60.: Fonctions TODAY et NOW .................................................................................................................... 574
Solutions ........................................................................................................................................................................................ 575
Exercice 61.: Fonction WEEKDAY ............................................................................................................................. 576
Exercice 62.: Fonction YEAR....................................................................................................................................... 577
Exercice 63.: Fonction MONTH ................................................................................................................................... 578
É

Exercice 64.: Fonction EOMONTH.............................................................................................................................. 579


Exercice 65.: Fonction DAY ......................................................................................................................................... 580
Exercice 66.: Fonction DATE et SUM et CALCULATE ............................................................................................ 581
Solution ......................................................................................................................................................................................... 584
Exercice 67.: Fonctions YEARFRAC et INT et TODAY ............................................................................................ 585
Solution ......................................................................................................................................................................................... 586
Exercice 68.: Fonction DATEDIFF .............................................................................................................................. 587
Solution ......................................................................................................................................................................................... 588
Exercice 69.: Fonctions PREVIOUSDAY et NEXTDAY ........................................................................................... 589

Microsoft Power BI / Microsoft Excel BI 7/950


Vincent ISOZ

Solution ......................................................................................................................................................................................... 591


Exercice 70.: Fonctions PREVIOUSMONTH et NEXTMONTH ............................................................................... 593
Solution ......................................................................................................................................................................................... 595
Exercice 71.: Fonctions PREVIOUSQUARTER et NEXTQUARTER ....................................................................... 597
Solution ......................................................................................................................................................................................... 599
Exercice 72.: Fonctions PREVIOUSYEAR et NEXTYEAR ....................................................................................... 601
Solution ......................................................................................................................................................................................... 603
Exercice 73.: Fonction SAMEPERIODLASTYEAR ................................................................................................... 607
Solution ......................................................................................................................................................................................... 609
Exercice 74.: Fonction PARALLELPERIOD ............................................................................................................... 610
Solution ......................................................................................................................................................................................... 612

n
Exercice 75.: Fonction DATEADD .............................................................................................................................. 616
Solution ......................................................................................................................................................................................... 618
Exercice 76.: PARALLELPERIOD vs DATEADD vs SAMEPERIODLASTYEAR .................................................. 620
Solution ......................................................................................................................................................................................... 622
Exercice 77.: Fonctions DATESMTD et DATESYTD................................................................................................ 626

llo
Solution ......................................................................................................................................................................................... 628
Exercice 78.: Fonctions FIRSTDATE et LASTDATE ................................................................................................ 631
Premier cas .................................................................................................................................................................................... 632
Solution ......................................................................................................................................................................................... 634
Deuxième cas................................................................................................................................................................................. 637
Solution ......................................................................................................................................................................................... 638
Exercice 79.: Fonction ENDOFMONTH et CLOSINGBALANCEMONTH ............................................................... 639
Solution ......................................................................................................................................................................................... 641
Exercice 80.: Fonction TOTALX to Date sans date fiscale (TOTALMTD, TOTALQTD, TOTALYTD) ................... 643
Solution ......................................................................................................................................................................................... 644
Exercice 81.: Fonction TOTALX to Date avec date fiscale (TOTALMTD, TOTALQTD, TOTALYTD) ................... 647
ti
Solution ......................................................................................................................................................................................... 649
Exercice 82.: Fonction DATESBETWEEN .................................................................................................................. 650
Solution ......................................................................................................................................................................................... 651
Exercice 83.: STARTOFX et ENDOFX ....................................................................................................................... 652
Solution ......................................................................................................................................................................................... 653
Exercice 84.: Fonction DATESINPERIOD et ENDOFMONTH .................................................................................. 654
an
Solution ......................................................................................................................................................................................... 656
Exercice 85.: Fonctions DATESBETWEEN( ) vs DATESINPERIOD( ) .................................................................... 658
Solution ......................................................................................................................................................................................... 659
Exercice 86.: Fonction PREVIOUSX et NEXTX ......................................................................................................... 660
Solution ......................................................................................................................................................................................... 661
Exercice 87.: Fonction FIRSTNONBLANK ................................................................................................................ 663
Solution ......................................................................................................................................................................................... 665
Exercice 88.: Fonction EARLIER ................................................................................................................................. 667
Solution ......................................................................................................................................................................................... 668
Exercice 89.: Fonction EARLIER pour "SmartIndex" .................................................................................................. 671
ch

Solution (méthode "ancienne" avec EARLIER( )) ......................................................................................................................... 672


Solution (méthode "moderne" sans EARLIER( )).......................................................................................................................... 673
Exercice 90.: Mois précédent filtré ............................................................................................................................... 674
Solution ......................................................................................................................................................................................... 675
DAX Catégorie Fonctions d'Information et Parent/Enfant .............................................................................. 677
Exercice 91.: Fonction LOOKUPVALUE pour relation circulaire ............................................................................... 677
Solution en Power Query ............................................................................................................................................................... 678
Exercice 92.: Fonction LOOKUPVALUE pour sélection de scénarios ........................................................................ 682
Solution ......................................................................................................................................................................................... 683
Exercice 93.: Fonction PATH ....................................................................................................................................... 684
Solution ......................................................................................................................................................................................... 685
É

Exercice 94.: Fonction LOOKUPVALUE et PATHITEM ........................................................................................... 686


Solution ......................................................................................................................................................................................... 688
DAX Catégorie Fonctions de Texte ................................................................................................................. 690
Exercice 95.: Fonction FORMAT (+WEEKDAY, ADDCOLUMNS et YEAR et DAY( ) ) ........................................ 690
Solution ......................................................................................................................................................................................... 691
Tables des valeurs par défauts de la fonction FORMAT ................................................................................................................ 692
Exercice 96.: Fonction VALUE .................................................................................................................................... 693
Exercice 97.: Fonction UNICHAR (+VAR) ................................................................................................................. 694
Solution ......................................................................................................................................................................................... 695
Exercice 98.: Fonction FIND( ) et UPPER( ) ................................................................................................................ 697

Microsoft Power BI / Microsoft Excel BI 8/950


Vincent ISOZ

Solution ......................................................................................................................................................................................... 698


Exercice 99.: Fonction VALUES avec SEARCH( ) et FIRSTNONBLANK( ) ........................................................... 699
Solution ......................................................................................................................................................................................... 700
Exercice 100.: Fonction CONCATENATEX( ) ............................................................................................................ 701
Solution ......................................................................................................................................................................................... 702
DAX Catégorie Finance ................................................................................................................................... 703
Exercice 101.: Fonction XIRR (annuel) ........................................................................................................................ 703
Solution ......................................................................................................................................................................................... 704
Exercice 102.: Fonction XNPV..................................................................................................................................... 706
Solution ......................................................................................................................................................................................... 707

n
DAX Patterns ................................................................................................................................................... 708
Exercice 103.: Quick Measures (mesures rapides) ........................................................................................................ 709
Catégorie Texts .............................................................................................................................................................................. 713
Catégorie Mathematical operations................................................................................................................................................ 723
Catégorie Totals ............................................................................................................................................................................. 738
Catégorie Time Intelligence ........................................................................................................................................................... 743

llo
Catégorie Aggregate per category .................................................................................................................................................. 781
Catégorie Filters............................................................................................................................................................................. 794
Exercice 104.: Capabilité 6 Sigma ................................................................................................................................ 811
Exercice 105.: Moyenne Mobile ................................................................................................................................... 813
Solution ......................................................................................................................................................................................... 814
Exercice 106.: Valeur modale (cas unimodal) .............................................................................................................. 819
Solution ......................................................................................................................................................................................... 820
Exercice 107.: Médiane................................................................................................................................................. 823
Solution ......................................................................................................................................................................................... 824
Exercice 108.: Moyenne pondérée ................................................................................................................................ 825

ti
Solution ......................................................................................................................................................................................... 826
18. Data Optimization............................................................................................................. 827
Désactiver le Auto Date/Time .............................................................................................................. 828
Performance Analyzer .......................................................................................................................... 830
DAX Studio .......................................................................................................................................... 833
an
Utiliser le Query Folding ...................................................................................................................... 836
Identifier les colonnes gourmandes en mémoire (DAX Studio) ........................................................... 837
Data Preview de Power Query.............................................................................................................. 839
19. Data Viz.............................................................................................................................. 841
Thèmes.................................................................................................................................................. 842
Rappels importants des pièges dans les fichiers d'exercices................................................................. 843
Data Viz Normal (Desktop) screen....................................................................................................... 844
Boutons ............................................................................................................................................................ 844
ch

Créer des boutons de navigation ................................................................................................................................... 844


Créer des boutons pour ouvrir des liens ........................................................................................................................ 844
Créer des boutons pour effacer tous les filtres .............................................................................................................. 844
Q&A................................................................................................................................................................. 844
Slicers (segments) ............................................................................................................................................ 847
Slicers de dates relatifs.................................................................................................................................................. 847
Trier un slicer (segment) par ordre chronologique des mois ......................................................................................... 848
Trier un slicer (segment) par ordre spécifique .............................................................................................................. 849
Slicer Between de dates, filtré par des dates ................................................................................................................. 850
Masquer/Réafficher un slicer ........................................................................................................................................ 850
É

Symboles Unicodes .......................................................................................................................................... 853


Créer des groupes ............................................................................................................................................. 853
Formatage conditionnel des barres en fonction d'une valeur cible ................................................................... 854
Titres dynamiques (avril 2019) ........................................................................................................................ 855
Visuel Word Cloud .......................................................................................................................................... 856
Visuel Microsoft Visio ..................................................................................................................................... 857
Visuel Synoptic Panel by OKViz ..................................................................................................................... 857
Data Viz Mobile (phone) screen ........................................................................................................... 859

Microsoft Power BI / Microsoft Excel BI 9/950


Vincent ISOZ

20. Data Sharing (Power BI Services) ................................................................................... 860


Custom Branding .................................................................................................................................. 862
Dashboard ............................................................................................................................................. 864
Workspaces App (espaces de travail) ................................................................................................... 865
Partager un Workspace App............................................................................................................................. 865
Publier un Workspace App .............................................................................................................................. 865
Workspaces orphelins ...................................................................................................................................... 873
RLS (Row Level Security) ................................................................................................................... 877

n
Partage .................................................................................................................................................. 888
Embed Code ..................................................................................................................................................... 888
Intégration dans Microsoft Word ..................................................................................................................... 893
Intégration dans Microsoft Excel ..................................................................................................................... 895
Intégration dans Microsoft PowerPoint............................................................................................................ 896

llo
Intégration dans Microsoft Teams.................................................................................................................... 899
Intégration dans Microsoft OneNote App ........................................................................................................ 901
Import de fichiers Microsoft Excel ....................................................................................................... 905
Liens avec filtres ................................................................................................................................... 916
Alertes................................................................................................................................................... 917
Power BI Embedded ............................................................................................................................. 918
Créer un Tenant................................................................................................................................................ 921
Obtenir le Client ID (ie Application ID) et Client Secret ................................................................................. 921

ti
Obtenir l'ID du rapport ..................................................................................................................................... 926
Obtenir le Tenant ID ........................................................................................................................................ 927
Intégration ........................................................................................................................................................ 930
C# .Net .......................................................................................................................................................................... 930
Javascript ...................................................................................................................................................................... 931
Administration ...................................................................................................................................... 933
an
Monitorer les coûts........................................................................................................................................... 936
21. Report Builder................................................................................................................... 940
Data Munging ....................................................................................................................................... 941
Microsoft SQL Server Express ........................................................................................................................ 941
Microsoft Access ............................................................................................................................................. 942
22. Intelligence Artificielle et Analyse avancée avec R et Python....................................... 945
23. FAQ (Frequently Asked Questions) ................................................................................ 946
24. Assessment (questions de révision) .................................................................................. 947
ch

25. Listes des tableaux et figures ........................................................................................... 948


26. Index ................................................................................................................................... 949
É

Microsoft Power BI / Microsoft Excel BI 10/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 11/950


Vincent ISOZ

2. À propos du rédacteur

Nom Prénom: ISOZ Vincent


Domicilié à ce jour à Lausanne (Suisse)

n
Formation: Ingénieur Physicien HES
Équivalence Internationale: Bachelor of Science

llo
Année de naissance: 1978

Je suis consultant en mathématiques appliquées dans le tutorat d'analystes quantitatifs (niveau


Bac+5 à Bac+7) et auteur de plusieurs livres électroniques dans les domaines suivants:

• maîtrise statistique des processus/procédés (méthodes paramétriques et non


paramétriques) avec Minitab ti
modélisation prévisionnelle/décisionnelle avancée (arbres de décisions, chaînes de
Markov)
an
• recherche opérationnelle (simplexe, algorithmes génétiques, algorithme GRG)
• data mining / machine learning (réseaux de neurones, ACP, AFC, régressions, scoring,
clustering, etc.) avec R, Python ou MATLAB
• modélisation du risque en gestion de projets et finance d'entreprise (monte-carlo, etc.)
• gestion de projets (modèles et best practices théoriques EFQM+Six Sigma, Microsoft
Project)
ch

• ISO 9001:2008, 5807:1985, 10015:1999, 31000+31010:2009, 8258:1991, 10017:2003,


etc.
• Adobe Photoshop et Illustrator
• 12 applications de la suite Microsoft Office System (Project, Visio, SharePoint, Access,
etc.)
É

À ce jour, j'ai à mon actif des interventions dans plus de ~200 entreprises dont 10 du Fortune
500 selon listing 2009 et 3 universités et écoles d'ingénieurs suisses (pour des cours de
modélisation de bases de données et simulations stochastiques du risque). J'ai également fait des
formations de plusieurs dirigeants de multinationales en one to one.

Accessoirement j'interviens pour des formations sur des logiciels comme Microsoft Project,
@Risk, MS Visio, Microsoft Access, MS SharePoint (architecture et gouvernance) et une

Microsoft Power BI / Microsoft Excel BI 12/950


Vincent ISOZ

vingtaine d'autres dont je délègue l'organisation à des entreprises spécialisées dans la formation
continue en bureautique (niveau licence et en-dessous).

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 13/950


Vincent ISOZ

3. Avertissement
Le contenu du présent support est élaboré par un processus de développement par lequel des
experts DAX sont parvenus à un consensus. Ce processus qui rassemble des participants
bénévoles recherche également les points de vue de personnes intéressées par le sujet de cet
ouvrage. En tant que responsable du présent support, j'assure l'administration du processus et je
fixe les règles qui permettent de promouvoir l'équité dans l'approche d'un consensus. Je me

n
charge également de rédiger les textes, parfois de les tester/évaluer ou de vérifier
indépendamment l'exactitude/solidité ou l'exhaustivité des informations présentées.

Je décline toute responsabilité en cas de dommages corporels, matériels ou autres de quelque

llo
nature que ce soit, particuliers, indirects, accessoires ou compensatoires, résultant de la
publication, de l'application ou de la confiance accordée au contenu du présent support. Je
n'émets aucune garantie expresse ou implicite quant à l'exactitude ou à l'exhaustivité de toute
information publiée dans le présent support, et ne garantit aucunement que les informations
contenues dans cet ouvrage satisfassent un quelconque objectif ou besoin spécifique du lecteur.
Je ne garantis pas non plus les performances de produits ou de services d'un fabricant ou d'un
vendeur par la seule vertu du contenu du présent support.
ti
En publiant des textes, il n'est pas dans l'intention principale du présent support de fournir des
services de spécialistes ou autres au nom de toute personne physique ou morale ni pour mon
compte, ni d'effectuer toute tâche devant être accomplie par toute personne physique ou morale
au bénéfice d'un tiers. Toute personne utilisant le présent support devrait s'appuyer sur son
an
propre jugement indépendant ou, lorsque cela s'avère approprié, faire appel aux conseils d'un
spécialiste compétent afin de déterminer comment exercer une prudence raisonnable en toute
circonstance. Les informations et les normes concernant le sujet couvert par le présent support
peuvent être disponibles auprès d'autres sources que le lecteur pourra souhaiter consulter en
quête de points de vue ou d'informations supplémentaires qui ne seraient pas couverts par le
contenu du présent site Internet.

Je ne dispose (malheureusement...) d'aucun pouvoir dans le but de faire respecter la conformité


ch

au contenu du présent ouvrage, et je ne m'engage nullement à surveiller ni à faire respecter une


telle conformité. Je n'exerce (à ce jour...) aucune activité de certification, de test ni d'inspection
de produits, de conceptions ou d'installations à fins de santé ou de sécurité des personnes et des
biens. Toute certification ou autre déclaration de conformité en matière d'informations ayant trait
à la santé ou à la sécurité des personnes et des biens, mentionnée dans le présent support, ne peut
aucunement être attribuée au contenu du présent support et demeure sous l'unique responsabilité
de l'organisme de certification ou du déclarant concerné.
É

Microsoft Power BI / Microsoft Excel BI 14/950


Vincent ISOZ

4. Votre avis nous intéresse!


En tant que lecteur de ce document, vous êtes le critique et le commentateur le plus important.
Votre opinion compte et il est très intéressant de savoir ce qui est bien, ce qui peut être mieux et
les sujets que vous souhaiteriez voir être traités.

Vous pouvez m'envoyer un e-mail pour partager ce que vous avez aimé ou détesté dans le

n
présent document afin d'en assurer une amélioration continue.

Notez que malheureusement, je ne peux pas répondre gratuitement à des questions techniques
d'ingénierie ou de problématique d'entreprise par e-mail pour des raisons professionnelles

llo
évidentes.

E-mail: isoz@sciences.ch

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 15/950


Vincent ISOZ

5. Préambule
Attention! Ce document est un support de notes et d'exercices plus qu'un livre sur Power BI (il en
existe déjà de nombreux sur le sujet de plusieurs milliers de pages donc cela ne vaut pas la peine
de recréer la roue).

Le seul intérêt de ce support est de compiler au propre les questions qui m'ont été le plus souvent

n
demandées par mes clients et participants à ce jour et particulièrement sur l'aspect DAX de
Microsoft Power BI.

L'ordre dans lesquels les sujets sont présentés peut être perturbant mais gardez à l'esprit encore

llo
une fois que ce document évolue au fur et à mesure de mes interventions! Il n'y pas été écrit dans
l'optique de faire un livre publié ou publiable sur Microsoft Power BI!!!

Quitte à me répéter… pour ceux qui veulent apprendre la Data Science ou Data Analysis avec R
ou Python dans Microsoft Power BI, référez-vous aux supports de cours y relatifs (2300 pages
sur R et environ 700 pages sur Python).

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 16/950


Vincent ISOZ

6. Copyright
Ce document est soumis à la réglementation européenne sur le droit d'auteurs et droits voisins.
Même si vous pouvez l'échanger entre collègues et amis sans aucun danger, nous interdisons sa
publication et partage sur Internet (Scribd, Archive.org, Libgen, LinkedIn, Facebook, Twitter,
PirateBay et autre).

n
Nous vous remercions pour votre compréhension.

llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 17/950


Vincent ISOZ

7. Médiagraphie (liens)
Voici quelques liens internet très utiles si vous êtes utilisateur Power BI:

• https://powerbi.microsoft.com/en-us/blog/
• https://ideas.powerbi.com
• https://www.microsoft.com/en-us/microsoft-365/roadmap

n
• http://community.powerbi.com/t5/Forums/ct-p/Forums
• https://www.daxpatterns.com/
• https://pragmaticworks.com/training/on-demand-training

llo
https://www.linkedin.com/learning/
• https://ideas.powerbi.com/forums/265200-power-bi-ideas
• https://curbal.com/donwload-center
• https://docs.microsoft.com/en-us/

Quelques add-ins:

• https://www.sqlbi.com/tools/vertipaq-analyzer/




ti
https://www.sqlbi.com/tools/dax-studio/
http://radacad.com/power-bi-helper
https://powerbi.tips/tools/report-theme-generator-v3/
https://www.powerbitiles.com/?app=PBIRobots
an
• https://binokula.com/features/
• https://charticulator.com/
• https://synoptic.design/

Toutes les versions précédentes de Power BI:

• https://zenatti.net/2017/07/04/power-bi-previous-versions/
ch

Voici un lien vers un PDF utile détaillant de nombreuses fonctions DAX:

• https://download.microsoft.com/download/0/F/B/0FBFAA46-2BFD-478F-8E56-
7BF3C672DF9D/Data%20Analysis%20Expressions%20-%20DAX%20-
%20Reference.pdf

Ou un autre lien utile relativement à DAX:


É

• https://dax.guide/

Quelques liens vers de visuels pros pour Power BI et exemple de tableaux de bords:

• https://zoomcharts.com
• https://powerbi.microsoft.com/en-us/partner-showcase/

Microsoft Power BI / Microsoft Excel BI 18/950


Vincent ISOZ

Et les chaînes YouTube les plus importantes (toutes en anglais) et dans l'ordre d'importance:

• https://www.youtube.com/channel/UCy--PYvwBwAeuYaR8JLmrfg
• https://www.youtube.com/channel/UCJ7UhloHSA4wAqPzyi6TOkw
• https://www.youtube.com/channel/UCy2rBgj4M1tzK-urTZ28zcA

Le lien vers le code source (GitHub) de tous les visuels Power BI afin d'apprendre à en créer des
personnalisés:

n
• https://github.com/Microsoft/PowerBI-visuals
• https://microsoft.github.io/PowerBI-visuals/samples/

llo
Voici les livres que je recommande à ce jour (dans l'ordre de lecture en haut à gauche d'en bas à
droite):

ti
an
ch
É

Et pour les vidéos de votre serviteur (disponible avec votre abonnement LinkedIn ou via le site
web Video2Brain.com):

Microsoft Power BI / Microsoft Excel BI 19/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 20/950


Vincent ISOZ

8. Introduction
Je tiens d'abord à reproduire ici les illustrations utilisées dans la présentation PowerPoint que
j'utilise pour présenter l'écosystème Power BI et R à mes clients. Cependant les illustrations ne
seront que peu commentées!

Voici d'abord le dernier quadrant magique de Gartner relativement à la BI:

n
llo
ti
an
ch

Rappelons, car cela aide à comprendre le fonctionnement de la Data Science, le flux suivant de
travail:
É

Microsoft Power BI / Microsoft Excel BI 21/950


Vincent ISOZ

n
llo
ti
Ce qui correspond explicitement dans l'écosystème Power BI à:
an

Power
ch

Power BI/R
Power Map
View
Power
É

Pivot/DAX/MDX
Power Query/M

Microsoft Power BI / Microsoft Excel BI 22/950


Vincent ISOZ

Il peut être intéressant de bien différencier la Data Science avec la Business Analysis comme
l'illustre le diagramme suivant:

n
llo
ti
an
Ou avec une autre approche pédagogique:
ch
É

Microsoft Power BI / Microsoft Excel BI 23/950


Vincent ISOZ

Ou encore:

n
llo
ti
an
Et les différents rôles qui font consensus dans le domaine de la Data Science:
ch
É

Microsoft Power BI / Microsoft Excel BI 24/950


Vincent ISOZ

Pour résumer un peu, Power BI c'est:

n
llo
ti
Pour ceux qui n'ont jamais vu à quoi ressemble Microsoft Power Query dans Excel ou dans
Power BI, voici une capture d'écran:
an
ch
É

Microsoft Power BI / Microsoft Excel BI 25/950


Vincent ISOZ

n
llo
ti
an
Figure 1Vue d'ensemble de Power Query
ch
É

Microsoft Power BI / Microsoft Excel BI 26/950


Vincent ISOZ

n
llo
ti
Figure 2 Types des jointures typiques en SQL et Power Query
an
ch
É

Microsoft Power BI / Microsoft Excel BI 27/950


Vincent ISOZ

n
llo
ti
an
Figure 3 Vue d'ensemble de Power Pivot
ch
É

Microsoft Power BI / Microsoft Excel BI 28/950


Vincent ISOZ

n
llo
ti
an
Figure 4Vue d'ensemble de Power View
ch
É

Microsoft Power BI / Microsoft Excel BI 29/950


Vincent ISOZ

n
llo
ti
Figure 5Vue d'ensemble de Power Map
an
ch
É

Microsoft Power BI / Microsoft Excel BI 30/950


Vincent ISOZ

n
llo
ti
an
Figure 6Vue d'ensemble de Power BI
ch
É

Microsoft Power BI / Microsoft Excel BI 31/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 32/950


Vincent ISOZ

n
llo
ti
an
Figure 7Vue d'ensemble de R Shiny
ch
É

Microsoft Power BI / Microsoft Excel BI 33/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 34/950


Vincent ISOZ

Modélisation de bases de données (schémas en étoile ou


flocon)
J'ai déjà écrit un chapitre sur la modélisation de bases de données dans mon livre sur Microsoft
Access.

Le lecteur pourra le trouver ici:

n
http://www.sciences.ch/dwnldbl/divers/MSAccess.pdf

pages 21 à 47.

llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 35/950


Vincent ISOZ

9. Nouveautés
La liste des nouveautés mensuelles de Power BI depuis Février 2015est résumée ici en français:

https://docs.microsoft.com/fr-fr/power-bi/desktop-latest-update-archive

Août 2019

n
• Création de rapports
o Regroupement des visuels
o Migration vers le volet de filtre

llo
o Sélecteur de style d’icône pour la mise en forme conditionnelle des icônes
o Avertissements concernant la mise en forme conditionnelle
• Analytique
o Améliorations des visuels des influenceurs clés, disponibilité générale
• Éléments visuels
o Nouveaux visuels personnalisés et mises à jour
• Connectivité aux données
o Prise en charge des conteneurs SAP HANA HDI

o PostgreSQL DirectQuery
ti
o Modifier les variables SAP dans le service Power BI (préversion)

o Connecteur MarkLogic maintenant en disponibilité générale


o Nouvelle catégorie Power Platform dans Obtenir des données
an
• Applications modèles
o Pages Facebook - Analytique de base

Juillet 2019

• Création de rapports
o Jeux d’icônes pour les tableaux et les matrices
o Prise en charge des pourcentages pour la mise en forme conditionnelle par des
ch

règles
o Nouveau volet Filtrer à présent en disponibilité générale
o Prise en charge des couleurs de données lors de l’utilisation d’un axe de lecture
sur des graphiques à nuages de points
o Améliorations des performances lors de l’utilisation des dates relatives et des
sélecteurs déroulants
• Analytique
É

o Totaux pour le visuel Influenceurs clés (préversion)


o Améliorations des agrégations
• Éléments visuels
o Le visuel PowerApps est désormais certifié
o Trois nouveaux visuels personnalisés et des mises à jour
• Connectivité aux données
o Connecteur Azure Data Lake Storage Gen2 (bêta)

Microsoft Power BI / Microsoft Excel BI 36/950


Vincent ISOZ

o Connecteur Dynamics 365 Customer Insights


• Préparation des données
• Nouvelle transformation : Fractionner la colonne par position

Juin 2019

• Création de rapports
o Mise à jour de la conception du volet

n
o Filtres de niveau visuel pour les sélecteurs
o Tri pour le volet Analyseur de performances
o Mises à jour de la mise en forme conditionnelle pour les options de mise en forme
o Info-bulles pour l’en-tête des visuels

llo
o Personnalisation de l’étiquette du total des tableaux et des matrices
o Prise en charge de la synchronisation des sélecteurs pour le sélecteur de hiérarchie
o Tailles de police cohérentes entre les visuels
• Analytique
o Mises à jour des visuels des influenceurs clés (préversion)
o Influenceurs clés avec Live Connect pour les jeux de données Power BI
o Accessibilité des influenceurs clés

• Modélisation
ti
o Prise en charge de la sécurité au niveau des lignes cloud
o Accessibilité de la boîte de dialogue Gérer les agrégations

o Nouvel opérateur de comparaison DAX = =


an
• Éléments visuels
o Volet de visualisation personnalisé (préversion)
o Trois nouveaux visuels personnalisés et des mises à jour
• Connectivité aux données
o Se connecter à des jeux de données partagés et certifiés
o Connecteur Common Data Service désormais en disponibilité générale
o Connecteur Azure Data Explorer désormais en disponibilité générale
o Améliorations apportées au connecteur Cosmos DB
ch

o Connecteur de données Entersoft


• Préparation des données
o Améliorations apportées à M Intellisense

Mai 2019

• Création de rapports
É

o Volet Analyseur de performances


o Améliorations des volets de filtre (préversion)
o Navigation avec le clavier dans les tableaux et les matrices
o Contrôle de la position des étiquettes de données sur les lignes
o Contrôle de la taille du texte des indicateurs visuels des KPI
• Analytique
o Améliorations des visuels des influenceurs clés (préversion)

Microsoft Power BI / Microsoft Excel BI 37/950


Vincent ISOZ

o Prise en charge du compartimentage


o Options de mise en forme
o Prise en charge mobile
• Modélisation
o Désactiver les tableaux de dates automatiques pour les nouveaux rapports
o Mise à jour de la fonction DAX ALLSELECTED
• Éléments visuels
o Mises à jour d’ArcGIS Maps for Power BI

n
o Six nouveaux visuels personnalisés et des mises à jour
• Connectivité aux données
o Connecteur Essbase - Prise en charge des requêtes natives (MDX)

llo
o Connecteur Intune Data Warehouse
o Connecteur Tenforce
o Connecteur Roamler
• Autre
o Annulation automatique des requêtes pour Power BI Desktop

Avril 2019

• Création de rapports ti
o Améliorations du volet des filtres
o Mise en forme conditionnelle pour les titres des visuels
o Mise en forme conditionnelle pour les actions d’URL web pour les boutons, les
an
formes et les images
• Analytique
o Exploration entre les rapports
o Le visuel Influenceurs clés prend désormais en charge l’analyse en continu pour
les cibles numériques
o Prise en charge de Python - pas en disponibilité générale
o Mise en correspondance partielle de synonymes de termes dans Questions et
réponses
ch

• Modélisation
o Nouvelle fonction DAX - ALLCROSSFILTERED
• Visuels personnalisés
o Un nouveau visuel personnalisé
• Connectivité aux données
o Connecteur de dataflow Power BI maintenant en disponibilité
o Le connecteur Oracle Essbase prend désormais en charge DirectQuery et est en
É

disponibilité générale
o Connecteur PDF maintenant en disponibilité générale
o Connecteur Web By Example - inférence automatique des tables
o Connecteur Intersystems IRIS
o Connecteur Indexima
o Connecteur Luminis InformationGrid
o Connecteur Solver BI360

Microsoft Power BI / Microsoft Excel BI 38/950


Vincent ISOZ

o Connecteur Paxata
• Préparation des données
o Améliorations et disponibilité générale du profilage des données
o Améliorations des performances et disponibilité générale de la fusion
approximative
o M Intellisense est pris en charge dans la barre de formule et la boîte de dialogue
des colonnes personnalisées, et est en disponibilité générale

n
Autre
o Générateur de rapports paginés Power BI

Mars 2019

llo
• Création de rapports
o Segment à sélection unique
o Prise en charge de cartes Bing thermiques
o Sélection par étiquettes d’axes
o Mise en forme d’info-bulles par défau
o Prise en charge d’URL web statiques pour les boutons, formes et images
o Améliorations des volets de filtre
ti
o Options d’alignement des pages
o Sélection des volets de filtre
o Mises à jour de la mise en forme de cartes
o Interaction visuelle accessible
an
• Analytique
o Recommandations sous forme de questions et réponses pour améliorer les
résultats
o Affichage des dates sous forme de hiérarchie maintenant mis à la disposition
générale
• Modélisation
o Nouvelle vue de modélisation maintenant en disponibilité générale
o Nouvelles fonctions DAX
ch

• Visuels personnalisés
o Paramètre de visuels personnalisés nouvellement certifiés dans le portail
d’administration
o Deux nouveaux visuels personnalisés
• Connectivité aux données
o Le connecteur PDF prend désormais en charge les tables s’étendant sur plusieurs
pages (préversion)
É

o Connecteur industriel pour installation intelligente de l'App Store


o Connecteur Azure Cost Management

….

Microsoft Power BI / Microsoft Excel BI 39/950


Vincent ISOZ

10. Licences
Nous donnerons plus loin un calculateur que Microsoft à mis en ligne pour dimensionner
correctement les licences. Mais d'abord voir un résumé non-exhaustif:

n
llo
ti
an

Ensuite relativement à R, voici ce qu'il faut savoir:


ch
É

Microsoft Power BI / Microsoft Excel BI 40/950


Vincent ISOZ

https://docs.microsoft.com/en-us/power-bi/service-r-visuals

Ou sous un autre format globalement:

n
llo
ti
an
ch
É

Pour plus de détails sur Microsoft Power Report Server, se rendre à la page suivante:

Microsoft Power BI / Microsoft Excel BI 41/950


Vincent ISOZ

https://docs.microsoft.com/en-us/power-bi/report-server/compare-report-server-service

Pour plus d'informations:

https://powerbi.microsoft.com/fr-fr/pricing/

https://powerbi.microsoft.com/en-us/calculator/

n
Voici les plans actuel de capacité de Microsoft Power BI:

llo
ti
an

Pour intégrer Power BI dans des applications personnalisées (Power BI Embedded), six plans de
capacité sont disponibles via le modèle de licence Premium.
ch

La capacité Power BI Embedded est facturée à l'heure, peut être achetée à l'heure et peut être
suspendue, ce qui signifie qu'aucun engagement à long terme pour une capacité spécifique.
É

Microsoft propose 3 SKU pour la version la version embedded:

Microsoft Power BI / Microsoft Excel BI 42/950


Vincent ISOZ

n
llo
ti
an

Point important:
ch
É

Microsoft Power BI / Microsoft Excel BI 43/950


Vincent ISOZ

n
llo
Mais à savoir aussi:
ti
an
ch
É

Pour plus d'informations:

https://docs.microsoft.com/en-us/power-bi/developer/embedded-faq

Microsoft Power BI / Microsoft Excel BI 44/950


Vincent ISOZ

11. Limites
Voici les limites les plus problématiques qui me sont remontées actuellement concernant
Power BI:

• Le logiciel n'existe que pour environnement Microsoft Windows (donc pas pour Mac ni
pour Linux)

n
• Les tables manuelles ne peuvent pas à ce jour avoir plus de 500 lignes (heureusement on
peut en faire plusieurs et les fusionner par la suite via Power Query!)

llo
• Le langage DAX est peu (ou pas du tout!) intuitif

• Le nombre de graphiques est limité en comparaison à ce que sait faire R (la liste est trop
longue pour être énumérée ici)

• Le nombre de contrôles de formulaire pour les tableaux de bords est limité (par de radio
button, ni d'input box, ou de calendar picker)

• ti
Impossible de copier des feuilles dans d'autres fichiers pbix (idem avec les visualisations)

Et il suffit de consulter la liste des propositions d'améliorations des utilisateurs de Power BI pour
en voir beaucoup plus:
an
https://ideas.powerbi.com/forums/265200-power-bi-ideas
ch
É

Microsoft Power BI / Microsoft Excel BI 45/950


Vincent ISOZ

12. Meilleures Pratiques (best practices)

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 46/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 47/950


Vincent ISOZ

13. Moteurs VertiPaq et XVelocity


Ce qui s'exécute quand vous ouvrez PowerBI:

n
llo
ti
an

On le voit mieux dans le détail des processus:


ch
É

Voir l'espace de travail de SSAAS lorsqu'un fichier Power BI est ouvert:

C:\Users\<user>\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces

Microsoft Power BI / Microsoft Excel BI 48/950


Vincent ISOZ

Initialement appelé moteur VertiPaq, xVelocity est une base de données en colonnes en mémoire
où toutes les données d'un modèle résident en RAM.

•Moins d'utilisation de mémoire vive et des


Algorithme de coûts réduits
compression •Augmentation des performances avec moins de
données à analyser

n
Techniques de •Dictionnaire / Codage en hachage
•Encodage de valeur
compression •Codage en longueur

llo
Un dictionnaire de valeurs uniques dans une colonne est créé, puis les valeurs de données sont
remplacées par les valeurs de l'index du dictionnaire.

ti
an
ch

xVelocity recherche des relations mathématiques entre les valeurs d'une colonne, puis utilise la
valeur elle-même, avec ou sans opération mathématique appliquée, pour réduire l'utilisation de la
mémoire.
É

Microsoft Power BI / Microsoft Excel BI 49/950


Vincent ISOZ

n
llo
Moins de stockage utilisé pour une valeur inférieure en soustrayant 100000.

Rajoute la valeur lorsque nécessaire.


ti
Technique de compression complémentaire qui tente de réduire la taille d'un ensemble de
données en évitant les valeurs répétées.
an

Répété 210
ch

fois

Répété 260
É

fois

Une colonne peut comporter à la fois un codage de longueur d’exécution et un codage de


dictionnaire OU de valeur!

Microsoft Power BI / Microsoft Excel BI 50/950


Vincent ISOZ

Pour améliorer les performances, les relations entre les tables sont stockées en mémoire sous
forme de paires d’ID et de numéros de lignes.

ligne

n
1
ligne
2
ligne

llo
3

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 51/950


Vincent ISOZ

14. Data Munging

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 52/950


Vincent ISOZ

Data Input
Pour la saisie de données dans Power BI via des formulaires, le lecteur et participant à la
formation pourra se reporter au visuel suivant:

https://appsource.microsoft.com/en-us/product/power-bi-visuals/WA104381378?tab=Overview

n
llo
ti
an

Qui intègre donc Power Apps à Power BI!


ch
É

Microsoft Power BI / Microsoft Excel BI 53/950


Vincent ISOZ

Data sources

n
llo
ti
an
Tables manuelles
Cas classiques d'utilisations:

• Tables de langues
• Tables de Pays
• Tables de fuseaux horaires
ch

• Tables de phrases types traduites

Limitations courantes actuelles en cette année de 2019:


É

Microsoft Power BI / Microsoft Excel BI 54/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 55/950


Vincent ISOZ

n
llo
ti
an
ch
É

Tables DAX
On va prendre ici la table DAX la plus connue dans le monde Power BI:

Microsoft Power BI / Microsoft Excel BI 56/950


Vincent ISOZ

n
Calendar =
VAR FY_Month_Starts = 6
RETURN

llo
ADDCOLUMNS (
CALENDAR ( DATE ( 2000, 1, 1 ), DATE ( 2025, 12, 31 ) ),
"Date As Integer", FORMAT ( [Date], "YYYYMMDD" ),
"Year", YEAR ( [Date] ),
"Fiscal Year", YEAR ( [Date] )
- IF ( MONTH ( [Date] ) < FY_Month_Starts, 1, 0 ),
"Month number", FORMAT ( [Date], "MM" ),

"Semester", "S"
ti
"Fiscal Month number", MOD ( MONTH ( [Date] ) - FY_Month_Starts, 12 ) + 1,
"Year Month number", FORMAT ( [Date], "YYYY/MM" ),

& IF ( MONTH ( [Date] ) <= 6, 1, 2 ),


"Year Month Short", FORMAT ( [Date], "YYYY/mmm" ),
an
"Month Name Short", FORMAT ( [Date], "mmm" ),
"Month Name Long", FORMAT ( [Date], "mmmm" ),
"Day Of Week Number", WEEKDAY ( [Date], 2 ),
"Day Of Week", FORMAT ( [Date], "dddd" ),
"Day Of Week Short", FORMAT ( [Date], "ddd" ),
"Quarter", "Q" & FORMAT ( [Date], "Q" ),
"WeekN umber", "Week" & WEEKNUM ( [Date], 2 ),
ch

"Week", WEEKNUM ( [Date], 2 ),


"ISO 8601 Week", WEEKNUM ( [Date], 21 ),
"Year Quarter", FORMAT ( [Date], "YYYY" ) & "/Q"
& FORMAT ( [Date], "Q" )
)

Soit:
É

Microsoft Power BI / Microsoft Excel BI 57/950


Vincent ISOZ

n
llo
ti
an
ch

Ce qui donnera:
É

Microsoft Power BI / Microsoft Excel BI 58/950


Vincent ISOZ

n
llo
ti
Rappelons les avantages d'avoir un table de calendrier plutôt que d'utiliser les décompositions
automatiques qu'il y a dans chaque table:

1. Vous gagnez de la mémoire (plutôt qu'il y ait n colonnes de dates décomposées, il n'y en
an
a qu'une seule qui est celle de la table de calendrier)

2. Vous ne pouvez pas personnaliser (ie ajouter des informations) aux colonnes de dates
décomposées, alors qu'avec la table Calendrier, de nombreuses opportunités sont
possibles!

3. Comme vous avez une seule table de référence pour les dates, un seul slicer de dates
(venant de la table calendrier!), suffira pour filtrer plusieurs tables différentes qui sont
ch

liées à la table calendrier (plutôt que d'avoir 1 slicer par colonne de date et par table!)

4. Vous aurez des erreurs si vous ajoutez dans un même visuel temporel des données de
plusieurs tables dont il n'y pas de colonne de dates commune (ie une colonne de date de
calendrier justement!)

Un bon exemple consiste à considérer le scénario avec les deux tables suivantes:
É

Microsoft Power BI / Microsoft Excel BI 59/950


Vincent ISOZ

n
llo
Premièrement, vous ne pourrez pas avoir un slicer unique qui filtre les deux tables et…
deuxièement si vous créez le visuel suivant dont avec les dates venant de la table Sales:

ti
an
ch

Alors les montants de Purchase Amount serront erronés. Alors qu'avec une table de Calendrier,
vous aurez bien les bonnes valeurs!
É

Microsoft Power BI / Microsoft Excel BI 60/950


Vincent ISOZ

n
llo
Microsoft SharePoint ti
Bibliothèque d'images (Asset Library)
an
Considérons la bibliothèque d'images suivante dans SharePoint Online:
ch
É

Microsoft Power BI / Microsoft Excel BI 61/950


Vincent ISOZ

n
llo
ti
an
ch

Nous voulons importer les URL dans Power BI.

Pour cela, nous importons un liste SharePoint Online:


É

Microsoft Power BI / Microsoft Excel BI 62/950


Vincent ISOZ

n
llo
ti
an
Ensuite on met l'adresse du site contenant la bibliothèque d'images:
ch
É

Microsoft Power BI / Microsoft Excel BI 63/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 64/950


Vincent ISOZ

n
llo
ti
an

Après avoir nettoyé les colonnes inutiles, on obtient:


ch
É

Microsoft Power BI / Microsoft Excel BI 65/950


Vincent ISOZ

n
llo
ti
an

Liste d'images (liste personnalisée avec colonne Image)


Considérons le scénario suivant:
ch
É

Microsoft Power BI / Microsoft Excel BI 66/950


Vincent ISOZ

n
llo
ti
an
Ensuite dans Power BI on prend l'option d'importer une liste SharePoint:
ch
É

Microsoft Power BI / Microsoft Excel BI 67/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 68/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 69/950


Vincent ISOZ

n
llo
ti
Ce qui donne après avoir supprimé les colonnes indésirables:
an
ch

Microsoft Excel
Import d'un fichier Microsoft Excel stocké sur SharePoint
Considérons:
É

Microsoft Power BI / Microsoft Excel BI 70/950


Vincent ISOZ

n
llo
ti
an
Nous voulons importer ce fichier.

Pour ce faire à ce jour (fin 2019), il faudra passer par:


ch
É

Microsoft Power BI / Microsoft Excel BI 71/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 72/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 73/950


Vincent ISOZ

n
llo
ti
an
ch
É

Et voilà la suite est connue…

Microsoft Power BI / Microsoft Excel BI 74/950


Vincent ISOZ

Import (fusion) automatique de toutes les feuilles (incluant les futures) d'un
classeur

n
llo
ti
an
ch
É

Clic droit sur le dossier:

Microsoft Power BI / Microsoft Excel BI 75/950


Vincent ISOZ

n
llo
ti
an

Ce qui donne:
ch
É

Microsoft Power BI / Microsoft Excel BI 76/950


Vincent ISOZ

n
llo
Et y'a plus qu'à, il faut qu'on…. Si jamais voici le code M correspondant:
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 77/950


Vincent ISOZ

Import contenu bibliothéques SharePoint


Considérons les fichiers CSV suivants dans une bibliothèque SharePoint 365:

n
llo
ti
an
Ensuite dans Power BI:
ch
É

Microsoft Power BI / Microsoft Excel BI 78/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 79/950


Vincent ISOZ

n
llo
ti
an
ch

Le lien du site et non de la bibliothèque!!!!:


É

Microsoft Power BI / Microsoft Excel BI 80/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 81/950


Vincent ISOZ

n
llo
ti
an
ch
É

On voit qu'il montre TOUS les fichiers de TOUTES les bibliothèque du site que nous avons
choisi:

Microsoft Power BI / Microsoft Excel BI 82/950


Vincent ISOZ

n
llo
ti
an
On veut que trois des fichiers! Donc:
ch
É

Microsoft Power BI / Microsoft Excel BI 83/950


Vincent ISOZ

n
llo
ti
an
Ce qui nous amène dans Power Query où on va filtrer en prenant que le dossier qui nous
intéresse:
ch
É

Après quoi on clique sur l'expandeur:

Microsoft Power BI / Microsoft Excel BI 84/950


Vincent ISOZ

n
llo
Ce qui nous amène à:
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 85/950


Vincent ISOZ

n
llo
ti
an
Ce qui nous amène à:
ch
É

Et là il y a un piège au niveau du contenu des fichiers CSV que nous laissons le soin au lecteur
d'identifier!

Microsoft Power BI / Microsoft Excel BI 86/950


Vincent ISOZ

JSON

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 87/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 88/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 89/950


Vincent ISOZ

Ne rien changer à la boîte de dialogue qui apparît:

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 90/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 91/950


Vincent ISOZ

n
llo
Microsoft SQL Server
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 92/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 93/950


Vincent ISOZ

DirectQuery

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 94/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 95/950


Vincent ISOZ

n
llo
ti
an
Depuis fin 2018:
ch
É

Microsoft Power BI / Microsoft Excel BI 96/950


Vincent ISOZ

Query Folding

n
llo
ti
an
ch
É

On clique sur Edit et on arrive dans Power Query pour noter que l'option:

Microsoft Power BI / Microsoft Excel BI 97/950


Vincent ISOZ

n
llo
ti
an
ch
É

Si on supprime quelques colonnes et qu'on filtre sur les années 2009, cela donnera:

Microsoft Power BI / Microsoft Excel BI 98/950


Vincent ISOZ

n
llo
Soit:
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 99/950


Vincent ISOZ

n
llo
ti
an
Notez que certaines transformations dans Power Query désactivent automtiquement le Query
Folding car il n'existe pas d'équivalent en SQL!
ch
É

Microsoft Power BI / Microsoft Excel BI 100/950


Vincent ISOZ

OData

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 101/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 102/950


Vincent ISOZ

n
llo
ti
an

Shift+Flèche vers le bas pour sélectionner rapidement:


ch
É

Microsoft Power BI / Microsoft Excel BI 103/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 104/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 105/950


Vincent ISOZ

Dataflow
Les DataFlows sont des processus Power Query qui s'exécutent dans le cloud indépendamment
de tout rapport Power BI:

Les tables réutilisables ou les requêtes sur plusieurs fichiers Power BI sont l’un des meilleurs
candidats pour Dataflow:

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 106/950


Vincent ISOZ

n
llo
En compte admin:
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 107/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 108/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 109/950


Vincent ISOZ

n
llo
ti
an
ch
É

On a alors l'éditeur Power Query Online qui s'ouvre:

Microsoft Power BI / Microsoft Excel BI 110/950


Vincent ISOZ

n
llo
ti
On clique sur Done et on arrive sur:
an

On peut sauvegarder:
ch
É

Microsoft Power BI / Microsoft Excel BI 111/950


Vincent ISOZ

Streaming Dataset

n
llo
Limitations actuelle (juin 2018):

• 75 colonnes au maximum

• 75 tables au maximum

• 10 000 lignes au maximum par demande de lignes POST uniques


ti
1 000 000 lignes ajoutées par heure et par jeu de données

5 demandes de lignes POST en attente au maximum par jeu de données


an
• 120 demandes de lignes POST par minute et par jeu de données

• Avec un tableau de 250 000 lignes ou plus, 120 demandes de lignes POST par heure et
par jeu de données

• 200 000 lignes au maximum stockées par table dans un jeu de données FIFO

• 5 000 000 lignes au maximum stockées par table dans un jeu de données « sans stratégie
ch

de rétention »

• 4 000 caractères par valeur de colonne de type chaîne dans une opération de lignes POST
É

Microsoft Power BI / Microsoft Excel BI 112/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 113/950


Vincent ISOZ

n
llo
ti
an
ch

Au bas de la page, vous voyez une option Historic Data Analysis. Lorsque cette option est
désactivée, cela signifie que le stockage en continu des jeux de données est stocké dans un cache
É

temporaire pendant un certain temps. Mais lorsque nous activons cette option, ces données vont
commencer à stocker.

On clique sur Create et on obtient:

Microsoft Power BI / Microsoft Excel BI 114/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 115/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 116/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 117/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 118/950


Vincent ISOZ

n
llo
Imports Newtonsoft.Json
ti
an
Imports System.Net.Http
Module Module1

Public client As HttpClient = New HttpClient()


Sub Main()
Dim JsonDt As String
Dim timeFormat As String = "yyyy-MM-ddTHH:mm:ss.fffZ"
Do While 1 = 1
Dim RandomSpeed As Integer
Dim Generator As System.Random = New System.Random()
ch

RandomSpeed = Generator.Next(10, 50)


JsonDt = "[{""Speed"":" & RandomSpeed.ToString
JsonDt = JsonDt + ",""Date"":""" & Date.UtcNow().ToString(timeFormat)
JsonDt = JsonDt & """}]"
Dim content As HttpContent = New StringContent(JsonDt)
Dim url As New Uri("https://api.powerbi.com/beta/f6a89ff9-3073-4e72-a603-d9456ebee844/datasets/9d8b59
be-0c77-4486-aed3-xxxxx/rows?key=xxxxx_yourkey_xxxx ")
Dim response As HttpResponseMessage
response = client.PostAsync(url, content).Result
É

System.Threading.Thread.Sleep(1000)
Console.WriteLine(JsonDt.ToString)
Loop
End Sub
End Module

Microsoft Power BI / Microsoft Excel BI 119/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 120/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 121/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 122/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 123/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 124/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 125/950


Vincent ISOZ

Import vs DirectQuery vs Live Connection

n
llo
ti
an
Attention se rappeler que:

• DirectQuery ne fonctionne pas pour Microsoft Access et une fois un jeu de données en
mode Import, impossible à ce jour de la basculer en mode DirecQuery

• En mode DirectQuery l'affichage Data View de Power BI n'est plus disponible (il n'y a
ch

plus que l'affichage des relations et des dashboards)

• En mode Live Connection les affichages Data View ET Relationships ne sont plus
disponibles (il n'y a plus que l'affichage des dashboards qui est disponible)

• Le langage DAX est très limité en mode Direct Query car la majorité des fonctions y
existante ne peuvent être "traduites" dans le langage de la technologie à laquelle on est
connectés! Et même certaines fonction comme format( ) qui existent pourtant dans SQL
É

Server ne sont pas comprises par SQL Server…

Et plus en détails:

Microsoft Power BI / Microsoft Excel BI 126/950


Vincent ISOZ

n
llo
Ou un autre résumé:

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 127/950


Vincent ISOZ

Capability Import DirectQuery

Size Up to 10 GB per dataset No limitation

Data must come from a single


Data Source Import data from Multiple sources
Source

n
Depends on the data source
Performance High-performance query engine
response for each query

llo
Not Reflected. Required to do a Power BI caches the data for
Data Change in the underlying Manual refresh in Power BI better performance. So, it is
data Desktop and republish the report necessary to Refresh to ensure
or Schedule Refresh the latest data

Schedule Refresh Maximum 8 schedules per day Schedule often as every 15 mins

Only required to get latest data Must require to get data from On-
Power BI Gateway
from On-premise data sources premise data sources

Data Transformations
ti
Supports all transformations
Supports many data
transformations with some
limitations
an
Some limitations such as auto-
detect relationships between
Data Modelling No limitation
tables and relationships are
limited to a single direction.

Built-in Date Hierarchy Available Not available

Restricted to use complex DAX


functions such as Time
ch

Intelligence functions. However, if


DAX expressions Supports all DAX functions
there is a Date table available in
the underlying source then it
supports

Clustering Available Not available

Calculated Tables Available Not supported


É

Quick Insights Available Not available

Q&A Available Not available

Not possible to change Import to Possible to change DirectQuery to


Change Data Connectivity mode
DirectQuery Import

Microsoft Power BI / Microsoft Excel BI 128/950


Vincent ISOZ

Data Flows (flux de données)

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 129/950


Vincent ISOZ

Gateways
D'abord comprendre les différences:

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 130/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 131/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 132/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 133/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 134/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 135/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 136/950


Vincent ISOZ

n
llo
ti
Il faut être dans un domaine pour la suite!
an
ch
É

Microsoft Power BI / Microsoft Excel BI 137/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 138/950


Vincent ISOZ

n
llo
ti
an
Pour supprimer un gateway il y un bouton subtilement visible avec "…" sur lequel il faut cliquer:
ch
É

Microsoft Power BI / Microsoft Excel BI 139/950


Vincent ISOZ

15. Refresh (mises à jour des données)

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 140/950


Vincent ISOZ

Mises à jour des tables dans Power Query

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 141/950


Vincent ISOZ

Mises à jour des tables dans Power BI Desktop

Mises à jour manuelle de toutes les tables


Bon ce point il n'a pas grande chose à dire à ce jour:

n
llo
Mises à jour manuelle de certaines tables
Pour mettre à jour seulement certaines tables dans Power BI, même en mi-2020 il faut encore
ti
aller dans la seule vue Model où la sélection de tables multiples est autorisée:
an
ch

Une fois ceci fait, il suffit sur le panneau de droite de sélectionner avec la touche Ctrl les tables à
mettre à jour et ensuite faire un clic droit:
É

Microsoft Power BI / Microsoft Excel BI 142/950


Vincent ISOZ

n
llo
Mises à jour automatique
ti
Dans Power BI Desktop cette dernière ne marche (et l'option n'apparaît que dans cette condition)
que si on travaille en mode Direct Query.
an
Considérons alors que nous nous sommes connectés à la base suivante:
ch
É

Une fois les tables importées cliques sur la partie vide d'un page et dans le panneau de propriétés
vous trouverez alors:

Microsoft Power BI / Microsoft Excel BI 143/950


Vincent ISOZ

n
llo
ti
an
Si on active l'option, nous avons alors:
ch
É

Et au niveau des options de durées, c'est tout à fait acceptable:

Microsoft Power BI / Microsoft Excel BI 144/950


Vincent ISOZ

n
llo
Mises à jour incrémentielles

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 145/950


Vincent ISOZ

Mises à jour dans Power BI Service


Mises à jour manuelles

Mises à jour automatiques

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 146/950


Vincent ISOZ

16. Data Mashup (Power Query)

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 147/950


Vincent ISOZ

Commentaires M
Une tâche importante du Data Scientists et du Quant est de documenter ses codes et procédures
en conformité avec les exigences légales et normatives de son domaine d'activité.

Pour écrire une ligne de commentaire en M, on commencera la ligne par un double slash //:

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 148/950


Vincent ISOZ

Icônes Power Query


Il faut parfois être bien concentré avec Power BI ou Microsoft Excel pour comprendre à quel
type de symbole Power Query nous avons affaire. Voici quelques symboles qu'il faut bien
comprendre:

Logo Description

n
Une simple table

Une table pour laquelle le chargement a été désactivé

llo
Un simple dossier

Avertissement à traiter!

Une table non accédée depuis longtemps

ti
Une liste (table générée en pure M)

Fonction M

Paramètre
an
Groupe (hiérarchie)
Tableau 1 Tableau icônes Power Query
ch
É

Microsoft Power BI / Microsoft Excel BI 149/950


Vincent ISOZ

Lister toutes les fonctions

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 150/950


Vincent ISOZ

n
llo
ti
an
ch

Ensuite le côté très utile c'est qu'on peut cliquer sur le mot Function pour tester certaines
fonctions de façon interactive:
É

Microsoft Power BI / Microsoft Excel BI 151/950


Vincent ISOZ

n
llo
ti
an
ch

N'oubliez pas que comme tout logiciel, Power Query n'a pas encore des fonctions pour
absolument tout. Par exemple, il n'a pas de fonction d'arrondi aux 5 centimes les plus proches
(arrondi au multiple) à ce jour (début 2020). Il faudra donc recourrir à la même vieille technique
que dans Microsoft Excel:
É

Microsoft Power BI / Microsoft Excel BI 152/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 153/950


Vincent ISOZ

Tri sur colonnes multiples


Nous savons qu'il n'est toujours pas possible à ce jour (2020) de trier dans Power BI un visuel de
type table par de multiples colonnes.

Pour y arriver il faudra faire le tri dans Power Query (effectivement, rappelez-vous que par
défaut Power BI prend le tri de Power Query dans l'affichage des rapports).

n
Considérons la table suivante dans Power Query comme base de travail:

llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 154/950


Vincent ISOZ

Considérons qu'un veuille trier par:

1. Activité (ordre croissant)


2. Article (orcre croissant)
3. Et enfin par Quantité (ordre croissant)

Pour faire cela on devra passer dans le code M et ajouter:

n
llo
Ce qui donnera bien:
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 155/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 156/950


Vincent ISOZ

Construction d'un VLOOKUP approximatif


Considérons la table des ventes suivantes importée:

n
llo
ti
an

Et la table des remises suivante:


ch
É

Microsoft Power BI / Microsoft Excel BI 157/950


Vincent ISOZ

n
llo
ti
Le but est d'appliquer la Remise de gros relativement à la colonne des Prix total avec rabais de
an
la table des Ventes, relativement à la valeur la plus proche de la colonne Valeur Commande.

Pour ce faire on va d'abord faire le Merge suivant:


ch
É

Microsoft Power BI / Microsoft Excel BI 158/950


Vincent ISOZ

n
llo
ti
an

Notez bien la sélection d'une liaison de type Full Outer! On valide par OK pour obtenir:
ch
É

Microsoft Power BI / Microsoft Excel BI 159/950


Vincent ISOZ

n
llo
ti
an
Ensuite on étend les colonnes pour obtenir:
ch
É

Ce qui fait qu'on obtient bien évidemment quelque chose du genre suivant:

Microsoft Power BI / Microsoft Excel BI 160/950


Vincent ISOZ

n
llo
ti
an
ch

Pour comprendre ce qui va suivre, il est conseillé de trier la table de la façon suivante:
É

Microsoft Power BI / Microsoft Excel BI 161/950


Vincent ISOZ

n
llo
Pour obtenir:

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 162/950


Vincent ISOZ

n
llo
ti
an
ch

Maintenant la première subtilité vient à l'étape suivante! On ajoute une colonne avec la condition
suivante:
É

Microsoft Power BI / Microsoft Excel BI 163/950


Vincent ISOZ

n
llo
On valide par OK et la deuxième subtilité c'est de trier immédiatement cette colonne:

ti
an

Et observons avant la touche finale:


ch
É

Et aussi la zone suivante:

Microsoft Power BI / Microsoft Excel BI 164/950


Vincent ISOZ

n
llo
Et la zone suivante:

ti
an

Et ainsi de suite… Donc maintenant nous pouvons utiliser la dernière subtilité qui consiste à
sélectionner la colonne Remise de gros et à prendre la transformation:
ch
É

Ce qui nous donne:

Microsoft Power BI / Microsoft Excel BI 165/950


Vincent ISOZ

n
llo
Et aussi:
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 166/950


Vincent ISOZ

Et aussi:

n
llo
Ensuite y'a plus qu'à supprimer les deux colonnes inutiles et faire les calculs habituels

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 167/950


Vincent ISOZ

Utiliser des variables


Avec certains systèmes informatiques que Business Warehouse (BW), les colonnes sont
systématiquement renommée dans le code M de Power BI même quand la requête ne change pas.

À ce moment là, le mieux est de savoir qu'on peut en langage M (sans surprises), créer des
variables (ie des constantes dans le cas présent!) pour les colonnes, filtres, rechercher/remplacer

n
etc. comme l'illustre par example le simple filtre suivant:

llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 168/950


Vincent ISOZ

Fusion de feuilles multiples d'un unique fichier Microsoft


Excel
On sait que la technique classique de fusion de plusieurs feuilles d'un même fichier Microsoft
Excel est particulièrement laborieuse dans Power Query si on fait tout manuellement (surtout dès
le moment où de nouvelles feuilles sont créées!).

n
Il s'agit d'écrire dans le Power Query de Power BI:

llo
ti
an
Soit en zoomant un peu:
ch
É

Microsoft Power BI / Microsoft Excel BI 169/950


Vincent ISOZ

Traîtement batch d'un dossier de fichiers Microsoft Excel


avec feuilles identiquement nommées
Considérones les trois fichiers suivants:

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 170/950


Vincent ISOZ

n
llo
ti
an
ch
É

Ce que nous allons devoir faire (à ce jour en l'état actuel de Power BI) est:

Microsoft Power BI / Microsoft Excel BI 171/950


Vincent ISOZ

• Importer un unique classeur et le traiter

• Convertir le code M correspondant en fonction M

• Importer tous les fichiers (utilisant la fonction M précédemment créée)

• Combiner le tout

n
On commence:

llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 172/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 173/950


Vincent ISOZ

n
llo
ti
an

Ce qui donne:
ch
É

On fait le nettoyage standard:

Microsoft Power BI / Microsoft Excel BI 174/950


Vincent ISOZ

n
llo
Soit le code M correspondant:

ti
an
ch

Maintenant nous allons convertir cela en fonction M en le changeant en:


É

Microsoft Power BI / Microsoft Excel BI 175/950


Vincent ISOZ

n
llo
Ce qui devient alors effectivement une fonction:

ti
an
ch
É

On va renommer la fonction:

Microsoft Power BI / Microsoft Excel BI 176/950


Vincent ISOZ

n
llo
Ok maintenant tout est prêt. On va pouvoir importer le dossier avec les trois fichiers et appliquer
la fonction que l'on vient de créer dessus! Pour cela:

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 177/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 178/950


Vincent ISOZ

n
llo
Ce qui nous amène à:

ti
an
Maintenant, normalement, nous serions tentés de cliquer sur les doubles flèches à côté de l'en-
tête Content pour les combiner toutes… mais cela ne fonctionne pas ici (il renvoie simplement le
premier fichier lorsque nous travaillons avec des fichiers Excel.) C'est donc là que nous devons
recourir à notre fonction!
ch

Pour cela:
É

Microsoft Power BI / Microsoft Excel BI 179/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 180/950


Vincent ISOZ

n
llo
Ce qui donne:
ti
an
ch

Reste plus qu'à faire le nettoyage habituel…


É

Microsoft Power BI / Microsoft Excel BI 181/950


Vincent ISOZ

Fusion de fichiers Microsoft Excel d'un dossier avec feuille


unique non identiquement nommées

n
llo
ti
an
ch

Soit, pour ceux qui préfère copier/coller que tout récrire:


let
Source = Folder.Files("C:\Users\Vincent
Isoz\Documents\Professionel\Cours\MSOfficePowerQuery\Exercises_PowerQuery_FR\
ImportDossier\XLSX_AvecPiege"),
É

#"Removed Columns" = Table.RemoveColumns(Source,{"Content", "Date


accessed", "Date modified", "Date created", "Attributes"}),
#"Filtered Rows" = Table.SelectRows(#"Removed Columns", each [Extension]
= ".xlsx"),
#"Added Custom" = Table.AddColumn(#"Filtered Rows", "FullFileName", each
[Folder Path] & [Name]),
#"Remove other columns" = Table.RemoveColumns(#"Added Custom",{"Name",
"Extension", "Folder Path"}),

Microsoft Power BI / Microsoft Excel BI 182/950


Vincent ISOZ

//La subtilité se trouve ici avec l'utilisation de "each Excel


Workbook(...)"
#"Invoked Custom Function" = Table.AddColumn(#"Remove other columns",
"GetSheetName", each Excel.Workbook(File.Contents([FullFileName]), null,
true)),
#"Retrieve Data Object" = Table.ExpandTableColumn(#"Invoked Custom
Function", "GetSheetName", {"Data"}, {"GetSheetName.Data"}),
#"Expand Data Columns" = Table.ExpandTableColumn(#"Retrieve Data Object",
"GetSheetName.Data", {"Column1", "Column2", "Column3", "Column4", "Column5",

n
"Column6", "Column7"}, {"GetSheetName.Data.Column1",
"GetSheetName.Data.Column2", "GetSheetName.Data.Column3",
"GetSheetName.Data.Column4", "GetSheetName.Data.Column5",
"GetSheetName.Data.Column6", "GetSheetName.Data.Column7"}),
//À partir d'ici c'est à nouveau du classique

llo
#"Colonnes supprimées" = Table.RemoveColumns(#"Expand Data
Columns",{"FullFileName"}),
#"En-têtes promus" = Table.PromoteHeaders(#"Colonnes supprimées",
[PromoteAllScalars=true]),
#"Type modifié" = Table.TransformColumnTypes(#"En-têtes
promus",{{"idSorties", type any}, {"VendeursId", type any}, {"ClientsId",
type any}, {"strNbArticle", type text}, {"intUnites", type any},
{"bolTypPay", type any}, {"datDateOut", type any}}),
#"Lignes filtrées" = Table.SelectRows(#"Type modifié", each ([idSorties]
<> "idSorties")), ti
#"Lignes vides supprimées" = Table.SelectRows(#"Lignes filtrées", each
not List.IsEmpty(List.RemoveMatchingItems(Record.FieldValues(_), {"",
null}))),
#"Doublons supprimés" = Table.Distinct(#"Lignes vides supprimées")
an
in
#"Doublons supprimés"
ch
É

Microsoft Power BI / Microsoft Excel BI 183/950


Vincent ISOZ

Fusionner un dossier avec problèmes d'en-têtes de colonnes


Considérons un dossier avec les trois fichiers suivants (cela pourrait aussi être des fichier
Microsoft Excel):

n
llo
ti
an
ch

Si nous l'importons de façon classique:


É

Microsoft Power BI / Microsoft Excel BI 184/950


Vincent ISOZ

n
llo
ti
an
ch

Nous obtenons automatiquement le résultats problématique suivant:


É

Microsoft Power BI / Microsoft Excel BI 185/950


Vincent ISOZ

Pour résoudre ce problème on d'abord dans la requête Transforme Sample File et on supprime
Promoted Headers:

n
llo
Ce qui donnera:

ti
an
Ensuite on retourne dans la requête principale que aura une erreur pour le coup:
ch
É

Et il suffit juste de supprimer la dernière étape:

Microsoft Power BI / Microsoft Excel BI 186/950


Vincent ISOZ

n
llo
Et on y est! On obtient:

ti
an
ch

La suite c'est du classique Power Query…


É

Microsoft Power BI / Microsoft Excel BI 187/950


Vincent ISOZ

Ajouter la date de dernières mise à jour sur un rapport


Ceci n'est pas possible à notre connaissance avec une fonction DAX puisque ces dernières se
mettent à jour automatiquemnt dès que l'on change de page de rapport.

L'idée est alors plutôt d'inclure une date dans une table PowerQuery!

n
Mais à cause des des fuseaux horaires vous risquez de rencontrer de nombreuses difficultés dès
que vous publierez sur le web. Une solution simple est alors d'utiliser une fonction de temps
universelle.

llo
Pour voir comment procéder, créez la table manuelle suivante dans PowerQuery:

ti
an
ch
É

Une fois ceci fait, ajoutez une colonne:

Microsoft Power BI / Microsoft Excel BI 188/950


Vincent ISOZ

n
llo
ti
an
ch
É

Et n'oubliez pas de changer le type:

Microsoft Power BI / Microsoft Excel BI 189/950


Vincent ISOZ

n
llo
Ce qui donnera:

ti
an

Et voilà il vous suffit d'ajouter cette colonne dans un visuel de type Card d'une page de rapport
ch

et le tour est joué!


É

Microsoft Power BI / Microsoft Excel BI 190/950


Vincent ISOZ

Supprimer automatiquement toutes les lignes après une


ligne particulière
Considérons la table importée suivante:

n
llo
ti
an
ch

Après quelques nettoyages triviaux et l'ajout d'une colonne d'Index, nous avons:
É

Microsoft Power BI / Microsoft Excel BI 191/950


Vincent ISOZ

n
llo
ti
an
ch
É

Et maintenant il s'agit de modifier le code M comme ci-dessous:

Microsoft Power BI / Microsoft Excel BI 192/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 193/950


Vincent ISOZ

Création d'une Table de calendrier simple avec durée en M


Nous savons qu'à ce jour il n'est pas possible de créer un table calendrier en DAX dans un fichier
Power BI en direct query. D'où la procédure qui va suivre!

La fonction duration( ) en M ci-dessous a pour paramètres jours, heures, minutes, secondes.

n
llo
ti
an
Ou une version alternative:
ch
É

Microsoft Power BI / Microsoft Excel BI 194/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 195/950


Vincent ISOZ

Création d'une Table de calendrier avec étendue fixe en M


Nous savons qu'à ce jour il n'est pas possible de créer un table calendrier en DAX dans un fichier
Power BI en direct query. D'où la procédure qui va suivre!

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 196/950


Vincent ISOZ

Création d'une Table de calendrier avec variable en M


Nous savons qu'à ce jour il n'est pas possible de créer un table calendrier en DAX dans un fichier
Power BI en direct query. D'où la procédure qui va suivre!

Cela peut être très utile pour ceux qui utilisent des fichiers Power BI avec Direct Query:

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 197/950


Vincent ISOZ

Création d'une Table de calendrier complète en M


Pour avoir un table de calendrier relativement complète dans Power Query, collez le code
suivant dans une requête M:
let CreateDateTable = (StartDate as date, EndDate as date, optional Culture
as nullable text) as table =>
let

n
DayCount = Duration.Days(Duration.From(EndDate - StartDate)),
Source = List.Dates(StartDate,DayCount,#duration(1,0,0,0)),
TableFromList = Table.FromList(Source, Splitter.SplitByNothing()),
ChangedType = Table.TransformColumnTypes(TableFromList,{{"Column1", type
date}}),

llo
RenamedColumns = Table.RenameColumns(ChangedType,{{"Column1", "Date"}}),
InsertYear = Table.AddColumn(RenamedColumns, "Year", each
Date.Year([Date])),
InsertQuarter = Table.AddColumn(InsertYear, "QuarterOfYear", each
Date.QuarterOfYear([Date])),
InsertMonth = Table.AddColumn(InsertQuarter, "MonthOfYear", each
Date.Month([Date])),
InsertDay = Table.AddColumn(InsertMonth, "DayOfMonth", each
Date.Day([Date])),
ti
InsertDayInt = Table.AddColumn(InsertDay, "DateInt", each [Year] * 10000
+ [MonthOfYear] * 100 + [DayOfMonth]),
InsertMonthName = Table.AddColumn(InsertDayInt, "MonthName", each
Date.ToText([Date], "MMMM", Culture), type text),
InsertCalendarMonth = Table.AddColumn(InsertMonthName, "MonthInCalendar",
an
each (try(Text.Range([MonthName],0,3)) otherwise [MonthName]) & " " &
Number.ToText([Year])),
InsertCalendarQtr = Table.AddColumn(InsertCalendarMonth,
"QuarterInCalendar", each "Q" & Number.ToText([QuarterOfYear]) & " " &
Number.ToText([Year])),
InsertDayWeek = Table.AddColumn(InsertCalendarQtr, "DayInWeek", each
Date.DayOfWeek([Date])),
InsertDayName = Table.AddColumn(InsertDayWeek, "DayOfWeekName", each
Date.ToText([Date], "dddd", Culture), type text),
ch

InsertWeekEnding = Table.AddColumn(InsertDayName, "WeekEnding", each


Date.EndOfWeek([Date]), type date)
in
InsertWeekEnding
in
CreateDateTable

Ce qui donnera:
É

Microsoft Power BI / Microsoft Excel BI 198/950


Vincent ISOZ

n
llo
ti
an
Une fois validé:
ch

Ce qui donnera (seulement une partie de la table est visible):


É

Microsoft Power BI / Microsoft Excel BI 199/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 200/950


Vincent ISOZ

Filtre dynamique en M
Considérons la table suivante importée dans Power Query:

n
llo
ti
an
Une demande relativement fréquent est: Comment filtrer dynamique cette table sur l'année la
plus grande (ie la dernière année).

La réponse consiste à écrire le code M suivant:


ch
É

Microsoft Power BI / Microsoft Excel BI 201/950


Vincent ISOZ

n
llo
Ce qui donne bien:
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 202/950


Vincent ISOZ

Création d'une Fonction simple en M

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 203/950


Vincent ISOZ

Création d'une Fonction avec arguments optionnels en M

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 204/950


Vincent ISOZ

Création d'une Fonction avec arguments optionnels et typés


en M

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 205/950


Vincent ISOZ

Fonction de nettoyage d'espaces (pour Power Query Excel


seulement!)
Ceux qui connaissent déjà un peu Power Query, savent combien il est frustrant d'utiliser la
fonction trim du language M puisqu'elle diffère de celle d'Excel. Effectivement:

Source Fonction Résultat

n
Microsoft Excel =TRIM(“ trim me “) “trim me”

Power Query =Text.Trim(“ trim me “) “trim me“

llo
Le nettoyage des caractères d'espaces à double se fait automatiquement dans le Power Query de
Power BI à la différence de celui de Microsoft Excel...! (à ce jour du moins...).

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 206/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 207/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 208/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 209/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 210/950


Vincent ISOZ

Création d'une Liste numérique en M

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 211/950


Vincent ISOZ

Création d'une Séquence numérique en M

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 212/950


Vincent ISOZ

Création d'une Séquence numérique en M avec pas


spécifique

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 213/950


Vincent ISOZ

Création d'une Liste statique en M


Typique pour créer un annuaire alphabétique sur les Dashboards:

n
llo
ti
an
ch

Sinon on peut aussi créer une simple liste de la manière suivante:


É

Microsoft Power BI / Microsoft Excel BI 214/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 215/950


Vincent ISOZ

Création d'une Table statique en M

n
llo
ti
an
ch

Mais la syntaxe suivante passe aussi:


É

Microsoft Power BI / Microsoft Excel BI 216/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 217/950


Vincent ISOZ

Création d'une Table dynamique en M


Une création d'une table dynamique avec le code M suivant:

n
llo
Ce qui donne après validation:
ti
an
ch
É

Si on saisit des valeurs:

Microsoft Power BI / Microsoft Excel BI 218/950


Vincent ISOZ

n
llo
Cela donne:

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 219/950


Vincent ISOZ

Création d'un simple colonne de valeurs aléatoires


Souvent utile pour faire des tests par des consultants (principalement). On écrira simplement
dans une nouvelle requête vierge:

n
llo
ti
an

Attention à ne pas oublier à transfomer en tant que Table ensuite, si vous souhaite en faire un
usage normal dans Power BI…
ch

Remarque: La fonction List.Random( ), possède en tant que deuxième paramètre, un seed pour
information!
É

Microsoft Power BI / Microsoft Excel BI 220/950


Vincent ISOZ

Ajout d'une colonne de valeurs aléatoires numériques


C'est très souvent utile pour faire des tests. Pour cela considérons que d'abord nous avons par
exemple créé une table de calendrier typiquement avec:

n
llo
ti
an

D'abord pour pouvoir ajouter une colonne, il va falloir transformer la liste en une table en
utilisant le bouton To Table:
ch
É

Microsoft Power BI / Microsoft Excel BI 221/950


Vincent ISOZ

n
llo
ti
an
Une fois la liste transformée en table, nous pouvons cliquer sur Custom Column:
ch
É

Microsoft Power BI / Microsoft Excel BI 222/950


Vincent ISOZ

n
llo
ti
an
ch

On aura alors:
É

Microsoft Power BI / Microsoft Excel BI 223/950


Vincent ISOZ

n
llo
ti
an
ch
É

A chaque rafraîchissement, les nombres aléatoires se regénéreront (il n'y pas pas de seed à ce
jour pour cette fonction!).

Microsoft Power BI / Microsoft Excel BI 224/950


Vincent ISOZ

Création d'une colonne de valeurs aléatoires catégorielles


Par exemple pour générer 1'000'000 de variables aléatoires catégorielles à partir de 3 valeurs
prédéfinies:

n
llo
ti
an
Ce qui donnera:
ch
É

Microsoft Power BI / Microsoft Excel BI 225/950


Vincent ISOZ

Échantillonnage aléatoire simple


Ici il s'agit simplement de la suite du cas précédent, car cette technique utilise la génération de
nombres aléatoires (cependant, favorisez des outils scientifiques comme R et Python pour faire
du "vrai" échantillonnage aléatoire!). Considérons la table importée suivante:

n
llo
Ajoutons-y une colonne aléatoire:
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 226/950


Vincent ISOZ

n
llo
ti
an
Rappel: La fonction List.Random( ), possède en tant que deuxième paramètre, un seed pour
information!

Nous validons et nous voyons bien que nous obtenons une liste avec un uniquement élément par
cellule:
ch
É

Microsoft Power BI / Microsoft Excel BI 227/950


Vincent ISOZ

n
llo
ti
Nous cliquons sur le bouton d'expansion et prenons Expand to New Rows:
an
ch

Cela donnera:
É

Ce qui donnera alors le résultat attendu:

Microsoft Power BI / Microsoft Excel BI 228/950


Vincent ISOZ

n
llo
ti
Ensuite il suffit de trier sur la colonne aléatoire:
an
ch
É

Microsoft Power BI / Microsoft Excel BI 229/950


Vincent ISOZ

En notant qu'à chaque fois que vous mettez à jour en cliquant sur Refresh Preview, alors vous
aurez de nouvelles données triées!

Maintenant pour en sélectionner un nombre fini il suffira d'aller dans Keep Top Rows et de faire
le choix qui vous convient le mieux:

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 230/950


Vincent ISOZ

Traitements des dates


D'abord un résumé visuel du menu concernant la date:

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 231/950


Vincent ISOZ

Création d'un paramètre pour chemin de fichiers (ou


serveurs)
Considérons tous les imports suivants:

n
llo
ti
an

Imaginons qu'ils viennent tous d'un même dossier. Malheureusement nous savons par
ch

anticipation que le chemin de ce dossier peut changer! Nous souhaiterions faire en sorte que le
changement soit gérable le plus simplement possible pour nous-mêmes et nos collègues!

C'est là un cas typique et ultra-classique de l'utilisation des paramètres!

L'idée est de faire en sorte que tous les scripts M de toutes les requêtes:
É

Microsoft Power BI / Microsoft Excel BI 232/950


Vincent ISOZ

n
llo
Pointent vers un paramètre unique centralisé de Power Query et mette à jour directement TOUS
les chemins de TOUS les imports impactés par le problème de changement de dossier!

Pour cela on clique sur Manage Parameters et ensuite sur New Parameter:

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 233/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 234/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 235/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 236/950


Vincent ISOZ

n
llo
ti
Sur la même idée, on peut créer des paramètres pour des filtres:
an
ch
É

Microsoft Power BI / Microsoft Excel BI 237/950


Vincent ISOZ

n
llo
ti
an

Et les imbriquer dans le code M typiquement de la manière suivante:


ch

…" & SalesYear & "…

des statistiques:
É

Microsoft Power BI / Microsoft Excel BI 238/950


Vincent ISOZ

n
llo
ti
an

Et les imbriquer dans le code M typiquement de la manière suivante:


ch

…" & AggType & "…

etc.!
É

Microsoft Power BI / Microsoft Excel BI 239/950


Vincent ISOZ

Importer le fichier du jour


Considérons le script suivant d'import:

n
llo
ti
an
ch

L'idée est de considéré que chaque jour nous avons un fichier avec la date du jour à la fin. Nous
souhaiterions avoir un script Power Query gérant cela avec une variable.

Nous modifions alors le script comme visible ci-dessous:


É

Microsoft Power BI / Microsoft Excel BI 240/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 241/950


Vincent ISOZ

Compter les mots

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 242/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 243/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 244/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 245/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 246/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 247/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 248/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 249/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 250/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 251/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 252/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 253/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 254/950


Vincent ISOZ

Extraire les premiers/derniers de groupes


Soit la table suivante:

n
llo
ti
an
ch

On veut pour chaque article, sortir la dernière commande (en termes de Date Commande).

Pour cela, on va d'abord trier dans l'ordre décroissant de date:


É

Microsoft Power BI / Microsoft Excel BI 255/950


Vincent ISOZ

n
llo
Ensuite on fait un groupement:
ti
an
Avec les paramètres suivants:
ch
É

On obtient alors:

Microsoft Power BI / Microsoft Excel BI 256/950


Vincent ISOZ

n
llo
Pour la suite il va falloir aller dans l'éditeur M:

ti
an
Ce qui va afficher:
ch
É

Microsoft Power BI / Microsoft Excel BI 257/950


Vincent ISOZ

n
llo
Qu'on va d'abord reformater ainsi:
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 258/950


Vincent ISOZ

n
llo
ti
an

Qu'on va devoir modifier comme suit:


ch
É

Microsoft Power BI / Microsoft Excel BI 259/950


Vincent ISOZ

n
llo
ti
an

Il faut prendre le type number, même si ce n'est pas un nombre!!!

N'oubliez pas une fois terminé de changer le Type des colonnes comme à l'habitude!
ch

On peut évidemment ajouter d'autres colonnes ainsi, mais le résultat donnera ce que nous
voulions:
É

Microsoft Power BI / Microsoft Excel BI 260/950


Vincent ISOZ

n
llo
Ensuite y'a plus qu'à il faut qu'on…

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 261/950


Vincent ISOZ

Numéroter des groupes


Dans la famille de techniques similaires à celle d'avant, nous avons celle qui consiste à rajout un
index numéroté mais avec la difficulté qui cet index doit recommencer sa numérotation à chaque
groupement d'un variable catégorielle donnée (nominale ou ordinale).

Pour cela considérons à nouveau la table suivante:

n
llo
ti
an
ch

On va d'abord trier par odre croissant des dates de commande:


É

Microsoft Power BI / Microsoft Excel BI 262/950


Vincent ISOZ

n
llo
Ensuite on groupe:

ti
an
ch
É

De la manière suivante:

Microsoft Power BI / Microsoft Excel BI 263/950


Vincent ISOZ

n
llo
Ce qui donnera:

ti
an
ch

Ensuite on ajoute un nouvelle colonne:


É

Microsoft Power BI / Microsoft Excel BI 264/950


Vincent ISOZ

Et on y met:

n
llo
ti
an
Ce qui donnera:
ch
É

Ensuite on garde seulement la dernière colonne:

Microsoft Power BI / Microsoft Excel BI 265/950


Vincent ISOZ

n
llo
Ce qui donnera évidemment:
ti
an
ch

Ensuite on développe la colonne comme à l'habitude (on va prendre que quelques colonnes pour
É

l'exemple!):

Microsoft Power BI / Microsoft Excel BI 266/950


Vincent ISOZ

n
llo
ti
an
Ce qui donnera au final:
ch
É

Microsoft Power BI / Microsoft Excel BI 267/950


Vincent ISOZ

n
llo
ti
an
Et on peut alors vérifier qu'effectivement à chaque changement d'article nous avons bien l'index
qui recommence sa numérotation et ceci en plus dans l'ordre croissant des dates:
ch
É

Microsoft Power BI / Microsoft Excel BI 268/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 269/950


Vincent ISOZ

Fusionner de multiples lignes en une seule ligne


Considérons dans Power Query les deux table suivantes:

n
llo
Et:
ti
an
ch

On veut créer une nouvelle table qui aura le contenu suivant:


É

Microsoft Power BI / Microsoft Excel BI 270/950


Vincent ISOZ

Pour arriver à ce résultat on fait d'abord un merge comme à l'habitude:

n
llo
ti
Ensuite vient la première subtilité! On rajoute une colonne avec la formule suivante:
an
ch
É

Microsoft Power BI / Microsoft Excel BI 271/950


Vincent ISOZ

Ce qui donnera:

n
llo
ti
Ensuite, deuxième subtilité, on rajoute:
an
ch
É

Microsoft Power BI / Microsoft Excel BI 272/950


Vincent ISOZ

Ce qui donnera:

n
llo
Ensuite on étend la colonne:
ti
an
ch

On obtient finalement:
É

Microsoft Power BI / Microsoft Excel BI 273/950


Vincent ISOZ

n
Et il ne reste plus qu'à supprimer les colonnes indésirables et c'est terminé!

llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 274/950


Vincent ISOZ

Lag de colonnes
Nous avons vu dans les cours MATLAB, R et Python de l'importance du lag de données pour
calculer les log-return ou ROC en Finance. Il est assez normal vu le public visé par Power Query
que ce soit aussi quelque chose de demandé!

n
llo
ti
an

Pour arriver au résultat escompté, on doit rajouter une colonne d'index classique qui commence
à partir de zéro (!):
ch
É

Microsoft Power BI / Microsoft Excel BI 275/950


Vincent ISOZ

n
llo
ti
an
ch

Ensuite nous allons dans l'éditeur avancé pour ajouter la ligne suivante juste en-dessous de l'ajout
d'index:
É

Microsoft Power BI / Microsoft Excel BI 276/950


Vincent ISOZ

n
llo
Ce qui donnera:
ti
an
ch
É

Attention! Il y a consensus que faire cela en DAX avec la fonction LOOKUPVALUE( ) est
significativement plus rapide!

Microsoft Power BI / Microsoft Excel BI 277/950


Vincent ISOZ

Fuseaux horaires

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 278/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 279/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 280/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 281/950


Vincent ISOZ

17. DAX (Data Analysis Expression)


Voici comment on peut présenter DAX:

n
llo
ti
an
Gardez bien en tête les trois points suivants quand vous travaillez avec du DAX:

1. Certaines fonctions semblent faire doublon mais en réalité ce sont des évolutions
historiques (pensez à LOOKUP, VLOOKUP et XLOOKUP dans Excel par exemple!)

2. Certaines fonctions remplacent d'autres au niveau de leur comportement uniquement pour


ch

améliorer la performance (l'exemple le plus flagrant est REMOVEFILTERS qui a


remplacé ALL en septembre 2019)

3. Certaines fonctions ne peuvent être réalisées (écrites) que si dès le début la bonne table
est sélectionnée pour créer la mesure!
É

Microsoft Power BI / Microsoft Excel BI 282/950


Vincent ISOZ

Reverse Query (DAX)


Un point important de DAX est de comprendre que nombreuses de ses fonctions sont en réalité
des fonctions de requêtes comme l'est le SQL et aussi que certaines de ses fonctions, marchent
uniquement dans Excel BI.

Notez aussi que de nombreux fonctions Analytiques DAX ont dans la pratique (business case)

n
des fonctions de requête DAX à l'intérieur d'elles-mêmes, comme l'illustre par exemple ce calcul
du taux internet de rentabilité (voir plus loin pour les détails):

llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 283/950


Vincent ISOZ

Exemple 1.: Requête EVALUATE


Excel BI 2010 à 2019

La requête EVALUATE( ) ne marche pas dans Power BI à ce jour mais uniquement dans
Microsoft Excel (et SSAS). Nous verrons plus tard un pseudo-équivalent qui marche dans

n
Power BI.

Pour l'exemple considérons dans Excel Power BI la table suivante:

llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 284/950


Vincent ISOZ

n
llo
ti
an
ch

Nous souhaiterions extraire tout cette table dans une feuille Microsoft Excel.
É

Microsoft Power BI / Microsoft Excel BI 285/950


Vincent ISOZ

Solution
Considérons la table des ventes suivante imposée sous le nom de connexion Excel
SourcePrincipale:

n
llo
ti
an
ch

Ensuite, revenons dans une feuille Excel et cliquons sur le bouton Existing Connections:
É

Microsoft Power BI / Microsoft Excel BI 286/950


Vincent ISOZ

n
llo
Ce qui nous donne:

ti
an
ch
É

On prend la connexion Excel SourcePrincipale et nous validons par Open et dans la boîte de
dialogue qui apparaît, nous prenons l'option Table:

Microsoft Power BI / Microsoft Excel BI 287/950


Vincent ISOZ

n
llo
Nous validons par OK et nous obtenons:

ti
an
ch

Ensuite nous faisons un clic droit, pour obtenir choisir l'option Edit DAX:
É

Microsoft Power BI / Microsoft Excel BI 288/950


Vincent ISOZ

n
llo
ti
an
ch
É

Et nous obtenons une petite boîte de dialogue où dans la liste déroulante, nous allons spécifier
que nous voulons du DAX et non pas une simple table:

Microsoft Power BI / Microsoft Excel BI 289/950


Vincent ISOZ

n
llo
Et ensuite nous y mettons la requête DAX qui renvoie simplement toute la table:

ti
an
ch

Ce qui donnera évidemment le même résultant:


É

Microsoft Power BI / Microsoft Excel BI 290/950


Vincent ISOZ

n
llo
Ou dans une version plus élaborée:
ti
an
ch
É

Ce qui donnera:

Microsoft Power BI / Microsoft Excel BI 291/950


Vincent ISOZ

n
llo
Notons que EVALUATE n'est pas à notre connaissance et à ce jour, géré par Power BI!

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 292/950


Vincent ISOZ

Exemple 2.: Requête ALL


Power BI 2018-03 / Excel 2010 à 2019

Nous allons reproduire avec Power BI, l'exemple fait précédemment avec le DAX de Microsoft
Excel. Pour cela nous partons de la même table importée dans Power BI:

n
llo
ti
an

Ensuite, nous cliquons sur New Table:


ch
É

Microsoft Power BI / Microsoft Excel BI 293/950


Vincent ISOZ

n
llo
Et nous utilisons la requête ALL( ):
ti
an
ch
É

Mais on peut aussi prendre un sous-ensemble:

Microsoft Power BI / Microsoft Excel BI 294/950


Vincent ISOZ

n
llo
ti
an

Notez que ALL( ) par défaut, applique toujours une suppression des doublons par défaut
(cela se voit particulièrement bien en faisant en mettant une seule colonne dans l'argument
ch

de ALL( ))!

L'équivalent dans Microsoft Excel sera bien évidemment:


É

Microsoft Power BI / Microsoft Excel BI 295/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 296/950


Vincent ISOZ

Exemple 3.: Requête SELECTCOLUMNS avec table unique


Power BI 2018-03 / Excel 2010 à 2019

La requête SELECTCOLUMNS( ) est la version restreinte de la requête ALL( ) à seulement


quelques colonnes. Elle a cependant l'avantage de pouvoir renommer des colonnes à la volée!

n
Voyons d'abord un exemple avec Power BI:

llo
ti
an
Et l'équivalent avec Microsoft Excel:
ch
É

Microsoft Power BI / Microsoft Excel BI 297/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 298/950


Vincent ISOZ

Exemple 4.: Requête VALUES


Power BI 2019-08 / Excel 2010 à 2019

Nous allons voir ici une alternative à ALL( ) et SELECTCOLUMNS( ) (mais un cas particulier
de ce dernier) que l'on retrouve souvent dans les formules DAX, qui est la fonction VALUES( )

n
qui en DAX est à de multiples usages:

llo
ti
an
On part de:
ch
É

Microsoft Power BI / Microsoft Excel BI 299/950


Vincent ISOZ

Ensuite, nous cliquons sur New Table:

n
llo
Et nous écrivons:
ti
an
ch
É

Ce qui fait bien une copie par référence de la table d'origine!

Ou bien pour une colonne particulière (cas le plus fréquent dans les formules DAX avancées!!!):

Microsoft Power BI / Microsoft Excel BI 300/950


Vincent ISOZ

n
llo
ti
Nous verrons plus loin comment éliminer les lignes vierges.
an
ch
É

Microsoft Power BI / Microsoft Excel BI 301/950


Vincent ISOZ

Exemple 5.: Requête DISTINCT


Power BI 2018-03 / Excel 2010 à 2019

La requête DISTINCT( ) comme son nom l'indique, permet de supprimer les doublons. Voyons
un exemple avec Power BI:

n
llo
ti
an
ch

Et son équivalent dans Microsoft Excel:


É

Microsoft Power BI / Microsoft Excel BI 302/950


Vincent ISOZ

n
llo
ti
an
ch

Cette requête fonctionne donc aussi bien sur des tables que sur des requêtes!

Notez que nous pouvons faire la même chose que ce que nous avions fait avec la commande
VALUES( ):
É

Microsoft Power BI / Microsoft Excel BI 303/950


Vincent ISOZ

n
llo
Une différence important entre DISTINCT( ) et VALUES( ) et que dans le cas où ses
fonctions sont utilisées sur une tables liée du côté "plusieurs" (avec relation "un à
plusieurs"), et que la table du côté "un" n'a pas de valeur correspondant sur la clé, alors
VALUES( ) renverra des lignes vides alors que DISTINCT( ) n'en renverra pas (excepté si la table
du côté "plusieurs" a vraiment physiquement des lignes vierges).
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 304/950


Vincent ISOZ

Exemple 6.: Requête SELECTCOLUMNS( ) + DISTINCT( ) +


AVERAGE( ) + ROUND( )
Power BI 2018-03 / Excel 2010 à 2019

n
Curieusement… il ne semble pas simple avec DAX (contrairement à SQL) d'extraire une simple
scalaire avec une requête. Effectivement, pous un simple calcul de moyenne globable, voyez
plutôt… :

llo
Soyez cependant très prudent avec ce type de calculs dans des requêtes plus complexes.
Vous pourriez effectivement avoir des surprises en vérifiant les résultats numériques si
vous en faites pas attention!!! ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 305/950


Vincent ISOZ

Exemple 7.: Requête CALCULATETABLE


Power BI 2018-03 / Excel 2010 à 2019

La requête CALCULATETABLE( ) permet d'extraire tout une table mais de filtrer cette
dernière avec un ou plusieurs filtres. Voyons cela avec Power BI:

n
llo
ti
an
ch
É

Avec Microsoft Excel cela donne:

Microsoft Power BI / Microsoft Excel BI 306/950


Vincent ISOZ

n
llo
ti
an
Sinon on peut faire des requêtes avec critères multiples ET:
ch

Ou avec une condition OU:


É

Ou avec une condition IN:

Microsoft Power BI / Microsoft Excel BI 307/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 308/950


Vincent ISOZ

Exemple 8.: Requête FILTER


Power BI 2018-03 / Excel 2010 à 2019

La requête FILTER( ) permet d'extraire tout une table mais de filtrer cette dernière avec un ou
plusieurs filtres au même titre que'avec CALCULATETABLE( ) mais la première serait plus

n
rapide selon l'article très détaillé de Marco Russo:

https://www.sqlbi.com/articles/filter-vs-calculatetable-optimization-using-cardinality-estimation/

llo
Nous souhaiterions filter tous les articles IBM 500 ou AST Intel 150 et dont la facture payée est à
l'état Oui.

Pour cela, nous écrirons:

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 309/950


Vincent ISOZ

Exemple 9.: Requête SAMPLE


Power BI 2018-03 / Excel 2010 à 2019

C'est une requête très simple. On peut parfois douter de son utilité mais en réalité…. si on
mélange à la table d'origine une colonne de variables aléatoires automatiquement générées, on

n
obtient un outil d'échantillon et de simulation de population très intéressant.

Pour voir en quoi elle consiste, un simple exemple suffit:

llo
ti
an
ch

Remarque: Visiblement, il y a un "seed", et c'est la même chose pour les fonctions qui génèrent
des nombres aléatoires en DAX sur des colonnes!
É

Microsoft Power BI / Microsoft Excel BI 310/950


Vincent ISOZ

Exemple 10.: Requête SUMMARIZE


Power BI 2018-03 / Excel 2010 à 2019

Le but de la requête SUMMARIZE( ) est de faire un groupement simple comme l'illustre


l'exemple suivant:

n
llo
ti
an
Il s'agit donc d'une requête d'une forme aussi de requête de distinction dans sa forme basique
mais elle peut faire beaucoup plus comme nous allons le voir juste après!

L'équivalent dans Microsoft Excel étant:


ch
É

Mais on peut aussi faire des statistiques de regroupement:

Microsoft Power BI / Microsoft Excel BI 311/950


Vincent ISOZ

n
llo
ti
an
Ou son équivalent dans Microsoft Excel:
ch
É

Notons aussi l'exemple très important suivant qui nous sera utiles pour plus tard:

Microsoft Power BI / Microsoft Excel BI 312/950


Vincent ISOZ

n
llo
Et enfin si nous voulons récuperer la moyenne globale il semblerait qu'on ne puisse pas encore
faire un tel calcul en DAX Query. Il faut créer une mesure DAX et l'ajouter sur un rapport:

ti
an
ch

Et qu'on obtient le même résultat avec:


É

Microsoft Power BI / Microsoft Excel BI 313/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 314/950


Vincent ISOZ

Exemple 11.: Requête SUMMARIZE avec tables multiples


Power BI 2018-03 / Excel 2010 à 2019

Considérons le schéma suivant dans Power BI:

n
llo
ti
an
ch

Et la requête SUMMARIZE( ) suivante multi-tables:


É

Microsoft Power BI / Microsoft Excel BI 315/950


Vincent ISOZ

n
llo
Nous verrons à la page 328 que nous pouvons arriver au même résultat avec la fonction
RELATED( ).

Considérons le schéma suivant dans Microsoft Excel:


ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 316/950


Vincent ISOZ

n
llo
ti
an
Avec l'exemple suivant d'une application de SUMMARIZE( ) en monde multi-tables:
ch
É

Microsoft Power BI / Microsoft Excel BI 317/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 318/950


Vincent ISOZ

Exemple 12.: Requête GROUPBY et CURRENTGROUP


Power BI 2018-03 / Excel 2010 à 2019

La requête de type GROUPBY( ) est très similaire à SUMMARIZSE( ) comme l'atteste


l'exemple ci-dessous:

n
llo
ti
an
ch

Outre les performances qui différent (GROUPBY( ) serait plus rapide), un article entier de SQL
É

BI comparant les deux fonctions de requête est disponible ici:

https://www.sqlbi.com/articles/nested-grouping-using-groupby-vs-summarize/

Microsoft Power BI / Microsoft Excel BI 319/950


Vincent ISOZ

Exemple 13.: Requête SUMMARIZECOLUMNS


Power BI 2018-03 / Excel 2010 à 2019

Voyons quelque cas d'applications de SUMMARIZECOLUMNS( ):

n
llo
Et:

ti
an

On peut voir qu'à priori cette fonction fait la même chose qu'avec SUMMARIZE( ). Mais la
seule différence à laquelle j'ai eu affaire dans la pratique à ce jour, c'est que
ch

SUMMARIZECOLUMNS( ) gère des paramètres de filtre comme l'illustre le cas suivante:


É

Microsoft Power BI / Microsoft Excel BI 320/950


Vincent ISOZ

Exemple 14.: Requête SUMMARIZECOLUMNS et IGNORE


Power BI 2019-12 et Excel 2019

Rappelons ce que nous avons obtenu précédemment:

n
llo
Cet ensemble de commandes en réalité supprime:
ti
1. Les lignes qui n'ont pas d'articles

2. Les articles qui n'ont pas de quantités


an
Pour éviter cela, Microsoft a créé la fonction IGNORE( ) dont voici le résultat:
ch
É

Microsoft Power BI / Microsoft Excel BI 321/950


Vincent ISOZ

Exemple 15.: Requête TOPN


Power BI 2018-03 / Excel 2010 à 2019

Nous allons voici ici l'aspect de la requête TOPN( ) du point de vue d'une fonction de requête
dans un premier temps. Pour voir son aspect comme fonction analytique, nous renvoyons le

n
lecteur à la page 551.

Donc voici un premier exemple au plus simple:

llo
ti
Et un deuxième exemple toujours dans Power BI:
an
ch

Notez que pour extraire par exemple que la troisième valeur, on pourra utiliser dans une
mesure la fonction MIN(Table[Total Prix par pièces]), et ensuite en reporter le résultat
dans une matrice, tableau ou autre visuel.

Ou son équivalent dans Microsoft Excel:


É

Microsoft Power BI / Microsoft Excel BI 322/950


Vincent ISOZ

n
llo
ti
an
Il n'existe pas à ce jour et à notre connaissance de méthode en DAX pour trier le résultat!
ch
É

Microsoft Power BI / Microsoft Excel BI 323/950


Vincent ISOZ

Exemple 16.: Requête RANK.EQ


Power BI 2018-03 / Excel 2010 à 2019

Pour des raisons pédagogiques nous avons mis cette fonction à la page 570.

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 324/950


Vincent ISOZ

Exemple 17.: Requête ROW


Power BI 2018-03 / Excel 2010 à 2019

La requête ROW( ) renvoie une simple ligne avec une ou plusieurs statistiques à choix. Voyons
donc un exemple d'application:

n
llo
ti
an
Notez que l'expression suivante:

Ou suivante:
ch

Ne marchent pas, car elles sont plutôt réservées à un usage dans le contexte d'un tableau croisé
É

dynamique.

Voyons un exemple avec Microsoft Excel utilisant COUNTROWS( ):

Microsoft Power BI / Microsoft Excel BI 325/950


Vincent ISOZ

n
llo
ti
an
Ou encore un autre exemple utilisant SUM( ), AVERAGE( ) et ROUND( ):
ch
É

Microsoft Power BI / Microsoft Excel BI 326/950


Vincent ISOZ

Nous verrons à la page 370 un cas relativement important d'utilisation de ROW( ) pour les
tableaux de bord Power BI.

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 327/950


Vincent ISOZ

Exemple 18.: Requête SELECTCOLUMNS avec RELATED


Power BI 2018-03 / Excel 2010 à 2019

Considérons le schéma suivant dans Power BI:

n
llo
ti
an
ch

Et une application de SELECTCOLUMNS( ) avec RELATED( ):


É

Microsoft Power BI / Microsoft Excel BI 328/950


Vincent ISOZ

n
llo
ti
Voyons maintenant un exemple avec Microsoft Excel en considérant le schéma suivant:
an
ch
É

Microsoft Power BI / Microsoft Excel BI 329/950


Vincent ISOZ

n
llo
ti
an
Et enfin un exemple d'application:
ch
É

Microsoft Power BI / Microsoft Excel BI 330/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 331/950


Vincent ISOZ

Exemple 19.: Requête GENERATE avec RELATEDTABLE


Power BI 2018-03 / Excel 2010 à 2019

La requête GENERATE( ) correspond à une requête interne (inner join).

n
Dans Microsoft Excel, la requête DAX suivante:

llo
ti
an
ch

Renvoie donc toute la table tblVentes avec toutes les lignes de la table tblBonus correspondantes
É

mais seulement les lignes pour lesquelles il y a correspondance et y ajoute les colonnes
correspondantes des deux tables c'est pour cela qu'on se retrouve avec 96 lignes et avec deux
colonnes en plus:

Microsoft Power BI / Microsoft Excel BI 332/950


Vincent ISOZ

n
llo
ti
Si on n'utilisait pas RELATEDTABLE( ), on se retrouverait avec un produit cartésien entre les
deux tables!!!
an
Conjointement avec CALCULATETABLE( ), nous pouvons ajouter un filtre à GENERATE( )
ou GENERATEALL( ):
ch
É

Microsoft Power BI / Microsoft Excel BI 333/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 334/950


Vincent ISOZ

Avec Power BI c'est moins parlant puisque par défaut nous n'avons pas de colonnes avec des
numéros d'identifiants de lignes. Mais voici toutefois la requête équivalente:

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 335/950


Vincent ISOZ

Exemple 20.: Requête GENERATEALL avec RELATEDTABLE


Power BI 2018-03 / Excel 2010 à 2019

La requête GENERATEALL( ) correspond à une requête interne (full join).

n
Dans Microsoft Excel, la requête DAX suivante:

llo
ti
an
ch

Renvoie donc toute la table tblVentes avec toutes les lignes de la table tblBonus correspondant,
É

c'est pour cela qu'on se retrouve avec 112 lignes:

Microsoft Power BI / Microsoft Excel BI 336/950


Vincent ISOZ

n
llo
ti
an
Si on n'utilisait pas RELATEDTABLE( ), on se retrouverait avec un produit cartésien entre les
deux tables!!!

À nouveau, avec Power BI c'est moins parlant puisque par défaut nous n'avons pas de colonnes
ch

avec des numéros d'identifiants de lignes. Mais voici toutefois la requête équivalente:
É

Microsoft Power BI / Microsoft Excel BI 337/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 338/950


Vincent ISOZ

Exemple 21.: Requête NATURALINNERJOIN


Power BI 2018-03 / Excel 2010 à 2019

Pour la fonction NATURALINNERJOIN( ), l'excellent rappel suivant de Curbal peut être utile:

n
llo
ti
an
ch

Figure 8 Types de jointures DAX (source: Curbal)


É

Considérons notre schéma habituel:

Microsoft Power BI / Microsoft Excel BI 339/950


Vincent ISOZ

n
llo
ti
an
Et notez que la TablePrincipale a à l'origine 111 lignes et observez bien les colonnes visibles à
gauche de la table comme on peut le voir ci-dessous:
ch
É

Microsoft Power BI / Microsoft Excel BI 340/950


Vincent ISOZ

n
llo
ti
an
ch

Et créons la table suivante de jointure naturelle et notez le nombre de lignes et les colonnes
rajoutées!:
É

Microsoft Power BI / Microsoft Excel BI 341/950


Vincent ISOZ

n
llo
ti
an
ch
É

Donc la jointure naturelle fait bien son travail! Par ailleurs n'oubliez pas que ce type de jointure
est symétrique, donc peu importe l'ordre dans lequel vous mettez les tables dans les arguments de
NATURALINNERJOIN( ).

Microsoft Power BI / Microsoft Excel BI 342/950


Vincent ISOZ

Voyons un autre cas intéressant! Considérons le TOPN( ) suivant:

n
llo
Si on veut rapatrier toutes les lignes correspondant à ces trois secteurs, il nous suffira d'écrire:

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 343/950


Vincent ISOZ

Exemple 22.: Requête NATURALLEFTOUTERJOIN


Power BI 2018-03 / Excel 2010 à 2019

Pour la fonction NATURALLEFTOUTERJOIN( ), l'excellent rappel suivant de Curbal peut


être utile (notez que contrairement à NATURALINNERJOIN( ), cette fonction n'est pas

n
"symétrique"):

llo
ti
an
ch
É

Figure 9 Types de jointures DAX (source: Curbal)

Considérons notre schéma habituel:

Microsoft Power BI / Microsoft Excel BI 344/950


Vincent ISOZ

n
llo
ti
an
Et notez que la TablePrincipale a à l'origine 111 lignes et observez bien les colonnes visibles à
gauche de la table comme on peut le voir ci-dessous:
ch
É

Microsoft Power BI / Microsoft Excel BI 345/950


Vincent ISOZ

n
llo
ti
an
ch

Et créons la table suivante de jointure naturelle externe gauche et notez le nombre de lignes et les
colonnes rajoutées!:
É

Microsoft Power BI / Microsoft Excel BI 346/950


Vincent ISOZ

n
llo
ti
an
ch
É

Ou inversement:

Microsoft Power BI / Microsoft Excel BI 347/950


Vincent ISOZ

n
llo
ti
an
ch
É

Donc la jointure naturelle fait bien son travail!

Microsoft Power BI / Microsoft Excel BI 348/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 349/950


Vincent ISOZ

Exemple 23.: Requête ADDCOLUMNS


Power BI 2018-03 / Excel 2010 à 2019

La requête ADDCOLUMNS( ) permet de rajouter des colonnes simples ou composées de


calculs dans une sous-requête. Mais comme nous le verrons à la page , ce n'est de loin pas sa

n
seule utilité!

Voyons donc d'abord un cas simple:

llo
ti
an
Ou l'équivalent dans Microsoft Excel:
ch
É

Microsoft Power BI / Microsoft Excel BI 350/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 351/950


Vincent ISOZ

Exemple 24.: Requête ROLLUP


Excel BI 2019 / Power BI 2019-10

La fonction ROLLUP( ) est vraiment une fonction de requête DAX pure dédiée typiquement à
SSAS ou au reverse DAX Microsoft Excel. Elle ne fait pas vraiment de sens dans Power BI

n
puisque nous y avons les tableaux croisés dynamiques (mais elle existe toutefois dans ce
dernier!!!!).

llo
Voyons donc un exemple d'application dans Microsoft Excel (notez que les sous-totaux se
trouvent au-dessus des groupes!):

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 352/950


Vincent ISOZ

Exemple 25.: Requête ROLLUPGROUP


Excel BI 2019 / Power BI 2019-10

La fonction ROLLUPGRUOP( ) est vraiment une fonction de requête DAX pure dédiée
typiquement à SSAS ou au reverse DAX Microsoft Excel. Elle ne fait pas vraiment de sens dans

n
Power BI puisque nous y avons les tableaux croisés dynamiques (mais elle existe toutefois dans
ce dernier!!!!).

llo
Voyons donc un exemple d'application dans Microsoft Excel (son utilisation est loin d'être
triviale):

ti
an
ch

Comparons le ROLLUP tout seul fait avant avec le ROLLUPGROUP fait just à l'instant côte à
É

côté (cela peut aider pour la compréhension):

Microsoft Power BI / Microsoft Excel BI 353/950


Vincent ISOZ

ROLLUP seul Avec ROLLUPGROUP

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 354/950


Vincent ISOZ

Exemple 26.: Requête ISSUBTOTAL


Excel BI 2019 / Power BI 2019-10

La fonction ROLLUPADDISSUBOTTAL( ) est encore vraiment une fonction de requête DAX


pure dédiée typiquement à SSAS ou au reverse DAX Microsoft Excel. Elle ne fait pas vraiment

n
de sens dans Power BI puisque nous y avons les tableaux croisés dynamiques (mais elle existe
toutefois dans ce dernier!!!!).

llo
Voyons deux exemples d'applications dans Microsoft Excel!

D'abord avec ROLLUP( ) seul:

ti
an
ch
É

Et enfin avec ROLLUP( ) et ROLLUPGROUP( ):

Microsoft Power BI / Microsoft Excel BI 355/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 356/950


Vincent ISOZ

Exemple 27.: Requête ROLLUPADDISSUBTOTAL


Excel BI 2019 / Power BI 2019-10

La fonction ROLLUPADDISSUBOTTAL( ) est encore vraiment une fonction de requête DAX


pure dédiée typiquement à SSAS ou au reverse DAX Microsoft Excel. Elle ne fait pas vraiment

n
de sens dans Power BI puisque nous y avons les tableaux croisés dynamiques (mais elle existe
toutefois dans ce dernier!!!!).

llo
Voyons donc un exemple d'application dans Microsoft Excel:

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 357/950


Vincent ISOZ

Data Definition (DAX)


Au même titre que le domaine DDL (Data Definition Language) du SQL, le DAX à son propre
DDL qu'il faut normalement apprendre avant de faire de l'analyse DAX!

Le lecteur doit cependant garder à l'esprit que:

n
Toutes les tables créées en DAX peuvent aussi l'être avec Power Query (en M) à notre
connaissance

• Les tables créées en DAX ne sont pas disponibles par la suite dans Power Query (alors

llo
que les tables Power Query sont toujours disponibles dans le Data Model)

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 358/950


Vincent ISOZ

Exercice 28.: Commande CALENDAR


Power BI 2018-03

Nous savons que pour utiliser de nombreuses fonctions DAX il est obligé d'avoir une table de
calendrier.

n
Nous voulons créer une table calendrier nommée tbl_Calendrier qui va de 1990-01-01 jusqu'au
2005-01-01.

llo
Cet exercice se poursuit dans sa logique à la page 637 et ensuite à la page 690.

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 359/950


Vincent ISOZ

Solution
On clique sur Modeling/New Table:

n
On saisit la relation suivante:

llo
Et on valide par entrée pour obtenir:
ti
an

Et si on va visualiser la table, nous avons bien:


ch
É

Microsoft Power BI / Microsoft Excel BI 360/950


Vincent ISOZ

n
llo
Sinon voici un calendrier relativement complet (en une seule langue cependant…):

Calendrier =
ADDCOLUMNS (
ti
CALENDAR ( DATE ( 2000, 1, 1 ), DATE ( 2025, 12, 31 ) ),
"Date As Integer", FORMAT ( [Date], "YYYYMMDD" ),
an
"Year", YEAR ( [Date] ),
"Month number", FORMAT ( [Date], "MM" ),
"Year Month number", FORMAT ( [Date], "YYYY/MM" ),
"Semester", "S"
& IF ( MONTH ( [Date] ) <= 6, 1, 2 ),
"Year Month Short", FORMAT ( [Date], "YYYY/mmm" ),
"Month Name Short", FORMAT ( [Date], "mmm" ),
ch

"Month Name Long", FORMAT ( [Date], "mmmm" ),


"Day of Month Number", DAY ( [Date] ),
"Number of Days in Month", DAY ( EOMONTH ( [Date], 0 ) ),
"Day Of Week Number", WEEKDAY ( [Date], 2 ),
"Day Of Week", FORMAT ( [Date], "dddd" ),
"Day Of Week Short", FORMAT ( [Date], "ddd" ),
"Quarter", "Q" & FORMAT ( [Date], "Q" ),
"Week Number", "Week" & WEEKNUM ( [Date], 2 ),
É

"Week", WEEKNUM ( [Date], 2 ),


"ISO 8601 Week", WEEKNUM ( [Date], 21 ),
"Year Quarter", FORMAT ( [Date], "YYYY" ) & "/Q"
& FORMAT ( [Date], "Q" )
)

Nous reviendrons plus tard sur toutes ces fonctions!

Microsoft Power BI / Microsoft Excel BI 361/950


Vincent ISOZ

Attention à ne pas confondre EOMONTH( ) qui est une fonction de date classique avec la
fonction ENDOFMONTH( ) qui est une fonction d'intelligence temporelle que nous verrons
plus loin!

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 362/950


Vincent ISOZ

Exercice 29.: Commande CALENDARAUTO


Power BI 2018-03

Nous savons que pour utiliser de nombreuses fonctions DAX il est obligé d'avoir une table de
calendrier.

n
Nous voulons créer une table calendrier nommée tbl_CalendrierAuto qui se crée
automatiquement avec une plage de dates qui dépend de tous les champs de dates contenus dans

llo
le modèle Power BI.

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 363/950


Vincent ISOZ

Solution
On clique sur Modeling/New Table:

n
On saisit la relation suivante:

llo
Et on valide par entrée pour obtenir:
ti
an

Et si on va visualiser la table, nous avons bien:


ch
É

Microsoft Power BI / Microsoft Excel BI 364/950


Vincent ISOZ

Cette fonction a un paramètre qui permet de décaler l'année fiscale à un mois donné de l'année.
Par exemple:

Avant: Après (décalage de 1 mois):

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 365/950


Vincent ISOZ

Exercice 30.: Commande SUMMARIZE


Power BI 2018-03

Créez une table qui agrège les noms des articles, les sommes des quantités (attention de prendre
la colonne Quantité_Clean comme le suggère l'exemple à l'exercice de la page 408).

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 366/950


Vincent ISOZ

Solution
On clique sur Modeling/New Table:

n
Et on y met:

llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 367/950


Vincent ISOZ

Exercice 31.: Commande ADDCOLUMNS


Power BI 2018-03

Un premier exercice illustrant cette commande dans un cas fameux est disponible à la page 690.

n
Sinon en ajoutant un IF (voir exercices à partir de la page 408), ajoutez une nouvelle colonne de
type image pour des KPI basés sur Quantité_Clean avec les critères de votre choix.

Sachant que les images de KPI sont disponibles aux adresses suivantes:

llo
• http://www.sciences.ch/tmp/kpi/powerbi_kpi_arrow_down_red.jpg

• http://www.sciences.ch/tmp/kpi/powerbi_kpi_arrow_middle_orange.jpg

• http://www.sciences.ch/tmp/kpi/powerbi_kpi_arrow_up_green.jpg

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 368/950


Vincent ISOZ

Solution
En reprenant la suite de l'exercice de la page 366 (sur SUMMARIZE) on écrit:

n
llo
Ce qui donnera:
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 369/950


Vincent ISOZ

Exercice 32.: Commande UNION


Power BI 2018-03

Basiquement comme son nom l'indique, UNIONS fusionne simplement des tables mais sans en
supprimer les doublons (sinon quoi faudra l'encapsuler dans la fonction DISTINCT( )).

n
Pour l'illustrer, considérons les trois tables suivantes importées:

llo
ti
an
Comment les fusionner ?
ch
É

Microsoft Power BI / Microsoft Excel BI 370/950


Vincent ISOZ

Solution
Eh bien la solution consiste simplement à écrire:

n
llo
ti
Et au cas où il y aurait des doublons, nous pouvons y associer DISTINCT( ) que nous
connaissons déjà bien:
an
ch
É

Microsoft Power BI / Microsoft Excel BI 371/950


Vincent ISOZ

Exercice 33.: Commande UNION et ROW


Power BI 2018-03

L'idée ici est d'utiliser les commandes de requêtes UNION( ) et ROW( ) pour créer la table
statique suivante dans Power BI (on pourrait aussi bien évidemment faire un copier/coller spécial

n
d'une table Microsoft Excel à une nouvelle table statique…):

llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 372/950


Vincent ISOZ

Solution
La solution non triviale est donnée par:

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 373/950


Vincent ISOZ

Exercice 34.: Commande UNION et GENERATESERIES


Power BI 2018-03

Dans le domaine des statistiques nous avons souvent besoin de créer une table des centiles. Cette
dernière peut être régulière ou irrégulière. L'exercice ici est de construire une table du type

n
suivant à l'aide de la fonction UNION( ) et GENERATESERIES( ):

llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 374/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 375/950


Vincent ISOZ

Solution
La solution est donnée par la création de table suivante :GENERATESERIES(0,20,1)

n
llo
ti
an
ch

Évidemment on aurait pu aussi créer une table depuis un unique GENERATSERIES( ) !


É

Microsoft Power BI / Microsoft Excel BI 376/950


Vincent ISOZ

Exercice 35.: Commande DATATABLE


Power BI 2018-03

L'idée ici est d'utiliser la commande de requête DATATABLE( ) (historiquement elle plus
récente que UNION( ) et ROW( )!) pour créer la table statique suivante dans Power BI (on

n
pourrait aussi bien évidemment faire un copier/coller spécial d'une table Microsoft Excel à une
nouvelle table statique…):

llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 377/950


Vincent ISOZ

Solution
La solution non triviale est donnée par:

n
llo
ti
an
Notez à ce jour le problème majeur suivant (surtout pour les utilisateurs de SalesForce) et qui n'a
pas encore de solution simple en 2019:
ch
É

Nous voyons donc bien que Power BI et DAX n'est pas

Microsoft Power BI / Microsoft Excel BI 378/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 379/950


Vincent ISOZ

Exercice 36.: Commande INTERSECTION


Power BI 2018-03

Pour qui connaissant le SQL ou la théorie des ensemble, l'intersection est un grand classique!
Pour voir un exemple, considérons les trois tables suivantes:

n
llo
ti
an
Nous souhaiterions fusionner par intersection seulement la colonne strNbArticle des trois tables?
ch
É

Microsoft Power BI / Microsoft Excel BI 380/950


Vincent ISOZ

Solution
Pour la solution le lecteur doit savoir que (curieusement) la fonction INTERSECTION( ) ne
prend pas en compte plus de deux arguments à ce jour. Donc la solution sera donnée par:

n
llo
Ce qui est bien conforme!

Nous verrons cependant plus loin que certaines personnes utilisent INTERSECTION( )
pour créer des relations virtuelles!

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 381/950


Vincent ISOZ

Exemple 37.: Commande CROSSJOIN


Power BI 2018-03 / Excel 2010

Nous allons voici ici un cas connu en statistique qui est la création d'une table résultant du
produit cartésien de deux colonnes à l'aide de la fonction CROSSJOIN( ).

n
Voyons un exemple avec Power BI:

llo
ti
an
ch
É

Ou lorsqu'on a des valeurs vides, nous écrirons:

Microsoft Power BI / Microsoft Excel BI 382/950


Vincent ISOZ

n
llo
ti
an
ch
É

Ou en considérant le schéma suivant dans Microsoft Excel:

Microsoft Power BI / Microsoft Excel BI 383/950


Vincent ISOZ

n
llo
ti
an
Nous pouvons faire le produit cartésien de toutes les ventes avec tous les bonus (ie remises):
ch
É

Microsoft Power BI / Microsoft Excel BI 384/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 385/950


Vincent ISOZ

Exemple 38.: Commande GENERATESERIES avec génération de


de séquences ou nombres aléatoires
Power BI 2018-03 / Excel 2016

n
Comment générer en DAX un simple table de rangs (utiles pour les filtres de rangs):

llo
ti
an
Et pour ceux qui ont des listes de produits alphabétiques, il est utile d'avoir un index des lettres
de l'alphabet. Pour cela on écrira:
ch
É

Microsoft Power BI / Microsoft Excel BI 386/950


Vincent ISOZ

n
llo
ti
an
ch

Voyons maintenant un cas très important en finance et statistique industrielle. La génération de


nombres aléatoires.

Celle-ci peut se faire aisément en conjonction avec GENERATESERIES( ) comme l'illustre la


capture d'écran ci-dessous:
É

Microsoft Power BI / Microsoft Excel BI 387/950


Vincent ISOZ

n
llo
ti
an
Ou en même temps, nous voyons un exemple d'application de RAND( ), RANDBETWEEN( )
et NORM.S.INV( ). Nous pourrions évidemment ajouter NORM.INV( ) à la liste sans aucune
difficulté!

Remarque: Visiblement, il y a un "seed", et c'est la même chose pour les fonctions qui génèrent
des nombres aléatoires en DAX sur des colonnes!
ch
É

Microsoft Power BI / Microsoft Excel BI 388/950


Vincent ISOZ

Data Analysis (DAX)


Avant de commencer ce chapitre sachez qu'un pourcentage important de consultants, experts
informatiques ou même Data Scientists peinent avec la logique et la jungle de DAX. C'est pour
cela que vous trouverez sur Internet un certain nombre d'articles sur les "haters" de DAX.

En tant qu'auteur de ce document, je ne souhaite pas prendre parti, mais sachez que DAX peut

n
comme tout autre domaine relativement complexe être résumé par l'illustration ci-dessous:

llo
La maîtrise de DAX nécessite

Du TEMPS,

De La CONNAISSANCE,

De la PATIENCE,
ti
an
Et surtout de l'EXPÉRIENCE
ch

J'ai remarqué que pour une grande majorité d'individus, un minimum de 5 jours de formation
était nécessaire pour qu'ils puissent commencer appréhender les finesses de ce langage mais
aussi ses dangers et faiblesses.
É

Ceci étant dit… commençons!

Microsoft Power BI / Microsoft Excel BI 389/950


Vincent ISOZ

On considère cinq familles d'applications de DAX:

1. Les requêtes DAX qui créent des tables

2. Les formules DAX qui créent des colonnes dans les tables originales (DAX calculated
columns)

3. Les mesures DAX dites "DAX query context"

n
3.1. S'appliquant à un sous-ensemble des sources

3.2. Basées sur les en-têtes de lignes et colonnes des TCS, segments et filtres du rapport

llo
3.3. Différents pour chaque cellule d'un TCD

ti
4. Les mesures DAX de type query context avec filtres dites "DAX filter context"
an
4.1. Elles sont identifiées car elles contiennent des paramétrages de filtres dans la formule
ch
É

5. Les mesures DAX qui s'exécutent sur les lignes des tables sources et dites "DAX rows
context". On les reconnaît car elles impliquent des fonctions qui finissent par la lettre X:

Microsoft Power BI / Microsoft Excel BI 390/950


Vincent ISOZ

Fonctions AGGREGATEX
SUMX
AVERAGEX
MINX
MAXX
COUNTX
COUNTAX

n
Pour ceux qui sont intéressés à avoir en local un rapide résumé de toutes les fonctions, il y a un
excellent fichier Power BI qu'on peut télécharger gratuitement sur le Web:

llo
ti
an
ch

Nous vous le recommandons fortement!


É

Microsoft Power BI / Microsoft Excel BI 391/950


Vincent ISOZ

Une question très fréquemment posée est DAX ou M (Power Query) lequel est le plus rapide ou
conseillé? La réponse est: cela dépend!

Effectivement:

• On privilégiera Power Query et M pour sa simplicité et donc compréhensible et


modifiable par la majorité des collaborateurs.

n
• On privilégiera Power Query si l'utilisateur final est un Data Steward

• Sinon on privilégiera le DAX pour la rapidité et l'espace mémoire (quand cela est
possible d'appliquer le DAX car pour certaines sources c'est problématique voire

llo
simplement pas possible à ce jour)

• On privilégiera le DAX si l'utilisateur final est un Data Scientist

• Pour les fonctions de type "Intelligence Temporelle" on privilégiera naturellement DAX


qui a des fonctions faites pour!

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 392/950


Vincent ISOZ

Compatibilités fonctions DAX


Microsoft rajoute régulièrement de nouvelles fonctions DAX. Ce qui n'est pas sans poser de
problèmes (au même titre qu'avec Microsoft Excel) de compréhension du DAX. J'ai commencé
ci-dessous à construire une liste des problèmes rencontrés jusqu'à maintenant vu que Microsoft
s'amuse à en supprimer la liste à chaque nouvelle version de la suite Microsoft Office (sans
commentaires…!):

n
Fonction Description
MEDIAN Introduit avec Excel 2016
MEDIANX Introduit avec Excel 2016

llo
CONVERTE Septembre 2019
REMOVEFILTERS Septembre 2019
SELECTEDMEASUREFORMATSTRING Mai 2019
ALLCROSSFILTERED Avril 2019
CONTAINSSTRING Mars 2019
CONTAINSSTRINGEXACT Mars 2019
DISTINCTCOUNTNOBLANK Mars 2019
APPROXIMATEDISTINCTCOUNT
ISINSCOPE
NORM.DIST
NORM.INV
NORM.S.INV
ti Décembre 2019
Août 2018
Août 2018
Août 2018
Août 2018
an
T.DIST Août 2018
T.DIST.2T Août 2018
T.DIST.RT Août 2018
T.INV Août 2018
T.INV.2T Août 2018
DISTINCT April 2018
COMBINEVALUES Mars 2018
ch

UTCNOW Mars 2018


UTCTODAY Mars 2018

Encore une fois!!!! Gardez bien en tête les trois points suivants quand vous travaillez avec du
DAX:

1. Certaines fonctions semblent faire doublon mais en réalité ce sont des évolutions
É

historiques (pensez à LOOKUP, VLOOKUP et XLOOKUP dans Excel par exemple!)

2. Certaines fonctions remplacent d'autres au niveau de leur comportement uniquement pour


améliorer la performance (l'exemple le plus flagrant est REMOVEFILTERS qui a
remplacé ALL en septembre 2019)

3. Certaines fonctions ne peuvent être réalisées (écrites) que si dès le début la bonne table
est sélectionnée pour créer la mesure!

Microsoft Power BI / Microsoft Excel BI 393/950


Vincent ISOZ

Raccourcis claviers DAX


Ces raccourcis ne marchent pas à ce jour dans Power Pivot (pour Microsoft Excel):

• Indentation (si curseur en début de ligne): TAB

• Suppression Indentation (si curseur en début de ligne): ALT+TAB

n
• Indentation: Ctrl + ]

• Suppression Indentation: Ctrl + [

llo
• Nouvelle ligne en conservant le retrait: MAJ + ENTREE

• Nouvelle ligne à partir de la première ligne: ALT + ENTREE

• Activer Intelligence: CTRL + ESPACE

• Commenter plusieurs lignes: CTRL + KC ou CTRL + /


ti
Décommenter plusieurs lignes: CTRL + KU ou CTRL + /

Déplacer la ligne actuelle vers le haut / bas: ALT + Flèche haut / bas
an
• Entrez plusieurs lignes de code à la fois: CTRL + ALT + Flèche haut / bas

• Aller au numéro de ligne: CTRL + G

• Supprimer un mot: CTRL + DEL

• Suppression d'une / plusieurs lignes: CTRL + MAJ + K. Pour mettre en surbrillance


ch

plusieurs lignes, puis CTRL + MAJ + K

• Trouver et remplacer un mot: CTRL + D pour mettre en surbrillance le mot en cours,


CTRL + D à nouveau pour trouver / highlighter le même mot suivant. Continuez à
appuyer sur CTRL + D pour trouver / mettre en évidence tous les mêmes mots, puis
commencez à taper pour remplacer tous les mots à la fois

• Trouvez et remplacez tout d'un genre à la fois: CTRL + MAJ + L pour mettre en évidence
É

une partie de votre expression DAX puis commencez à taper pour remplacer les mots
surlignés à la fois

Microsoft Power BI / Microsoft Excel BI 394/950


Vincent ISOZ

Commentaires DAX
DAX prend en charge deux types de commentaires différents:

• Les commentaires sur une seule ligne peuvent être démarrés avec //

• Vous pouvez commenter plusieurs lignes ou commenter un texte au milieu d'une ligne en

n
utilisant / * * / (par exemple = 1 + / * un commentaire * / 2)

Cela marche seulement dans SQL Server, Power BI et les requêtes DAX dans Microsoft Excel.
Pas encore dans les formules DAX de Microsoft Excel (du moins pas à ce jour!).

llo
ti
an

Figure 10 Requête DAX dans Microsoft Excel avec commentaires


ch

Ou avec Power BI:


É

Figure 11 Requête DAX dans Power BI avec commentaires

Microsoft Power BI / Microsoft Excel BI 395/950


Vincent ISOZ

Icônes DAX
Il faut parfois être bien concentré avec Power BI ou Microsoft Excel pour comprendre à quel
type de DAX nous avons affaire. Voici quelques symboles qu'il faut bien comprendre:

Logo Description

n
Une simple table (importée)

Une table DAX (ie requête DAX)

llo
Un champ de type Data (donc on pourra extraire la hiérarchie de dates!)

Un champ numérique qui pourra être utilisée pour faire des agrégations

Un mesure DAX

Un colonne DAX

ti
Un mesure DAX de type "paramètre" (What-IF)

Une hiérarchie DAX


an
Un dossier de mesures DAX

Une table uniquement de mesures DAX

Une erreur dans un requête ou mesure DAX

Groupe
ch

Tableau 2 Tableau icônes DAX


É

Microsoft Power BI / Microsoft Excel BI 396/950


Vincent ISOZ

Organiser les fonctions

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 397/950


Vincent ISOZ

"Table" de mesures

Concernant l'icône suivante: . Pour l'obtenir c'est assez subtile (attention cette méthode n'est
pas recommandée si vous utilisez le Q&A)! D'abord créez une table manuelle avec
typiquement:

n
llo
ti
an
Vous validez pour obtenir:

Ensuite vous y mettez au moins une mesure:


ch

Ensuite vous masquez la colonne Formules:


É

Microsoft Power BI / Microsoft Excel BI 398/950


Vincent ISOZ

n
llo
Ce qui donnera:

ti
Ensuite il faut fermer et rouvrir le fichier (!!!), ce qui donnera:
an
ch
É

Microsoft Power BI / Microsoft Excel BI 399/950


Vincent ISOZ

Dossiers et sous-dossiers de mesures

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 400/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 401/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 402/950


Vincent ISOZ

Opérateurs DAX
En DAX (mais pas seulement…) de nombreux opérateurs peuvent être utilisés pour différents
fonctions. En voici un résumé:

Type Opérateur Signification Exemple Résultat


Arithmétique + Addition 2+3 5
2–3

n
- Soustraction -1
* Multiplication 2*3 6
/ Division 3/2 1.5
^ Exponentiation 2^3 8

llo
Comparaison = Égalité 2=3 FALSE
> Plus que grand que 2>3 FALSE
< Plus petit que 2<3 TRUE
>= Plus grand ou égale à 2 >= 3 FALSE
<= Plut petit ou égal à 2 <= 3 TRUE
<> Différent de 2<>3 TRUE
Concaténation & Concatène deux "2" & "3" 23

Logique &&

||
ti
valeurs de textes
Opérateur ET entre
deux expressions
booléennes
Opérateur OU entre
(2 = 3) && (1 = 1)

(2 = 3) || (1 = 1)
FALSE

TRUE
an
deux expressions
booléennes
IN Appartenance à une 2 IN {1, 2, 3} TRUE
liste
NOT Négation NOT 2 = 3 TRUE
Tableau 3Tableau opérateurs DAX
ch

Notez donc que DAX ne gère donc à ce jour ni les symboles de Wildcards, ni les RegEx!
É

Microsoft Power BI / Microsoft Excel BI 403/950


Vincent ISOZ

DAX Catégorie Fonctions d'Informations


Exercice 1.: Fonction USERNAME
Power BI 2019-10

n
Voici une fonction d'information qui est probablement la plus utilisée à travers le monde pour la
RLS (Row Level Security).

llo
Nous ne la présentons pas donc sous forme d'un exercice:

ti
an

Notez qu'une fois publié sur Power BI services, cette fonctione donne:
ch
É

D'après la documentation cette fonction devrait donner "domaine/nom_utilisateur". Mais c'est le


cas en réalité uniquement pour Power BI Report Server! Si on possède Power BI Services, il n'y
aura pas de différence entre la fonction USERNAME( ) et la fonction
USERPRINCIPALNAME( ) que nous allons voir ci-dessous!

Microsoft Power BI / Microsoft Excel BI 404/950


Vincent ISOZ

Exercice 2.: Fonction USERPRINCIPALNAME


Power BI 2019-10

USERPRINCIPALNAME( ) doit donc forcer l'affichager du nom de l'utilisateur sous forme


d'adresse e-mail, même si on utilise Power BI Report Server.

n
Nous ne la présentons pas donc sous forme d'un exercice:

llo
ti
an
Notez qu'une fois publié sur Power BI services, cette fonctione donne:
ch
É

Microsoft Power BI / Microsoft Excel BI 405/950


Vincent ISOZ

Exercice 3.: Fonction USERCULTURE


Power BI 2019-10

La fonction USERCULTURE est très utilisée dans les multinationales où les rapports doivent
être multi-langue.

n
Cette fonction renvoie le code de lanque qui pourra plus tard être utilisé à l'aide de fonctions
DAX que l'on verra plus tard, pour changer automatiquement les phrases sur les rapports, les
légendes et les titres des graphiques.

llo
On crée un mesure utilisant cette fonction et on observe le résultat:

ti
an
ch

Notez qu'à ce jour, cette fonction n'est pas reconnue comme fonction officielle (raison pour
laquelle elle n'apparaît pas dans la liste des fonctions et qu'elle est soulignée en rouge!).
É

Microsoft Power BI / Microsoft Excel BI 406/950


Vincent ISOZ

DAX Variables
Power BI 2019-10

Ici pas d'exercice, juste voir qu'on peut utiliser des variables en DAX (sauf erreur de ma part c'est
depuis 2017 que cela existe).

n
Voyons un cas simple car on retrouvera les variables DAX relativement souvent dans la pratique
(car permettant principalement d'écrire de longues formules plus élégamment mais pas que…!!!),

llo
et surtout dans les Quick Measures DAX (voir page 709).

L'exemple le plus simple (mais pas le plus convaincant) est de reproduire la Quick Measure que
l'on verra à la page 802:

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 407/950


Vincent ISOZ

DAX Catégorie Fonctions Logiques


Exercice 4.: Fonction IF (+VALUE)
Power BI 2018-03

n
Pour la suite nous nous interdisons d'aller dans PowerQuery pour nettoyer le typage de certaines
données. Or la colonne Quantité contient des "NC". Trouvez en utilisant une nouvelle colonne
qui sera nommée Quantité_Clean et les fonctions IF et VALUE comment faire ceci.

llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 408/950


Vincent ISOZ

Solution

Dans le volet de droite on cliquer sur New Column:

n
llo
ti
an
Et on y met:
ch
É

Microsoft Power BI / Microsoft Excel BI 409/950


Vincent ISOZ

Exercice 5.: Fonction IF, OR (+VALUE)


Power BI 2018-03

Après avoir fait les exercices à la page 359 (création d'un calendrier) et page 690 (ajout de
colonnes complémentaires dans le calendrier), rajoutez à l'aide des fonctions IF et OR une

n
colonne avec les numéros de semestre.

llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 410/950


Vincent ISOZ

Solution

Vous rajoutez à la fin de la formule DAX simplement la partie suivante:

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 411/950


Vincent ISOZ

Exercice 6.: Fonction AND


Power BI 2018-03

Pour un exemple concret et intéressant de la fonction AND le lecteur pourra se report à l'exercice
sur SUMX( ) à la page 493 ou avec COUNTROWS( ) à la page 545.

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 412/950


Vincent ISOZ

Exercice 7.: Fonction SWITCH (pour KPI)


Power BI 2018-03

Considérant ce que nous avions fait à la page 368 sur la création de KPI:

n
llo
ti
an

Changez la formule DAX correspondant de la colonne KPI pour utiliser un SWITCH( ) plutôt
qu'un IF( )!
ch
É

Microsoft Power BI / Microsoft Excel BI 413/950


Vincent ISOZ

Solution

L'idée est simplement de changer cela (voir page 368):

n
llo
En cela:
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 414/950


Vincent ISOZ

DAX Catégorie de Filtres


Exercice 8.: Fonction RELATED
Power BI 2018-03

n
RELATED( ) est probablement la fonction la plus connue du monde DAX puisqu'elle permet
d'exploiter l'opportunité qu'offrent les relations entre tables.

llo
Pour voir un exemple de cette fonction, préparez d'abord le schéma suivant :

ti
an
ch
É

où SourceRemisesClients (avant renommage en csv_SourceRemisesClients) contient:

Microsoft Power BI / Microsoft Excel BI 415/950


Vincent ISOZ

n
llo
ti
an
ch
É

L'objectif est de créer dans un dashboard un tableau qui contient par article le total net +
"l'escompte" qui est indiquée ci-dessus dans la colonne Bonus.

Microsoft Power BI / Microsoft Excel BI 416/950


Vincent ISOZ

Solution

Le début de la formule est classique et utilise:

n
llo
ti
La suite est de l'arithmétique pure (il s'agit toujours de la même colonne mais qu'on renomme au
fur et à mesure de notre progression):
an
ch
É

et finalement on faire intervenir RELATED pour aller rapatrier le "bonus" de chacun des clients:

Microsoft Power BI / Microsoft Excel BI 417/950


Vincent ISOZ

n
llo
Et rappelez-vous que tout du long, nous sommes dans une formule DAX de colonne et non pas
de mesure!!!!
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 418/950


Vincent ISOZ

Exercice 9.: Fonction CALCULATE


Power BI 2018-03

CALCULATE( ) permet d'appliquer une opération à une colonne selon un ou plusieurs filtres.
Elle prend au moins deux arguments, le premier étant l'opération à réaliser et le second une

n
expression booléenne servant de filtre. On peut ainsi, y mettre plusieurs filtres séparés par des
points virgules…

llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 419/950


Vincent ISOZ

Solution

Nous allons déterminer la part du chiffre d'affaires nette (donc déduction faite du rabais)
réellement encaissé en 2000, ce qui implique une double condition de filtrage (sur les dates de
commandes 2000 et factures payées « OUI », cet exercice a déjà été réalisé avec SUMX et
FILTER et AND plus haut donc on devrait obtenir le même résultat :

n
llo
ti
Comme on peut le voir on a obtenu le même résultat qu'avec CA _net_Encaissé _2000 :
an
ch
É

Microsoft Power BI / Microsoft Excel BI 420/950


Vincent ISOZ

Exercice 10.: Fonctions FILTER et AND dans CALCULATE


Power BI 2018-03

C'est la fonction de filtrage par excellence pour cela elle ne fonctionne pas seule mais avec une
fonction de calcule idéalement statistique. Elle prend en argument d'abord une table, puis une

n
expression booléenne ensuite. Cette expression booléenne peut tirer avantage de AND et OU
dans le cas où l'on souhaite combiner plusieurs conditions.

Nous souhaitons dans un tableau afficher par Pays la Moyenne des ventes pour l'année 2000 et le

llo
secteur des Assurances.

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 421/950


Vincent ISOZ

Solution

Étant donné qu'il existe plusieurs exercices combinant FILTER( ) et des fonctions statistiques,
nous allons présenter cette fois un cas de combinaison entre FILTER( ) et CALCULATE( ) :

n
llo
La mesure calculée ci-dessous est la moyenne des ventes réalisées en 2000 dans le secteur des
Assurances uniquement :

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 422/950


Vincent ISOZ

Exercice 11.: Fonctions FILTER et IN dans CALCULATE


Power BI 2018-03

L'opérateur IN est une façon raccourcie d'utiliser l'opérateur OR ou même la fonction


CONTAINSROW( ).

n
En reprenant l'exemple vu plus haut:

llo
ti
an
ch

Ajoutez comme critère que nous voulons uniquement les ordinateurs de type AST Intel 150 ou
AST Intel 200.
É

Microsoft Power BI / Microsoft Excel BI 423/950


Vincent ISOZ

Solution

Voyons d'abord la solution avec un simple OR:

n
llo
ti
an
ch

Ou écrit autrement:
É

Microsoft Power BI / Microsoft Excel BI 424/950


Vincent ISOZ

n
llo
ti
an

Ou avec l'opérateur IN:


ch
É

Microsoft Power BI / Microsoft Excel BI 425/950


Vincent ISOZ

n
llo
ti
an

Ou encore avec CONTAINSROW( ):


ch
É

Microsoft Power BI / Microsoft Excel BI 426/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 427/950


Vincent ISOZ

Exercice 12.: Fonction FILTER avec FOUND ou LEFT


Excel BI 2010 à 2019

Considérons que nous voulons la somme des quantités par secteurs d'activités. Mais qu'une
colonne sous forme de mesure DAX doit contenir les quantités vendues seulement pour les

n
articles de type IBM.

llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 428/950


Vincent ISOZ

Solutions

La première solution possible est:

n
llo
La deuxième solution possible est:
ti
an
ch

Il va sans dire que la même philosophie s'applique avec la fonction RIGHT( ).


É

Microsoft Power BI / Microsoft Excel BI 429/950


Vincent ISOZ

Exercice 13.: Fonction FILTER avec EVALUATE et ORDER BY


Excel BI 2010 à 2019

Comme nous l'avons déjà précisé à la page 284, la requête EVALUATE n'existe à ce jour et à
notre connaissance dans Power BI. Voyons toutefois un cas d'application avec Microsoft

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 430/950


Vincent ISOZ

Exercice 14.: Fonction ALL


Power BI 2018-03

Cette fonction renvoie toutes les lignes de la table en ignorant tous les filtres existants. Elle est
utilisée en conjonction avec d'autres fonctions notamment CALCULATE( ), car même si cela

n
ne se remarque pas, CALCULATE( ) crée un filtre contextuel lorsqu'elle est invoquée et
parfois, il peut s'avérer utile de lever ce filtre.

llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 431/950


Vincent ISOZ

Solution

Le code ci-dessous calcule le rapport entre le volume des ventes brutes par le volume global des
ventes. (On utilise ici DIVIDE( ) à la place de / pour éviter les erreurs de division par 0
notamment) :

n
llo
On peut ensuite afficher le résultat en conjonction avec les différents secteurs d'activité pour voir
la part de chacun :

ti
an

Pour mieux comprendre tentons de présenter le numérateur et le dénominateur séparément :


ch

Le numérateur utilise tout simplement la mesure de calcul dans l'exercice de SUMX( ) :

Le dénominateur également :
É

Sauf, qu'avec ALL( ), on étend la somme à l'ensemble de la table ce qui permet à ce dernier de
rester constant comme on peut le voir à l'affichage :

Microsoft Power BI / Microsoft Excel BI 432/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 433/950


Vincent ISOZ

Exercice 15.: Fonction ALL et REMOVEFILTER avec slicer (segment) ignoré et


filtre statique supplémentaire
Power BI 2018-03

Voici une requête typique très demandée. Comment créer une mesure qui soit indépendante de

n
l'un des slicers (segments) et dépendante ou pas en même temps d'un autre filtre non dynamique?

Considérons que nous voulons afficher la somme des quantités par Article qui soit filtrable par

llo
année, mais aussi avec une colonne qui soit indépendante du filtre choisi pour une année?

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 434/950


Vincent ISOZ

Solution

La solution est donnée par:

n
llo
Et considérons le cas avec un filtre statique supplémentaire comme quoi nous voulons que l'état
des factures qui sont payées:

ti
an

Pour des raisons historiques et pédagogiques, Microsoft a créé la fonction REMOVEFILTER( )


qui dans cette situation se subtitue parfaitement à ALL( ) et serait plus performant!
ch
É

Microsoft Power BI / Microsoft Excel BI 435/950


Vincent ISOZ

Exercice 16.: Fonction ALLSELECTED


Power BI 2018-03

Cette fonction a la particularité de ne supprimer que les filtres contextuels alors que ALL( )
supprime tous les filtres même hiérarchiques!!!

n
Nous allons ici juste faire un exemple et plus tard, nous ferons des exercices sur cette fonction!

Pour comprendre ce que fait cette fonction, nous conseillons de préparer le scénario suivant:

llo
ti
an
Avec:
ch

Et:

Et si on coche quelques articles au hasard, on obtient:


É

Microsoft Power BI / Microsoft Excel BI 436/950


Vincent ISOZ

n
llo
On peut faire aussi une fonction DAX sur la même idée qui ne prend que ce qui n'est pas
sélectionné. Prenons comme exemple la colonne Quantité avec:

Remarque: ALLSELECTED( ) et VALUES( ) ont le même effet tant qu'on travaille avec un
seul filtre (ie une seule colonne!)

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 437/950


Vincent ISOZ

Exercice 17.: Fonction ALLSELECTED avec calcul


Power BI 2018-03

Considérons que nous souhaitons calculer le pourcentage des ventes mais relativement au grand
total des ventes (quel que soit le filtre!).

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 438/950


Vincent ISOZ

Solution

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 439/950


Vincent ISOZ

Exercice 18.: Fonction ALLSELECTED avec colonnes multiples


Power BI 2020-02

Considérons la matrice suivante:

n
llo
ti
an
ch

Nous souhaitons ajouter une colonne qui pour chaque Secteur d'Activité compare en % par
É

rapport au grand total, qui pour chaque état de Facture payée compare en % par rapport au grand
total, mais qui pour les livreurs compare par rapport au grand total de chaque livreur!

Bien évidemment tout en faisant en sorte que cela s'adapte à l'article sélectionné dans le segment
contenant les Articles.

Microsoft Power BI / Microsoft Excel BI 440/950


Vincent ISOZ

Solution

Pour cela nous créons le mesure suivante dans un premier temps (cela aide à comprendre):

n
llo
ti
an
ch
É

Ensuite, pour mettre le tout en pourcentage, on modifie juste un petit peu comme ci-dessous:

Microsoft Power BI / Microsoft Excel BI 441/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 442/950


Vincent ISOZ

Exercice 19.: Fonction ALLSELECTED et EXCEPT( )


Power BI 2020-02

Créez une matrice avec un slicer sur les noms des Article qui montre:

n
1. La quantité vendue par Secteur d'Activité

2. Affiche pour chaque secteur d'activité une colonne avec le grand total

llo
3. Affiche pour chaque secteur le grand total par Article sélectionné dans la slicer

4. Affiche pour chaque secteur la différence par rapport au grand-total par Article
sélectionné dans la slicer

5. Affiche pour chaque secteur le total par Article sélectionné dans la slicer

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 443/950


Vincent ISOZ

Solution

On va créer la matrice et le slicer suivant:

n
llo
Avec d'abord pour rappel:

Et enfin:
ti
an
Et:
ch

Et:

Et:
É

Ce qui donne si on sélectionne par exemple deux articles:

Microsoft Power BI / Microsoft Excel BI 444/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 445/950


Vincent ISOZ

Exercice 20.: Fonction ALLSELECTED et ISONORAFTER pour les Running Total


Power BI 2017-04

Ceci ne sera pas un exercice mais un exemple puisque depuis Avril 2004, nous n'avons plus
besoin d'écrire de pattern DAX pour un tel calcul. De plus, depuis la création de IsOnOrAfter( )

n
le calcul de running Total c'est considérablement simplifié.

Considérons que nous avons créé la matrice suivante:

llo
ti
On va dans les options de champs de Power BI et on prend l'option new quick measure (sur
lequel on reviendra en détails plus tard dans ce chapitre):
an
ch
É

Microsoft Power BI / Microsoft Excel BI 446/950


Vincent ISOZ

n
llo
ti
an
Une fois ceci fait, on prend:
ch
É

Microsoft Power BI / Microsoft Excel BI 447/950


Vincent ISOZ

n
llo
ti
an
ch

Et on paramètre comme suit:


É

Microsoft Power BI / Microsoft Excel BI 448/950


Vincent ISOZ

n
llo
ti
an
ch

On valide pour obtenir:


É

Microsoft Power BI / Microsoft Excel BI 449/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 450/950


Vincent ISOZ

Exercice 21.: Fonction DISTINCT


Power BI 2018-03

Selon que l'argument soit une table ou une colonne cette fonction retourne une table ou une
colonne avec suppression de doublons dans les lignes de la table ou cellules de la colonne.

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 451/950


Vincent ISOZ

Solution

Compter le nombre de pays concernés par notre base de données clients :

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 452/950


Vincent ISOZ

Exercice 22.: Fonction ALLEXCEPT


Power BI 2018-03

ALLEXCEPT( ) supprime tous les filtres de contexte de la table, à l'exception de ceux qui ont
été appliqués aux colonnes spécifiées. Évidemment, dis comme cela c'est peu clair.

n
Comment alors obtenir la somme des quantités d'un article dans sa totalité mais pour chacun des
secteurs d'activité?

llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 453/950


Vincent ISOZ

Solution

La solution consiste "simplement" à créer une mesure du type suivant:

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 454/950


Vincent ISOZ

Exercice 23.: Fonction HASONEVALUE avec application pour formatage


Power BI 2018-03

La fonction HASONEVALUE( ) renvoie TRUE si sont paramètre est une table qui est faite
d'une seule et unique ligne.

n
Pour illustrer cette fonction nous allons faire plusieurs exemples mais nous allons commencer
par le cas bateau que tout le monde fait et qui n'est pas nécessairement le plus technique et le
plus pertinent…

llo
L'idée est de créer un slicer qui permet à l'utilisateur de choisir s'il veut les données de ventes
(somme nette avec escompte) de ses tableaux visibles sur les pages en:

1. Données réelles

2. Milliers

3. Millions

4. ou autre…
ti
an
Essayez de deviner comment faire cela…
ch
É

Microsoft Power BI / Microsoft Excel BI 455/950


Vincent ISOZ

Solution

D'abord on crée une table en mode manuel soit en utilisant DATATABLE( ) (voir page 374) soit
en utilisant UNION( ) et ROW( ) (voir page 370):

n
llo
ti
an

Ensuite, on prépare sur une feuille la structure suivante (voir page 415):
ch
É

Microsoft Power BI / Microsoft Excel BI 456/950


Vincent ISOZ

n
llo
ti
an
Ensuite, nous créons la mesure suivante:
ch
É

Microsoft Power BI / Microsoft Excel BI 457/950


Vincent ISOZ

n
llo
ti
Il ne reste plus qu'ensuite à faire de nombreux IF avec des FORMAT pour formater le résultat
an
plus esthétiquement….
ch
É

Microsoft Power BI / Microsoft Excel BI 458/950


Vincent ISOZ

Exercice 24.: Fonction HASONEVALUE vs ISFILTERED vs HASONEFILTER


Power BI 2019-10

Considérons la matrice suivante:

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 459/950


Vincent ISOZ

n
llo
ti
an
ch
É

Changer la source maintenant pour faire en sorte que une unique commande appartienne à un
secteur que nous appelerons Agriculture (s'il n'existe pas déjà!) et rafraîchissez la matrice! Vous
devriez alors avoir:

Microsoft Power BI / Microsoft Excel BI 460/950


Vincent ISOZ

n
llo
ti
an
ch
É

Maintenant ajoutons la mesure DAX suivante:

Microsoft Power BI / Microsoft Excel BI 461/950


Vincent ISOZ

n
llo
ti
an
ch

Et ici, nous pouvons avoir une surprise (du moins lorsqu'on y est confronté pour la première
fois…). Pourquoi est-ce que Agriculture n'est vide? Eh bien cela provient de
É

HASONEVALUE( ) lui-même! Comme l'indique son nom, chaque ligne de la matrice aura le
calcul, si et seulement si l'élément ne correspond qu'à un seul élément, ou à un seul élément
enfant!

Comment y remédier?

Microsoft Power BI / Microsoft Excel BI 462/950


Vincent ISOZ

Solution

La solution consiste à utiliser HASONEFILTER( ). Effectivement, crééz la mesure suivante:

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 463/950


Vincent ISOZ

Mais alors qu'en est-il de ISFILTERED( )? Pour le comprender, rajoutez-le dans un premier
temps:

n
llo
ti
an
ch
É

On pourrait donc penser qu'il fait la même chose que HASONEFILTER( ). Eh bien non!
Effectivement pour le voir, ajouter le segement des Articles sur la page du rapport:

Microsoft Power BI / Microsoft Excel BI 464/950


Vincent ISOZ

n
llo
Et cochez quelques articles… :
ti
an
ch
É

Tout est dit…!

Microsoft Power BI / Microsoft Excel BI 465/950


Vincent ISOZ

Exemple 25.: Requête ALLNOBLANKROW


Power BI 2018-03

Le nom de cette requête est un piège. On pourrait penser qu'elle supprime les lignes vierges,
mais il n'est est rien comme nous allons le voir sous la forme d'un exemple plutôt que d'un

n
exercice!

PS: Pour supprimer les lignes vierges il n'y a pas à ce jour de solution élégante à notre
connaissance. Il faut faire un bête filtre de type < > BLANK( ) sur de multiples colonnes…

llo
Considérons notre schéma habituel suivant:

ti
an
ch

En se rappelant que dans la table SourceRemiseClients, nous avons des clients qui n'ont aucune
vente dans la TablePrincipale. Donc si nous faisons:
É

Microsoft Power BI / Microsoft Excel BI 466/950


Vincent ISOZ

n
llo
ti
an
ch

Une ligne vierge apparaît! C'est assez contre-intuitif comme résultat mais cela peut se
comprendre comme un choix de Microsoft lorsqu'il existe une relation entre deux tables ou
certaines données n'ont pas de correspondances!

Comment éliminer la ligne vierge à la fin?


É

Microsoft Power BI / Microsoft Excel BI 467/950


Vincent ISOZ

Solution

Pour éviter l'apparition de cette ligne vide (qui pourrait être éliminée en une deuxième étape avec
un filtre classique), on pourra utiliser donc la fonction ALLNOBLANKROW( ) comme illustré
ci-dessous:

n
llo
ti
an
ch
É

Ce qui facilite donc la tâche par rapport à l'époque où cette fonction n'existait pas et qu'il fallait
utiliser un filtre avec un critère de type < > ISBLANK( ).

Microsoft Power BI / Microsoft Excel BI 468/950


Vincent ISOZ

Exercice 26.: Fonction USERELATIONSHIP


Power BI 2018-03

Considérons le schéma suivant:

n
llo
ti
an
Et créons la matrice (tableau croisé dynamique) suivant sur un Dashboard:
ch
É

Microsoft Power BI / Microsoft Excel BI 469/950


Vincent ISOZ

n
llo
ti
an
ch
É

Nous voyons ici que par défaut, la Quantité Clean se base sur la relation active:

Microsoft Power BI / Microsoft Excel BI 470/950


Vincent ISOZ

n
llo
ti
an
ch
É

Mais qu'en est-il si nous voulons les quantités sur les Date de paiement?

Microsoft Power BI / Microsoft Excel BI 471/950


Vincent ISOZ

Solution

La solution est très importante et consiste à écrire:

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 472/950


Vincent ISOZ

Exercice 27.: Fonction SELECTEDVALUE


Power BI 2018-03

Nous souhaiterions créer un slicer qui permet de choisir le type de statistique que nous voulons
pour une table qui regroupe les quantités par article.

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 473/950


Vincent ISOZ

Solution

D'abord nous créons une table manuelle:

n
llo
ti
an
Et nous préparons ensuite un Dashboard comme ci-dessous:
ch
É

L'idée étant de pouvoir maintenant créer une mesure qui dépend de la valeur sélectionnée dans le
slicer:

Microsoft Power BI / Microsoft Excel BI 474/950


Vincent ISOZ

n
Ce qui donnera bien:

llo
Et respectivement: ti
an

Notez que lorsque la fonction SELECTEDVALUE( ) n'existait pas cela, s'écrivait:


ch
É

Microsoft Power BI / Microsoft Excel BI 475/950


Vincent ISOZ

Exercice 28.: Fonction INTERSECT avec SUM et CALCULATE


Power BI 2019-10

Nous allons vouloir ici faire un calcul d'un type très rare.

n
Nous souhaiterions calculer la somme des ventes par année entre des archives de ventes
importées et la table de calendrier mais cependant sans créer de relation entre les deux tables.

Pour cela, nous supposerons que nous avons importé les archives de ventes suivantes:

llo
ti
an
Avec la table de calendrier suivante:
ch
É

Microsoft Power BI / Microsoft Excel BI 476/950


Vincent ISOZ

n
llo
ti
an

Et nous ferons attention à ne pas lier les deux tables entre elles:
ch
É

Microsoft Power BI / Microsoft Excel BI 477/950


Vincent ISOZ

n
llo
ti
an
Nou souhaiterions faire un analyse temporelle de ventes entre les deux tables sans les lier.
Comment procéder?
ch
É

Microsoft Power BI / Microsoft Excel BI 478/950


Vincent ISOZ

Solution

On crée la mesure suivante et la matrice suivante:

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 479/950


Vincent ISOZ

Exercice 29.: Fonction TREATAS avec SUM et CALCULATE


Power BI 2018-02

A priori la fonction TREATAS permet seulement de propager un filtre via deux tables qui ne
sont pas liées physiquement (dans la pratique il faut à ce jour cependant toujours utiliser les

n
relations physiques!).

Notez que TREATAS( ) fait la même chose que INTERSECT( ) à la différene de l'ordre dans
lesquels s'écrivent les arguments!

llo
Remarque: En réalité on peut créer des relations virtuelles avec TREATAS( ), INTERSECT( ) et
aussi la fonction FILTER( ). Comme l'a montré Marco Russo sur sa page détaillée ici:
https://www.sqlbi.com/articles/propagate-filters-using-treatas-in-dax/ les différences de
performances suivant les choix sont cependant gigantesques!

On pourrait refaire comme exercice, le même que nous avons fait avec la fonction
ti
INTERSECT( ) mais cela n'apporterait aucune plus value!

Faisons quelque chose de plus exotique!

Considérons que nous avons créé le table suivante en DAX (que nous aurions pu tout aussi bien
an
créer avec Power Query!!!):
ch
É

Microsoft Power BI / Microsoft Excel BI 480/950


Vincent ISOZ

n
llo
ti
an
Et le rapport suivant dans Power BI:
ch
É

Microsoft Power BI / Microsoft Excel BI 481/950


Vincent ISOZ

n
llo
ti
Nous souhaiterions avoir une seule matrice et basculer de l'une à l'autre seulement via le slicer!
an
ch
É

Microsoft Power BI / Microsoft Excel BI 482/950


Vincent ISOZ

Solution

On crée la mesure suivante:

n
llo
Et ensuite on change les champs de la matrice comme visible ci-dessous:
ti
an
ch
É

Et on voit effectivement ci-dessus que lorsque les années sont sélectionnées, nous avons bien les
années en colonnes. Et respectivement, si nous sélectionnons les articles, nous avons:

Microsoft Power BI / Microsoft Excel BI 483/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 484/950


Vincent ISOZ

Exercice 30.: Fonction ISINSCOPE


Power BI 2018-02

Je ne connais pas d'application à cette fonction en-dehors des visuels. Pour comprendre de quoi il
s'agit, construisons le graphique suivant:

n
llo
ti
an
Maintenant nous souhaitons mettre différentes lignes d'objectifs suivant le niveau de profondeur
(drill down), que nous faisons dans le graphique.
ch
É

Microsoft Power BI / Microsoft Excel BI 485/950


Vincent ISOZ

Solution

D'abord nous créons la mesure suivante (notez que ISINSCOPE( ) fonctionne avec n'importe
quel type de champ et pas seulement avec une hiérarchie de champs de dates…!):

n
llo
Ensuite, on change de graphique:

ti
an
ch

Et on ajoute notre mesure dans le champ Line Values. Ce qui donne:


É

Microsoft Power BI / Microsoft Excel BI 486/950


Vincent ISOZ

n
llo
ti
Notez ici les problèmes avec les dates à cause du fait que cette mesure utilisant ISINSCOPE( )
n'est pas liée à la table calendrier. Le mieux alors de décomposer dans la table Table_Principales
directement les dates concernées et d'utiliser ces dernières!

Et si on fait un drill-down:
an
ch
É

Microsoft Power BI / Microsoft Excel BI 487/950


Vincent ISOZ

Et encore und drill-down:

n
llo
ti
an
Etc.

On peut imaginer plein d'autres applications comme par exemple affichier des phrases
particulières dans les info-bulles par défaut des graphiques en fonction du niveau de drill-down!
ch
É

Microsoft Power BI / Microsoft Excel BI 488/950


Vincent ISOZ

DAX Catégorie Fonctions Statistiques


Exercice 31.: Fonction SUM
Power BI 2018-03

n
La fonction SUM(), comme avec Microsoft Excel permet de calculer le total d'une colonne par
exemple.

llo
Nous allons déterminer la quantité totale de pièces commandées puis la somme totale par pays.

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 489/950


Vincent ISOZ

Solution

Pour commencer, nous allons créer la variable Quantite_clean qui va contenir les quantités
nettoyées en cliquant sur Modeling/New Column:

n
llo
A ce niveau, on peut tout simplement glisser et déposer la nouvelle colonne pour voir la somme
totale en faisant bien attention de sélectionner l'icône Table (encadré en rouge) :

ti
an
ch
É

Ou bien, on peut créer une mesure. Pour ce faire, on clique sur Modeling/New Mesure et on
saisit la relation suivante :

Microsoft Power BI / Microsoft Excel BI 490/950


Vincent ISOZ

n
llo
On peut ajouter aussi ce calcul en tant que colonne DAX:

ti
an
ch
É

Pour créer une table des quantités commandées par pays, il suffit simplement de glisser et
déposer la colonne pays dans le tableau précédent. Ce qui donne le résultat suivant :

Microsoft Power BI / Microsoft Excel BI 491/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 492/950


Vincent ISOZ

Exercice 32.: Fonction SUMX (+RELATED)


Power BI 2018-03

Considérons le schéma suivant dans Power BI:

n
llo
Et donc la table suivante:
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 493/950


Vincent ISOZ

n
llo
ti
On souhaite y rajouter une colonne qui affiche la somme des Quantités_Clean utilisant SUMX( )
an
et RELATED( ).
ch
É

Microsoft Power BI / Microsoft Excel BI 494/950


Vincent ISOZ

Solution

La solution est donnée:

n
llo
ti
an
ch

On peut complexifier l'exemple en faisant un calcul:


É

Microsoft Power BI / Microsoft Excel BI 495/950


Vincent ISOZ

n
llo
ti
an

Notez que la même technique s'applique pour:

Fonctions AGGREGATEX
ch

SUMX
AVERAGEX
MINX
MAXX
COUNTX
COUNTAX
É

Microsoft Power BI / Microsoft Excel BI 496/950


Vincent ISOZ

Exercice 33.: Fonction SUMX (+FILTER +AND)


Power BI 2018-03

La fonction SUMX( ) prend deux arguments, le premier doit être une table ou une fonction qui
retourne une table (telles que VALUES( ) ou FILTER( )) puis le second argument doit contenir

n
la colonne qui va être agrégé en somme. C'est une fonction itérative comme les autres fonctions
en X (comme suffixe) …

llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 497/950


Vincent ISOZ

Solution

Exemple d'utilisation simple pour réaliser la somme totale des ventes Quantité * prix de toutes
les commandes :

n
llo
On a créé la mesure Somme_des_ventes_brutes qui vaut (glissez et déposez la mesure) :

ti
an
ch
É

Ou un autre cas très simple avec les quantités:

Microsoft Power BI / Microsoft Excel BI 498/950


Vincent ISOZ

n
llo
ti
an
Exemple d'utilisation combinée avec FILTER( ):
ch
É

On peut ensuite glisser et déposer la mesure comme suit :

Microsoft Power BI / Microsoft Excel BI 499/950


Vincent ISOZ

n
llo
ti
an
En rajoutant à cette table la colonne pays, les ventes ou chiffre d'affaires de l'an 2000 par pays :
ch
É

Microsoft Power BI / Microsoft Excel BI 500/950


Vincent ISOZ

n
llo
ti
Nous allons finalement déterminer la part du chiffre d'affaires net (en considérant cette fois les
an
rabais) réellement encaissé en 2000, ce qui implique une double condition de filtrage (sur les
dates de commandes 2000 et factures payées « OUI » en utilisant la fonction AND( ):
ch
É

Microsoft Power BI / Microsoft Excel BI 501/950


Vincent ISOZ

Bien évidemment, nous avons aussi la fonction OR( )!

On peut enfin mettre la mesure avec pays et surtout avec la colonne Facture payée pour constater
qu'effectivement notre filtre à bien fonctionné :

n
llo
ti
an
Notez que la même technique s'applique aux autres fonctions d'agrégation:

Fonctions AGGREGATEX
SUMX
AVERAGEX
ch

MINX
MAXX
COUNTX
COUNTAX
É

Microsoft Power BI / Microsoft Excel BI 502/950


Vincent ISOZ

Exercice 34.: Interlude sur les SUM et SUMX


Power BI 2018-03

Nous savons qu'il est facile en ajoutant un simple champ dans un dashboard Power BI d'obtenir:

n
llo
Mais voyons qu'on peut obtenir la même chose autrement avec une mesure DAX:

ti
an
ch

Ou encore autrement avec une autre mesures DAX:


É

Microsoft Power BI / Microsoft Excel BI 503/950


Vincent ISOZ

Ou encore avec une autre mesure DAX gérant potentiellement les filtres:

n
llo
Ou encore autrement avec un colonne DAX:

ti
an
Remarquons que rien ne nous empêche de faire une colonne qui affiche toujours le grand total:
ch
É

Et on peut faire un ratio:

Microsoft Power BI / Microsoft Excel BI 504/950


Vincent ISOZ

n
Ou faire un mesure DAX qui ne dépend pas d'un segement spécifique:

llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 505/950


Vincent ISOZ

Exercice 35.: Fonction AVERAGE


Power BI 2018-03

Cette fonction tout simplement permet de réaliser la moyenne.

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 506/950


Vincent ISOZ

Premier cas

On peut comme avec SUM( ) vu précédemment, créer une mesure pour la moyenne et la coupler
avec une colonne de catégorielle par exemple le pays d'origine du client.

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 507/950


Vincent ISOZ

Solution

Créer la mesure de la moyenne et la faire glisser dans un objet visuel Table :

n
llo
On peut facilement après coup y ajouter la colonne des pays
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 508/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 509/950


Vincent ISOZ

Deuxième cas

Il s'agit d'un cas classique qui était souvent demandé dans les tableaux croisés dynamiques de
Microsoft Excel (et non pas les Power Pivot) et à ma connaissance, impossible à faire sans de
nombreux bricolages!

L'idée est comment avoir la moyenne par produit en excluant les quantités qui sont à "zéro".

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 510/950


Vincent ISOZ

Solution

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 511/950


Vincent ISOZ

Troisième cas

Considérons le scénario suivant:

n
llo
On voit qu'il y au un problème. La moyenne n'est évidemment pas la moyenne des moyennes.
Nous savons pourqouoi par ailleurs

Comme résoudre ceci?

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 512/950


Vincent ISOZ

Solution

La solution est traité un peu plus bas à la page 517.

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 513/950


Vincent ISOZ

Exercice 36.: Fonction AVERAGEX


Power BI 2018-03

Cette fonction est la version itérative de la fonction AVERAGE( ) et à l'instar de SUMX( ), et


bien d'autres fonctions en « X » elle prend deux arguments : le premier un tableau et le second

n
une expression renvoyant une colonne sur laquelle sera effectuée la moyenne.

Calculer la moyenne des ventes brutes par exemple est impossible à réaliser avec AVERAGE( )
donc il faut utiliser AVERAGEX( ) qui elle est itérative.

llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 514/950


Vincent ISOZ

Solution

n
llo
Puis on glisse et on dépose la mesure dans une table comme ci-dessous :

ti
an
ch
É

Ensuite l'on peut comme avec la fonction SUMX( ), refaire la moyenne des ventes brutes en
2000 et la moyenne des ventes nettes (des réductions à l'occurrence le rabais) réellement
encaissées en combinant AVERAGEX( ) avec FILTER( ).

Notez que la même technique s'applique aux autres fonctions d'agrégation:

Microsoft Power BI / Microsoft Excel BI 515/950


Vincent ISOZ

Fonctions AGGREGATEX
SUMX
AVERAGEX
MINX
MAXX
COUNTX
COUNTAX

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 516/950


Vincent ISOZ

Exercice 37.: Moyenne Résumée, vs Moyenne Globale, vs Moyenne semi-locale


Power BI 2018-03

Si nous considérons le tableau croisé dynamique suivant (un classique de Microsoft Excel
aussi!):

n
llo
ti
an
ch
É

Nous voyons bien qu'il y a un problème au niveau des sous-totaux qui n'est pas forcément
souhaité. L'exercice consiste donc à corriger cela.

Microsoft Power BI / Microsoft Excel BI 517/950


Vincent ISOZ

Solution

Si nous ajoutons la mesure suivante le résultat ne sera toujours pas celui attendu mais c'est une
étape nécessaire (qui pourra être masquée par la suite!):

n
llo
ti
an
ch
É

Une fois ceci fait, nous pouvons ajouter la vraie mesure qui nous intéresse et notez la présence de
la fonction VALUES( ) qui est ici de première importance (!!!!) et de HASONVALUE( ) qui est
aussi importante pour décider le niveau auquel nous faisons le calcul:

Microsoft Power BI / Microsoft Excel BI 518/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 519/950


Vincent ISOZ

Exercice 38.: Fonction MIN


Power BI 2018-03

Comme son nom l'indique, elle permet de déterminer la valeur la plus petite d'une colonne
fournie en argument. Elle peut prendre deux arguments, dans ce cas ces derniers sont des valeurs

n
scalaires et non des colonnes.

llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 520/950


Vincent ISOZ

Solution

Trouver la date de la première commande :

n
llo
ti
an

Cas de deux arguments, par exemple déterminer la valeur minimale entre les ventes brutes
ch

moyennes de 2000 et 2001 :

On calcule d'abord la moyenne des ventes de 2000


É

Et la moyenne des ventes de 2001

Microsoft Power BI / Microsoft Excel BI 521/950


Vincent ISOZ

Le minimum :

n
llo
En affichant les résultats côte à côte on a ceci :

ti
an
ch

En moyenne on a moins vendu en 2001 qu'en 2000.


É

Microsoft Power BI / Microsoft Excel BI 522/950


Vincent ISOZ

Exercice 39.: Fonction MINX


Power BI 2018-03

La version MIN( ) des fonctions en « X », comme les autres, elle prend deux arguments : le
premier un tableau et le second une expression renvoyant une colonne sur laquelle sera

n
déterminée le minimum.

llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 523/950


Vincent ISOZ

Solution

La facture, la moins élevée :

n
Affichage du résultat :

llo
ti
Notez que la même technique s'applique aux autres fonctions d'agrégation:

Fonctions AGGREGATEX
an
SUMX
AVERAGEX
MINX
MAXX
COUNTX
COUNTAX
ch
É

Microsoft Power BI / Microsoft Excel BI 524/950


Vincent ISOZ

Exercice 40.: Fonction MAX


Power BI 2018-03

Comme MIN, cette fonction peut être utilisée sous deux formes. Soit elle détermine la valeur
maximale dans une colonne ou soit elle détermine la valeur maximale entre deux scalaires.

n
Affichez dans une carte quelle est la date de la plus récente des commandes et ensuite par article
la date de fin de mois de la dernière commande.

llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 525/950


Vincent ISOZ

Solutions

Commençons par la date de la plus récente des commandes ?

En affichage ça donne ceci :

n
llo
ti
an
Et maintenant l'affichage par article de la date de fin de mois de la dernière commande:
ch
É

Microsoft Power BI / Microsoft Excel BI 526/950


Vincent ISOZ

Exercice 41.: Fonction MAXX


Power BI 2018-03

Fonction en « X » de MAX. voir plus haut la définition des fonctions en « X » avec SUMX,
AVERAGEX, MINX …

n
Calculez le rabais le plus élévé dans une simple carte et les rabais les plus élévés par pays dans
une table!

llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 527/950


Vincent ISOZ

Solutions

Calculer le rabais le plus élevé jamais accordé :

n
Dont voici le résultat :

llo
ti
an
On peut afficher le résultat par pays comme ceci :
ch
É

Microsoft Power BI / Microsoft Excel BI 528/950


Vincent ISOZ

Exercice 42.: Calcul de l'étendue pour utilisation conjointe de MAX et MIN


Power BI 2018-03

n
Considérons la simple matrice suivante:

llo
ti
La question est comment calculer l'étendue à l'aide des fonctions MAX( ) et MIN( )?
an
ch
É

Microsoft Power BI / Microsoft Excel BI 529/950


Vincent ISOZ

Solution

La réponse est simplement:

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 530/950


Vincent ISOZ

Exercice 43.: Utilisation d'un slicer d'intervalle de date avec MAX et MIN
Power BI 2018-03

Un autres cas très courant de l'utilisation de MAX( ) et MIN( ) est relative au slicer (segment
suivant) de Power BI:

n
llo
ti
an
Souvent pour divers besoins plus ou moins tordus (mais justifié!). Les utilisateurs ont besoin
d'extraire soit uniquement la valeur de début (à gauche) soit la valeur de fin (à droite), ou les
deux en même temps pour faire de l'analyse par fenêtrage temporel.

Comme exerice, écrivez deux mesures qui dans un visuel de type Card, affiche respectivement la
date de début et de fin sélectionnée!
ch
É

Microsoft Power BI / Microsoft Excel BI 531/950


Vincent ISOZ

Solution

Voyon déjà pour la date de fin sélectionnée:

n
llo
ti
an
Et c'est le même système pour la date de début:
ch
É

Ensuite il y a plus qu'à mélanger cela avec les fonctions d'intelligence temporelles que nous
verrons plus loin.

Microsoft Power BI / Microsoft Excel BI 532/950


Vincent ISOZ

Exercice 44.: Fonction COUNT


Power BI 2018-03

Cette fonction renvoie le nombre de lignes (non-vides/non-blank) contenant une valeur


numérique ou chaîne de caractères ou même date. Elle prend donc en argument une colonne.

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 533/950


Vincent ISOZ

Solution

Le nombre de commandes réalisées :

On peut ensuite ajouter la colonne Pays comme ceci pour afficher le nombre de commandes par

n
Pays :

llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 534/950


Vincent ISOZ

Exercice 45.: Fonction COUNT, CALCULATE et USERELATIONSHIP


Power BI 2018-03

Considérons (cas hypeerrrrrrr important et très très demandé dans la pratique!!!!!):

n
llo
ti
an
ch

Nous sommes là dans une situation typiquement problématique encore en 2019 avec Power BI
(qui ne gère pas encore les relations multiples ou les tables fantômes comme Microsoft Access).

Et nous construisons:
É

Microsoft Power BI / Microsoft Excel BI 535/950


Vincent ISOZ

n
llo
ti
an
Nous notons ici un problème… Les deux colonnes donnent le même nombre de ventes alors que
si on contrôle la source, c'est évident que cela ne devrait pas être le cas. L'erreur est pour la
colonne Date de paiement parce que… c'est elle qui est concernée par la relation en traitillé:
ch
É

Microsoft Power BI / Microsoft Excel BI 536/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 537/950


Vincent ISOZ

Solution

La solution consiste à créer la mesure suivante:

Ce qui donne bien:

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 538/950


Vincent ISOZ

Exercice 46.: Fonction COUNTX


Power BI 2018-03

Elle prend en argument d'abord une table ou une expression dont le résultat est une table, puis
ensuite une colonne ou expression sur laquelle, elle opère le comptage.

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 539/950


Vincent ISOZ

Solution

Le nombre de commandes réalisées en 2000:

n
On peut ensuite ajouter la colonne Pays comme ceci pour afficher le nombre de commandes par
Pays mais cette fois en 2000 :

llo
ti
an
Notez que la même technique s'applique aux autres fonctions d'agrégation:

Fonctions AGGREGATEX
SUMX
AVERAGEX
ch

MINX
MAXX
COUNTX
COUNTAX
É

Microsoft Power BI / Microsoft Excel BI 540/950


Vincent ISOZ

Exercice 47.: Fonction COUNTA


Power BI 2018-03

Celle-ci contrairement aux précédentes prend en compte les valeurs textuelles et même
logiques… (et aussi seulement les lignes non-vides/non-blank).

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 541/950


Vincent ISOZ

Solution

Compter le nombre de lignes non vides de la colonne Quantité :

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 542/950


Vincent ISOZ

Exercice 48.: Fonction COUNTAX


Power BI 2018-03

Elle prend en argument d'abord une table ou une expression dont le résultat est une table, puis
ensuite une colonne ou expression sur laquelle, elle opère le comptage avec COUNTA.

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 543/950


Vincent ISOZ

Solution

Compter le nombre de commande provenant du secteur des Assurances :

n
On peut ensuite présenter le résultat par date de commande en faisant bien attention de ne cocher
que l'année comme le montre la figure ci-dessous :

llo
ti
an

Notez que la même technique s'applique aux autres fonctions d'agrégation:


ch

Fonctions AGGREGATEX
SUMX
AVERAGEX
MINX
MAXX
COUNTX
COUNTAX
É

Microsoft Power BI / Microsoft Excel BI 544/950


Vincent ISOZ

Exercice 49.: Fonction COUNTROWS


Power BI 2018-03

Cette fonction permet de compter de lignes contenues dans une table fournie en argument.

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 545/950


Vincent ISOZ

Solution

Simple utilisation : compter le nombre de ligne ou de commande en 2001

n
llo
Utilisation complexe avec CALCULATE et FILTER : Compter le nombre de commandes ou de
lignes pour l'année 2001 et provenant du secteur des Assurances

ti
Quand on affiche la mesure on obtient :
an
ch
É

Microsoft Power BI / Microsoft Excel BI 546/950


Vincent ISOZ

Exercice 50.: Fonction COUNTBLANK


Power BI 2018-12

Le seul but de l'existence de cette fonction est d'éviter aux utilisateurs de DAX de faire un
COUNTROWS( ) avec un filtre sur les valeurs de type BLANK( ).

n
Comme cas pratique, rappelons que nous avons la table suivante:

llo
ti
an
ch

Nous souhaiton compter pour combien de clients nous n'avons pas le numéro de téléphone!
É

Microsoft Power BI / Microsoft Excel BI 547/950


Vincent ISOZ

Solution

La solution consiste simplement à créer la mesure suivante:

n
llo
ti
an
On peut obtenir le même résultat avec:
ch
É

Microsoft Power BI / Microsoft Excel BI 548/950


Vincent ISOZ

Exercice 51.: Fonction DISTINCTCOUNT


Power BI 2018-03

Cette fonction permet de compter le nombre de valeurs distinctes contenues dans une colonne
fournie en argument.

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 549/950


Vincent ISOZ

Solution

Déterminer le nombre de secteurs d'activité d'où proviennent les commandes :

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 550/950


Vincent ISOZ

Exercice 52.: Fonction PERCENTILEX.INC


Power BI 2018-03

Nous avons vu à la page 374 comment créer une table de centiles en DAX:

n
llo
ti
an
ch
É

Ce que nous souhaitons ici c'est de construire les valeurs correspondantes à chaque centile dans
une table DAX typiquement afin de construire les fameux Q-Q plot.

Microsoft Power BI / Microsoft Excel BI 551/950


Vincent ISOZ

Solution

La solution est donnée par:

n
llo
ti
an
ch
É

Évidemment l'approche est la même avec PERCENTILEX.EXC( ). Il va de soi qu'on peut


ensuite ajouter cette table au tableau de bord.

Microsoft Power BI / Microsoft Excel BI 552/950


Vincent ISOZ

Cependant on peut se poser la question comment reperoduire cette table directement en DAX
dans un rapport afin de pouvoir faire du filtrage avec des segments????

Pour cela on construit d'abord la table suivante:

n
llo
ti
an
ch

Et enfin dans un rapport on ajouter cette colonne dans un visuel de type Table avec la fonction
DAX suivante:
É

Microsoft Power BI / Microsoft Excel BI 553/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 554/950


Vincent ISOZ

Exercice 53.: Fonction PERCENTILE.INC


Power BI 2018-03

Nous voulons dans un carte affichier le 10ème centile (inclus) des Quantités vendues!

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 555/950


Vincent ISOZ

Solution

La solution consiste à créer la mesure DAX suivante et la mettre dans une carte comme visible
ci-dessous:

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 556/950


Vincent ISOZ

Exercice 54.: Fonction TOPN simple


Power BI 2018-03

Comme nous l'avons déjà mentionné, cette fonction renvoie une ligne contenant le nom des
colonnes puis des expressions qui génère. Elle prend en argument :

n
- Un entier désignant les n premiers ou derniers éléments

- Une table

llo
- Une colonne selon laquelle la table doit être ordonnée

- Finalement le type d'ordre DESC ou ASC

Nous souhaiterions afficher dans un TCD la somme des trois plus grandes ventes par Quantité
pour un Article donné.
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 557/950


Vincent ISOZ

Solutions

Les solutions sont données par (cas le plus courant car les gens copient/collent souvent d'Internet
sans réfléchir et utilisent un mesure DAX intermédiaire inutile):

n
llo
ti
Ou une manière équivalente ne nécessitant pas de mesure DAX:
an
ch
É

Microsoft Power BI / Microsoft Excel BI 558/950


Vincent ISOZ

Exercice 55.: Fonction TOPN dans calcul


Power BI 2018-03

Comme nous l'avons déjà mentionné, cette fonction renvoie une ligne contenant le nom des
colonnes puis des expressions qui la génère. Elle prend en argument :

n
- Un entier désignant les n premiers ou derniers éléments

- Une table

llo
- Une colonne selon laquelle la table doit être ordonnée

- Finalement le type d'ordre DESC ou ASC

Nous souhaitons calculer la part des trois premières commandes sur le total des commandes en
valeur (Quantité * Prix à l'unité).

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 559/950


Vincent ISOZ

Solution

Pour répondre à l'exercice, nous écrirons:

n
L'affichage peut se faire par Pays dans ce cas, ce serait la part des 3 premiers par Pays :

llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 560/950


Vincent ISOZ

Exercice 56.: Fonction TOPN dans calcul avec paramètre dynamique


Power BI 2018-03

Dans une table nous souhaiterions par article et dans une première colonne afficher la somme
totale des quantités vendue et, dans une deuxième colonne, la part de la somme des n plus

n
grandes quantités vendues via un paramètre.

llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 561/950


Vincent ISOZ

Solution

On crée d'abord un paramère:

n
llo
Avec les paramètres:

ti
an
ch

On a alors automatiquement un segement qui apparaît à l'écran:


É

Microsoft Power BI / Microsoft Excel BI 562/950


Vincent ISOZ

n
llo
Il ne reste plus qu'à écrire la fonction DAX correspondante:

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 563/950


Vincent ISOZ

Exercice 57.: Fonction TOPN en tant que requête


Power BI 2018-03

Comme l'illustre la figure suivante, nous pouvons aussi utiliser TOPN( ) en tant que filtre de
requête d'une table simple ou d'une table groupée en DAX:

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 564/950


Vincent ISOZ

Exercice 58.: Fonction RANKX simple avec ALL( )


Power BI 2018-03

Pour découvrir RANKX( ) considérons la table suivante:

n
llo
ti
an
ch
É

Comment y rajouter une colonne des rangs des clients ?

Microsoft Power BI / Microsoft Excel BI 565/950


Vincent ISOZ

Solution

La solution consiste à créer la mesure suivante (après avoir trié la colonne quantité Somme
Quantité DAX dans l'ordre décroissant!):

n
llo
ti
an
ch
É

Notez la différence entre le paramètre dense et skip:

Microsoft Power BI / Microsoft Excel BI 566/950


Vincent ISOZ

n
On peut ensuite naturellement se demander comme faire un filtre DAX en tant que mesure qui
affichera que les 5 premiers? Eh bien à ma connaissance il n'existe pas de solution si on ne désire
pas passer par une requête DAX basée sur TOPN( ) comme l'illustre la requête suivante, à la

llo
différence qu'il faudrait d'abord faire un groupement:

ti
Mais en tant que mesure cela ne sera pas possible car RANKX( ) n'est pas une mesure
d'agrégation! Il faudra donc dans un premier temps créer la mesure suivante:
an
ch
É

Microsoft Power BI / Microsoft Excel BI 567/950


Vincent ISOZ

n
llo
ti
an
ch

Et ensuite retirer les 2 premières mesures DAX du tableau pour avoir finalement:
É

Microsoft Power BI / Microsoft Excel BI 568/950


Vincent ISOZ

n
llo
Remarque: Souvent (par faut d'avoir une solution simple et élégante même en 2020…),
RANKX( ) est utilisé pour créer un colonne d'Index en DAX (dans l'idée de vouloir éviter Power
Query).

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 569/950


Vincent ISOZ

Exercice 59.: Fonction RANK.EQ


Power BI 2018-03

Pour découvrir RANK.EQ( ) qui est une fonction utilisée (de mon expérience) uniquement dans
les requêtes DAX, considérons la table suivante:

n
llo
ti
an
ch

Nous souhaiterions crée une nouvelle affichant que les numéros de clients groupés avec la
somme des Quantité et leur range dans une table DAX!
É

Microsoft Power BI / Microsoft Excel BI 570/950


Vincent ISOZ

Solution

D'abord nous créons la table suivante:

n
llo
ti
an
ch

Et enfin nous créons la colonne DAX suivante pour arriver à notre résultat:
É

Microsoft Power BI / Microsoft Excel BI 571/950


Vincent ISOZ

n
llo
ti
an
ch

Ce type de colonnes peut typiquement être utilisé comme colonne de tri dans les segments
(slicers!).
É

Microsoft Power BI / Microsoft Excel BI 572/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 573/950


Vincent ISOZ

DAX Catégorie Fonctions de Temps


Exercice 60.: Fonctions TODAY et NOW
Power BI 2018-03

n
Les fonctions TODAY( ) et NOW( ) sont particulièrement utilisées en DAX pour:

• Les filtres que nous verrons plus loin

llo
• La génération de calendriers

• L'affichage d'une date du jour sur un Dashboard (ou d'une date qui correspond à la
dernière mise à jour)

Nous allons nous concentrer ici sur ce dernier aspect. Essayez à partir de ce que vous avez vu à
la page 374 sur DATATABLE( ) de créer une table contenant seulement la date du jour et faites
de même mais avec ROW( ). ti
PS: Notez que ces fonctions ne s'actualisent que si et seulement si on clique sur le bout Refresh
de Power BI!
an
ch
É

Microsoft Power BI / Microsoft Excel BI 574/950


Vincent ISOZ

Solutions

Voyons le premier cas:

n
Et le deuxième:

llo
Et le troisième:
ti
an
Ou encore avec UTCNOW( ):
ch
É

Microsoft Power BI / Microsoft Excel BI 575/950


Vincent ISOZ

Exercice 61.: Fonction WEEKDAY


Power BI 2018-03

Un exercice illustrant cette commande dans un cas fameux est disponible à la page 359 et aussi à
la page 690.

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 576/950


Vincent ISOZ

Exercice 62.: Fonction YEAR


Power BI 2018-03

Un exercice illustrant cette commande dans un cas fameux est disponible à la page 359 et aussi à
la page 690.

n
Sinon voici un exemple combinant TODAY( ), YEAR( ), CALCULATE( ) et SUM( ):

llo
ti
an
Ou de manière équivalente avec FILTER( ) dont nous détaillerons plus loin à la page 421 les
spécificités:
ch
É

Microsoft Power BI / Microsoft Excel BI 577/950


Vincent ISOZ

Exercice 63.: Fonction MONTH


Power BI 2019-10

Un exemple connu et fameux d'application est déjà donné à la page 359.

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 578/950


Vincent ISOZ

Exercice 64.: Fonction EOMONTH


Power BI 2019-09

Un exemple connu et fameux d'application est déjà donné à la page 359.

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 579/950


Vincent ISOZ

Exercice 65.: Fonction DAY


Power BI 2019-10

Un exemple connu et fameux d'application est déjà donné à la page 359.

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 580/950


Vincent ISOZ

Exercice 66.: Fonction DATE et SUM et CALCULATE


Power BI 2019-09

Considérons les deux tables suivantes, d'abord la table tblXLSprincipale:

n
llo
ti
an
Et la table calendrier tblCalendar suivante
ch
É

Microsoft Power BI / Microsoft Excel BI 581/950


Vincent ISOZ

n
llo
Avec respectivement la relation:
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 582/950


Vincent ISOZ

n
llo
ti
an
Nous souhaiterions une mesure (dans une carte par exemple!) nommée Jour de référence, qui
affiche la somme des quantités pour le jour du 2001-01-01!
ch
É

Microsoft Power BI / Microsoft Excel BI 583/950


Vincent ISOZ

Solution

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 584/950


Vincent ISOZ

Exercice 67.: Fonctions YEARFRAC et INT et TODAY


Power BI 2019-09

Considérons la table suivante des clients:

n
llo
ti
an

Et le besoin suivant (très utile dans de nombreux domaines du marketing, de l'ingénierie, de la


ch

finance et autres…!): Quel est l'âge en années d'un élément par rapport à une date donnée et la
date d'aujourd'hui.
É

Microsoft Power BI / Microsoft Excel BI 585/950


Vincent ISOZ

Solution

La solution correcte consiste à écrire:

Ce qui donnera:

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 586/950


Vincent ISOZ

Exercice 68.: Fonction DATEDIFF


Power BI 2018-03

La fonction DATEDIFF( ) est plus souvent, selon mon expérience (!), utilisée dans les colonnes
DAX et très rarement directement dans des mesures (mais si c'est le cas elle se retrouve dans une

n
requête DAX interne à la mesure!).

Elle est utile en gestion de projets (durée de tâches), finance (calculs d'intérêts entre deux dates),
comptabilité (délais de paiement), logistique (temps de passage), etc.

llo
Considérons que nous souhaitons calculer le nombre de jours entre les deux dates suivantes:

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 587/950


Vincent ISOZ

Solution

La solution est extrêmement simple:

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 588/950


Vincent ISOZ

Exercice 69.: Fonctions PREVIOUSDAY et NEXTDAY


Power BI 2018-03

Pour étudier la fonction PREVIOUSDAY( ) (et par analogie aussi avec NEXTDAY( ) ), on
conseillera fortement au lecteur de travailler avec le fichier Microsoft Excel suivant:

n
llo
Qui contient:

ti
an
ch


É

Le lecteur remarquera que les dates de Date de Commande y sont continues (pour simplifier
l'exemple!)!

Ensuite avec la fonction CALENDARAUTO( ), on demandera au lecteur de créer un table


Calendrier et de la lier comme ci-dessous:

Microsoft Power BI / Microsoft Excel BI 589/950


Vincent ISOZ

n
llo
Nous souhaiterions dans un Dashboard afficher les lignes des dates avec le Prix total avec rabais
ti
mais aussi avec le Prix total avec rabais du jour d'avant mais aussi du jour d'après!
an
ch
É

Microsoft Power BI / Microsoft Excel BI 590/950


Vincent ISOZ

Solution

Nous créons une mesure d'abord avec le jour d'avant utilisant la fonction PREVIOUSDAY( ):

n
llo
ti
an
ch

Ajoutons-y maintenant avec le jour d'après avec NEXTDAY( ):


É

Microsoft Power BI / Microsoft Excel BI 591/950


Vincent ISOZ

n
llo
ti
an
ch

Donc tout est conforme à la logique. Après y'a plus qu'à et y faut qu'on…
É

Microsoft Power BI / Microsoft Excel BI 592/950


Vincent ISOZ

Exercice 70.: Fonctions PREVIOUSMONTH et NEXTMONTH


Power BI 2018-03

Pour étudier la fonction PREVIOUSMONTH ( ) (et par analogie aussi avec NEXTMONTH( )
), on conseillera fortement au lecteur de travailler avec le fichier Microsoft Excel suivant:

n
llo
Qui contient:

ti
an
ch


É

Le lecteur remarquera que les dates de Date de Commande y sont continues (pour simplifier
l'exemple!)!

Ensuite avec la fonction CALENDARAUTO( ), on demandera au lecteur de créer un table


Calendrier et de la lier comme ci-dessous:

Microsoft Power BI / Microsoft Excel BI 593/950


Vincent ISOZ

n
llo
Nous souhaiterions dans un Dashboard afficher les lignes des dates avec le Prix total avec rabais
ti
mais aussi avec le Prix total avec rabais du mois d'avant mais aussi du mois d'après!
an
ch
É

Microsoft Power BI / Microsoft Excel BI 594/950


Vincent ISOZ

Solution

Nous créons une mesure d'abord avec le mois d'avant utilisant la fonction
PREVIOUSMONTH( ):

n
llo
ti
an
ch
É

Ajoutons-y maintenant avec le mois d'après avec NEXTMONTH( ):

Microsoft Power BI / Microsoft Excel BI 595/950


Vincent ISOZ

n
llo
ti
an
ch

Donc tout est conforme à la logique. Après y'a plus qu'à et y faut qu'on…
É

Attention!!! PREVIOUSMONT( ) et NEXTMONTH( ) renvoient TOUS les jours du mois


précédent (respectivement suivant!)

Microsoft Power BI / Microsoft Excel BI 596/950


Vincent ISOZ

Exercice 71.: Fonctions PREVIOUSQUARTER et NEXTQUARTER


Power BI 2018-03

Pour étudier la fonction PREVIOUSQUARTER( ) (et par analogie aussi avec


NEXTQUARTER( ) ), on conseillera fortement au lecteur de travailler avec le fichier Microsoft

n
Excel suivant:

llo
Qui contient:

ti
an
ch


É

Le lecteur remarquera que les dates de Date de Commande y sont continues (pour simplifier
l'exemple!)!

Microsoft Power BI / Microsoft Excel BI 597/950


Vincent ISOZ

Ensuite avec la fonction CALENDARAUTO( ), on demandera au lecteur de créer un table


Calendrier et de la lier comme ci-dessous:

n
llo
ti
Nous souhaiterions dans un Dashboard afficher les lignes des dates avec le Prix total avec rabais
mais aussi avec le Prix total avec rabais du trimestre d'avant mais aussi du trimestre d'après!
an
ch
É

Microsoft Power BI / Microsoft Excel BI 598/950


Vincent ISOZ

Solution

Nous créons une mesure d'abord avec l'année d'avant utilisant la fonction
PREVIOUSQUARTER( ):

n
llo
ti
an
ch

Ajoutons-y maintenant le trimestre d'après avec NEXTQUARTER( ):


É

Microsoft Power BI / Microsoft Excel BI 599/950


Vincent ISOZ

n
llo
ti
an
Donc tout est conforme à la logique. Après y'a plus qu'à et y faut qu'on…
ch
É

Microsoft Power BI / Microsoft Excel BI 600/950


Vincent ISOZ

Exercice 72.: Fonctions PREVIOUSYEAR et NEXTYEAR


Power BI 2018-03

Pour étudier la fonction PREVIOUSYEAR( ) (et par analogie aussi avec NEXTYEAR( ) ), on
conseillera fortement au lecteur de travailler avec le fichier Microsoft Excel suivant:

n
llo
Qui contient:

ti
an
ch


É

Le lecteur remarquera que les dates de Date de Commande y sont continues (pour simplifier
l'exemple!)!

Ensuite avec la fonction CALENDARAUTO( ), on demandera au lecteur de créer un table


Calendrier et de la lier comme ci-dessous:

Microsoft Power BI / Microsoft Excel BI 601/950


Vincent ISOZ

n
llo
Nous souhaiterions dans un Dashboard afficher les lignes des dates avec le Prix total avec rabais
ti
mais aussi avec le Prix total avec rabais de l'année d'avant mais aussi de l'année d'après!
an
ch
É

Microsoft Power BI / Microsoft Excel BI 602/950


Vincent ISOZ

Solution

Nous créons une mesure d'abord avec l'année d'avant utilisant la fonction PREVIOUSYEAR( ):

n
llo
ti
an

Notez ce que nous avons si nous ajoutons le niveau des mois:


ch
É

Microsoft Power BI / Microsoft Excel BI 603/950


Vincent ISOZ

n
llo
ti
an
ch
É

Ajoutons-y maintenant l'année d'après avec NEXTYEAR( ):

Microsoft Power BI / Microsoft Excel BI 604/950


Vincent ISOZ

n
llo
Si nous ouvrons le niveau hiérarchique inférieur, nous obtenons:

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 605/950


Vincent ISOZ

n
llo
ti
an
ch

Donc tout est conforme à la logique. Après y'a plus qu'à et y faut qu'on…
É

Microsoft Power BI / Microsoft Excel BI 606/950


Vincent ISOZ

Exercice 73.: Fonction SAMEPERIODLASTYEAR


Power BI 2018-03

Pour étudier la fonction SAMPERIODLASTYEAR( ), on conseillera fortement au lecteur de


travailler avec le fichier Microsoft Excel suivant:

n
llo
Qui contient:

ti
an
ch


É

Le lecteur remarquera que les dates de Date de Commande y sont continues (pour simplifier
l'exemple!)!

Ensuite avec la fonction CALENDARAUTO( ), on demandera au lecteur de créer un table


Calendrier et de la lier comme ci-dessous:

Microsoft Power BI / Microsoft Excel BI 607/950


Vincent ISOZ

n
llo
Nous souhaiterions dans un Dashboard afficher les lignes des dates (jusqu'au niveau Mois) avec
ti
le Prix total avec rabais mais aussi avec le Prix total avec rabais de la même période anuelle
qu'avant!
an
ch
É

Microsoft Power BI / Microsoft Excel BI 608/950


Vincent ISOZ

Solution

Nous créons simplement:

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 609/950


Vincent ISOZ

Exercice 74.: Fonction PARALLELPERIOD


Power BI 2018-03

Pour étudier la fonction PARALLELPERIOD( ) on conseillera fortement au lecteur de


travailler avec le fichier Microsoft Excel suivant:

n
llo
Qui contient:

ti
an
ch


É

Le lecteur remarquera que les dates de Date de Commande y sont continues (pour simplifier
l'exemple!)!

Ensuite avec la fonction CALENDARAUTO( ), on demandera au lecteur de créer un table


Calendrier et de la lier comme ci-dessous:

Microsoft Power BI / Microsoft Excel BI 610/950


Vincent ISOZ

n
llo
Nous souhaiterions dans un Dashboard afficher les lignes des dates (jusqu'au niveau Mois) avec
ti
le Prix total avec rabais mais aussi avec le Prix total avec rabais de la même période annuelle
qu'avant et comparer ceci avec la fonction SAMPERIODLASTYEAR( )!
an
ch
É

Microsoft Power BI / Microsoft Excel BI 611/950


Vincent ISOZ

Solution

D'abord nous recréons la fonction SAMEPERIODLASTYEAR( ) dans une matrice:

n
llo
Maintenant, nous ajoutons PARALLELPERIOD( ):

ti
an
Les chiffres semblent aberrants. Mais pour les comprendre, il faut augmenter la granularité de
l'axe temporel. Augmenter cette dernière au niveau du mois ou trimestre ne suffira pas pour
comprendre ce qu'il se passe comme l'illustre bien la capture d'écran ci-dessous:
ch
É

Microsoft Power BI / Microsoft Excel BI 612/950


Vincent ISOZ

n
llo
ti
an
ch
É

Non il va falloir mettre la granularité au niveau de la journée pour comprendre:

Microsoft Power BI / Microsoft Excel BI 613/950


Vincent ISOZ

n
llo
ti
an
ch
É

Et donc là on comprend beaucoup mieux! On voit que la même chose se reproduit pour l'année
2002:

Microsoft Power BI / Microsoft Excel BI 614/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 615/950


Vincent ISOZ

Exercice 75.: Fonction DATEADD


Power BI 2018-03

Faites-en sorte d'avoir la configuration suivante de votre modèle relationnel:

n
llo
ti
an
ch

où la colonne Date de tbl_Calendar est liée à Date de commande.

Ensuite, créez le tableau suivant dans une des pages:


É

Microsoft Power BI / Microsoft Excel BI 616/950


Vincent ISOZ

n
llo
Nous souhaiterions pouvoir avoir dans chaque ligne, la valeur de l'année précédente!
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 617/950


Vincent ISOZ

Solution

Pour ce faire il "suffit"… "simplement"… de créer la mesure suivante:

n
llo
ti
an
où pour rappel, Quantite_clean est basée sur:
ch

Ensuite, nous ajoutons la mesure qui nous intéresse:


É

Microsoft Power BI / Microsoft Excel BI 618/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 619/950


Vincent ISOZ

Exercice 76.: PARALLELPERIOD vs DATEADD vs SAMEPERIODLASTYEAR


Power BI 2018-03

Pour comprendre la différence entre ces trois fonctions on conseillera fortement au lecteur de
travailler avec le fichier Microsoft Excel suivant:

n
llo
Qui contient:

ti
an
ch


É

Le lecteur remarquera que les dates de Date de Commande y sont continues (pour simplifier
l'exemple!)!

Ensuite avec la fonction CALENDARAUTO( ), on demandera au lecteur de créer un table


Calendrier et de la lier comme ci-dessous:

Microsoft Power BI / Microsoft Excel BI 620/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 621/950


Vincent ISOZ

Solution

Bon évidemment la première différence qu'on notera tout de suite avant même de faire un
exemple est que:

Fonction Type
SAMEPERIODLASTYEAR Seulement l'année précédente

n
DATEADD Toute période partielle (jour, mois,
trimestre, année) anté ou postérieure
PARALLELPERIOD Seulement les périodes complètes

llo
(mois, trimestre, année) anté ou
postérieure

Donc la fonction PARALLELPERIOD( ) est similaire à la fonction DATEADD( ), sauf que


PARALLELPERIOD( ) renvoie toujours des périodes complètes au niveau de granularité
donné au lieu des périodes partielles renvoyées par DATEADD( ).

ti
Pour comparer les trois il suffira de créer respectivement les trois mesures suivantes:
an

Ce qui donnera au niveau de l'année dans une matrice:


ch
É

Au niveau deS trimestreS:

Microsoft Power BI / Microsoft Excel BI 622/950


Vincent ISOZ

n
llo
ti
an
Au niveau des mois:
ch
É

Microsoft Power BI / Microsoft Excel BI 623/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 624/950


Vincent ISOZ

Et pour bien comprendre ce qu'il se passe, une analyse au niveau des jours pour 2001 et plus
particulièrement en Février devrait suffire:

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 625/950


Vincent ISOZ

Exercice 77.: Fonctions DATESMTD et DATESYTD


Power BI 2018-03

Pour étudier la fonction DATESMTD( ) (et respectivement DATESYTD( )), on conseillera


fortement au lecteur de travailler avec le fichier Microsoft Excel suivant:

n
llo
Qui contient:

ti
an
ch


É

Le lecteur remarquera que les dates de Date de Commande y sont continues (pour simplifier
l'exemple!)!

Ensuite avec la fonction CALENDARAUTO( ), on demandera au lecteur de créer un table


Calendrier et de la lier comme ci-dessous:

Microsoft Power BI / Microsoft Excel BI 626/950


Vincent ISOZ

n
llo
Nous souhaiterions dans un Dashboard afficher les lignes des dates avec le Prix total avec rabais
ti
mais aussi avec Prix total avec rabais en cumul du jour par mois (MTD) et après de jour par
année (YTD)!
an
ch
É

Microsoft Power BI / Microsoft Excel BI 627/950


Vincent ISOZ

Solution

Nous créons simplement pour le cumul de jour par mois avec DATESMTD( ):

n
llo
ti
an
ch
É

Où la fin de l'année 2000 ressemble à:

Microsoft Power BI / Microsoft Excel BI 628/950


Vincent ISOZ

n
llo
ti
an
ch

Nous créons simplement pour le cumul de jour par année avec DATESYTD( ):
É

Microsoft Power BI / Microsoft Excel BI 629/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 630/950


Vincent ISOZ

Exercice 78.: Fonctions FIRSTDATE et LASTDATE


Power BI 2018-03

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 631/950


Vincent ISOZ

Premier cas

Pour étudier la fonction FIRSTDATE( ) (et respectivement LASTDATE( ), on conseillera


fortement au lecteur de travailler avec le fichier Microsoft Excel suivant:

n
Qui contient:

llo
ti
an

ch

Le lecteur remarquera que les dates de Date de Commande y sont continues (pour simplifier
l'exemple!)!
É

Ensuite avec la fonction CALENDARAUTO( ), on demandera au lecteur de créer un table


Calendrier et de la lier comme ci-dessous:

Microsoft Power BI / Microsoft Excel BI 632/950


Vincent ISOZ

n
llo
Nous souhaiterions dans un Dashboard afficher les lignes des numéros de clients, et pour chaque
ti
client afficher la date de première commande et dans une autre colonne la date de dernière
commande.
an
ch
É

Microsoft Power BI / Microsoft Excel BI 633/950


Vincent ISOZ

Solution

La solution à la première question sera (pour information la fonction MIN( ) donne exactement
le même résultat!!!!):

n
llo
ti
an
ch
É

Et la réponse à la deuxième sera simplement (pour information la fonction MAX( ) donne


exactement le même résultat!!!!):

Microsoft Power BI / Microsoft Excel BI 634/950


Vincent ISOZ

n
llo
ti
an
ch

Si on veut éliminer la ligne sans clients (piège qui se trouve dans le fichier), on mettra:
É

Microsoft Power BI / Microsoft Excel BI 635/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 636/950


Vincent ISOZ

Deuxième cas

Considérons notre table calendrier simplifiée:

n
En utilisant les deux fonctions FIRSTDATE( ) ET LASTDATE( ) faites en sorte que la date de

llo
début et de fin correspondent respectivement à la plus ancienne et la plus récente date d'achat de
la table:

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 637/950


Vincent ISOZ

Solution

La solution consiste à écrire:

n
llo
On trouvera souvent dans la pratique la forme plus complète suivante:

ti
an
Nous verrons plus bas (voir page 813) également un application de LASTDATE( ) pour
calculer le moyenne mobile!
ch
É

Microsoft Power BI / Microsoft Excel BI 638/950


Vincent ISOZ

Exercice 79.: Fonction ENDOFMONTH et CLOSINGBALANCEMONTH


Power BI 2018-03

Pour étudier la fonction ENDOFMONTH( ) (et respectivement


CLOSINGBALANCEMONTH( )), on conseillera fortement au lecteur de travailler avec le

n
fichier Microsoft Excel suivant:

llo
Qui contient:

ti
an
ch


É

Le lecteur remarquera que les dates de Date de Commande y sont continues (pour simplifier
l'exemple!)!

Microsoft Power BI / Microsoft Excel BI 639/950


Vincent ISOZ

Ensuite avec la fonction CALENDARAUTO( ), on demandera au lecteur de créer un table


Calendrier et de la lier comme ci-dessous:

n
llo
ti
Nous souhaiterions dans un Dashboard afficher les lignes des dates par année, mois et jour, et
reporter uniquement le montant du dernier jour des mois à chaque niveau!
an
ch
É

Microsoft Power BI / Microsoft Excel BI 640/950


Vincent ISOZ

Solution

La solution est simplement pour ENDOFMONTH( ) donnée par:

n
llo
ti
an
ch
É

Et pour CLOSINGBALANCEMONTH( ) (qui est simplement une autre variante d'écriture de


ENDOFMONTH( )!!!):

Microsoft Power BI / Microsoft Excel BI 641/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 642/950


Vincent ISOZ

Exercice 80.: Fonction TOTALX to Date sans date fiscale (TOTALMTD,


TOTALQTD, TOTALYTD)
Power BI 2018-03

Les fonctions TOTALXTD( ) où X désigne la périodicité (Mensualité, trimestrialité, annualité)

n
permettent de réaliser des cumuls des valeurs dans une colonne par intervalle de X.

Elles prennent au minimum 2 arguments une opération (somme, moyenne …etc) et une colonne

llo
de date obligatoirement continue.

Par exemple, nous allons réaliser le cumul des quantités vendues en 2000 par mois et par
trimestre en prenant pour base l'année civile comme années fiscale.

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 643/950


Vincent ISOZ

Solution

Le plus souvent en pratique comme pour nos données, la colonne de Date Commande ne
présente pas des dates continues, ce qu'on fait c'est de créer une table, ici DimDate à part qui elle
contient une colonne de date continue :

n
llo
Puis il faut ensuite lier cette colonne Date à celle de la Date Commande comme ceci :

ti
an
ch

Ensuite il faut tout simplement codifier les mesures suivantes


É

Ces deux mesures peuvent avec la colonne Quantite_Clean et Date être placée dans une matrice.
Il faut ensuite s'assurer de ne filtrer que l'année 2000 (c'est plus sympa!) comme le montre
l'image suivante :

Microsoft Power BI / Microsoft Excel BI 644/950


Vincent ISOZ

n
llo
ti
an
Finalement on obtient le résultat suivant :
ch
É

Microsoft Power BI / Microsoft Excel BI 645/950


Vincent ISOZ

Ou sous forme graphique (c'est plus sympa et parlant!):

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 646/950


Vincent ISOZ

Exercice 81.: Fonction TOTALX to Date avec date fiscale (TOTALMTD,


TOTALQTD, TOTALYTD)
Power BI 2018-03

Les fonctions TOTALXTD( ) où X désigne la périodicité (mensualité, trimestrialité, annualité)

n
permettent de réaliser des cumuls des valeurs dans une colonne par intervalle de X comme nous
l'avons déjà.

Elles prennent au minimum 2 arguments une opération (somme, moyenne …etc) et une colonne

llo
de date obligatoirement continue. Mais elles ont aussi deux autres arguments:

1. Filtre

2. Fin années fiscale

Pour voir un exemple, rappelons ce que nous avons fait précédemment:


ti
an
ch
É

Ou vue en trimestres:

Microsoft Power BI / Microsoft Excel BI 647/950


Vincent ISOZ

n
llo
Considérons maintenant que nous voulons que l'année fiscale termine le 30 Juin, comment
ti
changer la formule que nous avions fait?
an
ch
É

Microsoft Power BI / Microsoft Excel BI 648/950


Vincent ISOZ

Solution

La solution réside simplement à changer un petit peut la formule en écrivant:

n
llo
ti
an
Même si ce n'est pas forcément évident au premier coup d'œil, on observe bien que le total year
to date recommence à chaque troisième trimestre!

Ce se voit évidemment encore mieux si on zoom plus!


ch
É

Microsoft Power BI / Microsoft Excel BI 649/950


Vincent ISOZ

Exercice 82.: Fonction DATESBETWEEN


Power BI 2018-03

La fonction DATESBETWEEN( ), permet de sélectionner les lignes de table pour lesquelles les
dates sont comprises entre une date de début et une date de fin. Donc elle prend trois arguments,

n
une colonne de date, une date de début et une date de fin.

L'exemple suivant permet de calculer les ventes brutes s'écoulant sur le premier semestre 2003.

llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 650/950


Vincent ISOZ

Solution

Pour se faire on utilise la fonction SUMX( ) pour réaliser l'opération de produit entre les
quantités et les prix. C'est CALCULATE( ) qui se charge d'appliquer le filtre que représente le
résultat de DATESBETWEEN( ):

n
llo
On peut ensuite afficher le résultat comme ceci :

ti
an
Ceci ce n'est nécessairement l'exemple le plus parlant. Comme nous allons le voir un peu plus
loin avec la fonction DATESINPERIOD( ) dont le concept est similaire (mais avec une
philosophie un tant soit peu différente).
ch
É

Microsoft Power BI / Microsoft Excel BI 651/950


Vincent ISOZ

Exercice 83.: STARTOFX et ENDOFX


Power BI 2018-03

Ce sont des fonctions qui renvoient la date de début dans le cas de STARTOFX( ) et la date de
fin dans le cas de ENDOFX( ) d'une période X donnée. Ainsi, X peut être MONTH, QUARTER

n
et YEAR.

Elles sont particulièrement intéressantes combinées notamment avec DATESBETWEEN,


comme le montre l'exemple ci-dessous.

llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 652/950


Vincent ISOZ

Solution

On veut calculer la part des quantités commandées par mois dans le total de quantités
commandées en 2000.

On entre la mesure suivante utilisant donc STARTOFYEAR( ) et ENDOFYEAR( ) :

n
llo
On s'assure que le filtrage suivant est respecté :

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 653/950


Vincent ISOZ

Exercice 84.: Fonction DATESINPERIOD et ENDOFMONTH


Power BI 2018-03

Le concept de DATESINPERIOD( ) est similaire mais toutefois un peu différent dans sa


philosophie. Pour l'introduire, considérons le schéma suivant:

n
llo
ti
an
ch

Et la construction suivante d'une matrice (tableau croisé dynamique):


É

Microsoft Power BI / Microsoft Excel BI 654/950


Vincent ISOZ

n
llo
ti
an
ch
É

Considérons que nous souhaitons afficher les sommes des Quantités mais cumulées sur une
période de dates (pars mois en l'occurrence) mais avec un décalage de -3 mois.

Microsoft Power BI / Microsoft Excel BI 655/950


Vincent ISOZ

Solution

La solution consiste donc à créer la mesure DAX suivante:

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 656/950


Vincent ISOZ

Notez les problèmes au niveau des sous-totaux… pour corriger cela il faudrait alors écrire en
utilisant HASONEVALUE( ) et BLANK( ):

n
llo
ti
an
ch
É

Évidemment, on peut procéder de même avec STARTOFMONTH( ).

Microsoft Power BI / Microsoft Excel BI 657/950


Vincent ISOZ

Exercice 85.: Fonctions DATESBETWEEN( ) vs DATESINPERIOD( )


Power BI 2019-12

Le but va être ici de déterminer le flou qui existe entre les deux fonctions nommées dans le titre
car outre le fait que leur syntaxe soit différente, il y a une évidente possible confusion.

n
D'abord rappelons la syntaxe des deux fonctions:

• DATESINPERIOD(<dates>,<start_date>,<number_of_intervals>,<interval>)

llo
• DATESBETWEEN(<dates>,<start_date>,<end_date>)

On voit dans un premier temps que la deuxième est plus facile à utiliser que la deuxième,
cependant la première à des paramètres intéressents qui font que l'on peut jouer avec via des
slicers (segments).

Maintenant pour comparer la syntaxe des deux, créez la mesure suivante:


ti
an
ch
É

Créez la mesure équivalente avec DATESBETWEEN( )!

Microsoft Power BI / Microsoft Excel BI 658/950


Vincent ISOZ

Solution

La solution est:

n
llo
ti
an
ch
É

On voit donc que la manière de compter les dates n'est pas similaire entre les deux
fonctions. Il faut donc être très prudent et toujours faire une relecture des résultats pour ne
pas se tromper!

Microsoft Power BI / Microsoft Excel BI 659/950


Vincent ISOZ

Exercice 86.: Fonction PREVIOUSX et NEXTX


Power BI 2018-03

Ces fonctions renvoient la table contenant les lignes précédentes dans le cas de PREVIOUSX( )
et les lignes suivantes dans le cas NEXTX( ) par rapport à la période X. X ici peut être DAY,

n
MONTH, QUATER et YEAR.

Donc l'exemple suivant s'applique typiquement aux fonctions:

llo
• NEXTDAY( )

• NEXTMONTH( )

• NEXTYEAR( )

• PREVIOUSDAY( )


PREVIOUSMONTH( )

PREVIOUSNEXTYEAR ( )
ti
an
L'exemple suivant permet de calculer la variation relative entre les ventes mensuelles au cours de
l'an 2000.
ch
É

Microsoft Power BI / Microsoft Excel BI 660/950


Vincent ISOZ

Solution

La part des ventes mensuelles dans les ventes totales réalisées au cours de l'année utilisant
STARTOFYEAR( ) et ENDOFYEAR( ) :

n
llo
La mesure de la variation relative entre les ventes mensuelles (notez l'utilisation des fonctions
ISBLANK( ), PREVIOUSMONTH( )) :
ti
an
ch

Il faut ensuite s'assurer de réaliser le filtrage suivant pour seulement l'année 2000 :
É

Microsoft Power BI / Microsoft Excel BI 661/950


Vincent ISOZ

n
llo
ti
Finalement la visualisation tabulaire donne ceci :
an
ch
É

Microsoft Power BI / Microsoft Excel BI 662/950


Vincent ISOZ

Exercice 87.: Fonction FIRSTNONBLANK


Power BI 2018-03

Considérons que nous avons importé la table suivante:

n
llo
ti
an
ch

Et que nous avons le schéma suivant:


É

Microsoft Power BI / Microsoft Excel BI 663/950


Vincent ISOZ

n
llo
Nous souhaiterions dans la première table rapatrier la première vente de chaque vendeur.
Comment faire?

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 664/950


Vincent ISOZ

Solution

La solution est de créer une colonne DAX avec:

n
llo
ti
an
ch

Évidemment le principe est exactement le même avec LASTNONBLANK( ).

On peut ensuite utiliser ce type de valeurs pour faire des filtrages dans CALCULATE( ):
É

Microsoft Power BI / Microsoft Excel BI 665/950


Vincent ISOZ

n
llo
Ce qui correspond bien au contenu de la table:

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 666/950


Vincent ISOZ

Exercice 88.: Fonction EARLIER


Power BI 2019-06

Nous souhaiterions en DAX:

n
• Créer une table (requête DAX) avec les colonnes Date de paiement et Quantité Clean
• Créer une seconde table qui groupe la précédente par dates identiques, fait la somme des
quantités et en même temps élimine les lignes vides

llo
• Et enfin… une colonne dans cette dernière table qui fait le cumul temporel

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 667/950


Vincent ISOZ

Solution

La première étape est simple, nous savons qu'il suffit d'utiliser la fonction
SELECTCOLUMNS( ):

n
llo
ti
an
ch
É

Maintenant en faisant le groupement, cela éliminera en même temps la ligne vide (notez que
pour des raisons esthétiques, nous avons trié les dates dans l'ordre croissant):

Microsoft Power BI / Microsoft Excel BI 668/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 669/950


Vincent ISOZ

Maintenant il nous reste le dernier point, qui est de faire la somme cumulée par date avec la
fonction EARLIER( ):

n
llo
ti
an

Attention, la fonction EARLIER( ) nécessite soit une colonne de date soit une colonne avec un
Index.
ch

Remarques:

1. Il est possible aussi d'utiliser des variables en lieu et place et EARLIER( )

2. On peut faire un équivalent de EARLIER( ) avec Power Query en ajoutant un Index dans
une table, en ajoutant une colonne avec INDEX-1 dans cette même table, ensuite en liant
la table avec elle-même1 (et en rapatriant les données désirées).
É

1
Une relation circulaire en d'autres termes…

Microsoft Power BI / Microsoft Excel BI 670/950


Vincent ISOZ

Exercice 89.: Fonction EARLIER pour "SmartIndex"


Power BI 2020-05

Nous souhaiterions en DAX à partir de notre table des ventes avec leur numéro de commande
(assimilable à une clé d'index), calculer les différences lignes par ligne dans la table elle-même

n
(et non dans un table d'un rapport!).

Pour cela nous partirons de notre table TablePrincipale dont nous aurons gardé que les colonne
suivantes:

llo
ti
an
ch
É

et que nous renommerons TablePrincipale avec SmartIndex.

Microsoft Power BI / Microsoft Excel BI 671/950


Vincent ISOZ

Solution (méthode "ancienne" avec EARLIER( ))

La première solution considérée comme ancienne est donnée par:

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 672/950


Vincent ISOZ

Solution (méthode "moderne" sans EARLIER( ))

La deuxième solution considérée comme moderne est donnée par:

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 673/950


Vincent ISOZ

Exercice 90.: Mois précédent filtré


Power BI 2019-06

Nous souhaiterions en DAX:

n
• Afficher une matrice qui par année et par mois afficher les quantités vendues
• Ajouter un slicer avec la possibilité de choisir plusieurs combinaisons Mois-Année
• Ajouter une colonne dans la matrice qui par rapport aux sélections faites dans le slicer,

llo
afficher la valeur du mois précédent visible dans la matrice

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 674/950


Vincent ISOZ

Solution

D'abord on prépare le scénario de base qui ne devrait poser aucune difficulté:

n
llo
ti
an
ch

Ce qu'on veut c'est le résultat suivant:


É

Microsoft Power BI / Microsoft Excel BI 675/950


Vincent ISOZ

n
llo
ti
Pour arriver à ce résultat, nous avons écrit la fonction non-triviale suivante:
an
ch
É

Microsoft Power BI / Microsoft Excel BI 676/950


Vincent ISOZ

DAX Catégorie Fonctions d'Information et Parent/Enfant


Exercice 91.: Fonction LOOKUPVALUE pour relation circulaire
Power BI 2018-03

n
Attention! Il y a des utilisateurs qui utilisent LOOKUPVALUE( ) en lieu et place de
RELATED( ) alors que cette dernière est nettement plus rapide! Cependant il y a des
situations comme le cas des relations circulaires ci-dessous, où l'usage de LOOKUPVALUE( )

llo
reste à ce jour (et à notre connaissance) indispensable!

Nous souhaiterons dans une page Power BI une colonne qui fait les différences ligne à ligne
comme l'illustre par exemple la troisième colonne dans l'exemple ci-dessous (exemple différent
de celui qui j'attends dans cet exercice!):

ti
an

C'est un calcule typique des lag financiers en trading pour calculer les log-return, mais ce n'est de
loin pas la seule application!
ch
É

Microsoft Power BI / Microsoft Excel BI 677/950


Vincent ISOZ

Solution en Power Query

La solution n'est guère simple… Et de mon point de vue impossible à deviner… C'est beaucoup
plus simple de la faire uniquement en pur Power Query…

D'abord il va falloir dupliquer la requête dans Power Query et la synthétiser en ajoutant une
colonne d'index comme visible ci-dessous (je n'ai pas encore trouvé à ce jour une manière
élégante de créer cela en DA!!!):

n
llo
ti
an
Notez que les Secteurs d'Activité (Activity) sont triés dans l'ordre alphabétiques et donc que le
numéro d'index est numéroté dans cet ordre!

En DAX la même chose doit se faire en deux étapes à ma connaissance mais échoue s'il y a des
égaltiés!. D'abord on crée une table résumée (rappelons qu'on ne peut trier à ce jour que
manuellement en DAX Power BI!!!):
ch
É

Microsoft Power BI / Microsoft Excel BI 678/950


Vincent ISOZ

Et ensuite on ajoute une colonne DAX utilisant FILTER( ) et EARLIER( ), où là encore nous
avons trié manuellement juste pour des raisons visuelles même si ce n'est pas nécessaire pour la
suite!:

n
llo
ti
an
Remarquez que comme il y a des valeurs égales, on échouera ici à faire un lag correct!!!

Ensuite, on crée une colonne (oui ici le nom choisi laisse à désirer…) avec la formule suivante:
ch
É

Microsoft Power BI / Microsoft Excel BI 679/950


Vincent ISOZ

n
llo
ti
On devine ici qu'on est arrivé au résultat attendu. Il suffit alors d'ajouter cette "table-requête"
dans le tableau de bord Power BI:
an
ch
É

Microsoft Power BI / Microsoft Excel BI 680/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 681/950


Vincent ISOZ

Exercice 92.: Fonction LOOKUPVALUE pour sélection de scénarios


Power BI 2018-03

Considérons la table manuelle suivante:

n
llo
ti
an
Et le slicer, carte et tableau correspondant:
ch
É

Nous souhaiterions une colonne Prix total avec rabais avec taxe.

Microsoft Power BI / Microsoft Excel BI 682/950


Vincent ISOZ

Solution

La solution utilise donc LOOKUPVALUE( ) mais aussi la non moins fameuse fonction
SELECTEDVALUE( ):

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 683/950


Vincent ISOZ

Exercice 93.: Fonction PATH


Power BI 2018-03

Considérons la table importée et modifiée suivante qui nous est bien connue (nous avons enlevé
la colonne avec les liens internet vers les images):

n
llo
ti
an
ch
É

La question étant: comment pouvons-nous comme en SQL, afficher la hiérarchie complète?

Microsoft Power BI / Microsoft Excel BI 684/950


Vincent ISOZ

Solution

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 685/950


Vincent ISOZ

Exercice 94.: Fonction LOOKUPVALUE et PATHITEM


Power BI 2018-03

Considérons la table DAX précédemment construite:

n
llo
ti
an
ch
É

Pour les besoins de la construction des tableaux croisés dynamiques (matrices) sur les tableaux
de bords, nous souhaitons décomposer la Hiérarchie dans des colonnes spécifiques.

Microsoft Power BI / Microsoft Excel BI 686/950


Vincent ISOZ

Faites-cela pour les 2 premiers niveaux mais en reprenant le nom des clients au lieu du numéro
de hiérarchie!

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 687/950


Vincent ISOZ

Solution

La solution pour le premier niveau sera:

n
llo
ti
an
ch
É

Et pour le deuxième niveau:

Microsoft Power BI / Microsoft Excel BI 688/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 689/950


Vincent ISOZ

DAX Catégorie Fonctions de Texte


Il faut savoir que la majorité des fonctions de textes sont utilisées soit lors de la création de
tables, soit en tant que DAX de colonnes (contexte de lignes). Ne soyez pas surpris de ne le voir
que très rarement dans en tant que mesure!

Exercice 95.: Fonction FORMAT (+WEEKDAY, ADDCOLUMNS et YEAR et DAY( ) )

n
Power BI 2018-03

llo
Nous voulons rajouter dans la table calendrier, de nombreuses informations complémentaires
comme le nom du mois, le nom du jour, le trimestre, etc.

Procédez comme demandé en utilisant les fonctions CALENDAR( ), FORMAT( ) et


WEEKDAY( ) et la fonction de création de table ADDCOLUMNS( ).

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 690/950


Vincent ISOZ

Solution

n
llo
ti
Ou une version alternative que nous vous autorisons à copier/coller:
an
tbl_Calendar =
ADDCOLUMNS (
CALENDAR ( DATE ( 2000, 1, 1 ), DATE ( 2025, 12, 31 ) ),
"DateAsInteger", FORMAT ( [Date], "YYYYMMDD" ),
"Year", YEAR ( [Date] ),
"Monthnumber", FORMAT ( [Date], "MM" ),
"YearMonthnumber", FORMAT ( [Date], "YYYY/MM" ),
ch

"Semester", "S"
& IF ( MONTH ( [Date] ) <= 6, 1, 2 ),
"YearMonthShort", FORMAT ( [Date], "YYYY/mmm" ),
"MonthNameShort", FORMAT ( [Date], "mmm" ),
"MonthNameLong", FORMAT ( [Date], "mmmm" ),
"DayOfWeekNumber", WEEKDAY ( [Date], 2 ),
"DayOfWeek", FORMAT ( [Date], "dddd" ),
"DayOfWeekShort", FORMAT ( [Date], "ddd" ),
É

"Quarter", "Q" & FORMAT ( [Date], "Q" ),


"WeekNumber", "Week" & WEEKNUM ( [Date], 2 ),
"Week", WEEKNUM ( [Date], 2 ),
"ISO 8601 Week", WEEKNUM ( [Date], 21 ),
"YearQuarter", FORMAT ( [Date], "YYYY" ) & "/Q"
& FORMAT ( [Date], "Q" )
)

Microsoft Power BI / Microsoft Excel BI 691/950


Vincent ISOZ

Tables des valeurs par défauts de la fonction FORMAT

Spécification
Description
Format

"General Number" Displays number with no thousand separators.

n
"Currency" Displays number with thousand separators, if appropriate;
displays two digits to the right of the decimal separator.
Output is based on system locale settings.

llo
"Fixed" Displays at least one digit to the left and two digits to the
right of the decimal separator.

"Standard" Displays number with thousand separators, at least one


digit to the left and two digits to the right of the decimal
separator.

"Percent"
ti
Displays number multiplied by 100 with a percent sign (%)
appended immediately to the right; always displays two
digits to the right of the decimal separator.
an
"Scientific" Uses standard scientific notation, providing two significant
digits.

"Yes/No" Displays No if number is 0; otherwise, displays Yes.


ch

"True/False" Displays False if number is 0; otherwise, displays True.

"On/Off" Displays Off if number is 0; otherwise, displays On.

À finir de traduire et inclure les autres formats quand temps disponible…


É

Microsoft Power BI / Microsoft Excel BI 692/950


Vincent ISOZ

Exercice 96.: Fonction VALUE


Power BI 2018-03

Pour un premier exemple concret d'introduction à la fonction VALUE( ) se référer à l'exercice de


la page 408 (conversion d'une colonne de type texte ayant des valeurs vides et nombres entiers).

n
Pour un deuxième exemple concret d'introduction à la fonction VALUE( ) se référer à l'exercice
de la page 410 (ajout d'une colonne semestre à la table calendrier).

llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 693/950


Vincent ISOZ

Exercice 97.: Fonction UNICHAR (+VAR)


Power BI 2018-03

D'abord avant d'énoncer l'objectif qu'on traitera ici, reproduisez l'exercice de la page 677 qui
introduisait la fonction LOOKUPVALUE( ):

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 694/950


Vincent ISOZ

Solution

Une fois la table préparée, ajoutez une nouvelle colonne avec la formule suivante:

n
llo
ti
an
ch

Il suffit ensuite d'ajouter le résultat dans un page Power BI:


É

Microsoft Power BI / Microsoft Excel BI 695/950


Vincent ISOZ

n
llo
ti
Notez que fondamentalement l'utilisation de VAR est ici inutile mais c'est juste pour
l'esthétique et montrer que l'on peut créer des variables en DAX et les réutiliser par la suite
an
dans une formule.
ch
É

Microsoft Power BI / Microsoft Excel BI 696/950


Vincent ISOZ

Exercice 98.: Fonction FIND( ) et UPPER( )


Power BI 2018-03

Considérons à nouveau l'exemple précédent où nous avons une table manuelle de mots-clés
comme ci-dessous tbl_MotsCles:

n
llo
Et la table suivante tbl_Clients:
ti
an
ch

Nous souhaitons dans une colonne de la table tbl_Clients indiquer si au moins un mot clé se
retrouve dans la colonne Commentaires.
É

Microsoft Power BI / Microsoft Excel BI 697/950


Vincent ISOZ

Solution

La solution consiste à écrire la formule suivante non-triviale:

n
llo
Ce qui donne:

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 698/950


Vincent ISOZ

Exercice 99.: Fonction VALUES avec SEARCH( ) et FIRSTNONBLANK( )


Power BI 2018-03

Considérons à nouveau l'exemple précédent où nous avons une table manuelle de mots-clés
comme ci-dessous tbl_MotsCles:

n
llo
Et la table suivante tbl_Clients:
ti
an
ch

Nous souhaitons dans une colonne de la table tbl_Clients indiquer le premier mot-clé trouvé dans
la table des mots-clés relativement à la colonne Commentaires!
É

Remarque: À ce jour DAX ne gère par les Wildcards et la fonction SEARCH( ) est aussi à
ce jour le seul équivalent de la fonction LIKE que l'on connaît bien en SQL…

Microsoft Power BI / Microsoft Excel BI 699/950


Vincent ISOZ

Solution

La solution consiste à écrire la formule suivante non-triviale:

Ce qui donne:

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 700/950


Vincent ISOZ

Exercice 100.: Fonction CONCATENATEX( )


Power BI 2019-07

Considérons la table tbl_Ventes suivante:

n
llo
ti
an
Et la table suivant ContactClients:
ch
É

On veut regrouper dans une colonne de ContactClients toutes les dates (dans l'ordre décroissant)
pour lesquelles un certain client a fait des commandes (donc toutes les dates d'un client donné
doivent se trouver dans une cellule unique!).

Microsoft Power BI / Microsoft Excel BI 701/950


Vincent ISOZ

Solution

La solution consiste en la formule suivante:

n
llo
Ce qui donne:

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 702/950


Vincent ISOZ

DAX Catégorie Finance


Exercice 101.: Fonction XIRR (annuel)
Power BI 2019-10

n
Considérons la table manuelle suivante:

llo
ti
an
Qui dépivotée dans Power Query donne:
ch
É

Calculer le IRR annuel!

Microsoft Power BI / Microsoft Excel BI 703/950


Vincent ISOZ

Solution

n
llo
ti
an
Si on veut transfomer cela en IRR mensuel:
ch
É

Microsoft Power BI / Microsoft Excel BI 704/950


Vincent ISOZ

Ou, sous l'hypothèse que chaque année fait exactement 365 jours (…):

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 705/950


Vincent ISOZ

Exercice 102.: Fonction XNPV


Power BI 2019-10

Considérons la table manuelle suivante:

n
llo
ti
Qui dépivotée dans Power Query donne:
an
ch
É

Calculer le NPV!

Microsoft Power BI / Microsoft Excel BI 706/950


Vincent ISOZ

Solution

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 707/950


Vincent ISOZ

DAX Patterns
Les DAX Patterns sont considérés comme des "très grosses formules DAX" qui sont très très
souvent demandées dans la pratique.

Rappelons qu'il y a un site Internet dédié à de tels patterns des créateurs de SQLBI:

n
llo
ti
an
ch

Et même un livre:
É

Microsoft Power BI / Microsoft Excel BI 708/950


Vincent ISOZ

Exercice 103.: Quick Measures (mesures rapides)


Power BI 2019-01

Nous allons voici ici un exemple des Quick Measures les plus courantes et les moins triviales
(effectivement il n'est pas toujours aisé de devenir comment les utiliser pour avoir un résultat qui

n
a du sens!).

Considérons donc un fichier avec le jeu de données suivant (qui nous est bien connu!):

llo
ti
an
ch

Et qui contient des Date de commande toutes continues!:


É

Microsoft Power BI / Microsoft Excel BI 709/950


Vincent ISOZ

n
llo
Où nous avons rajouté une colonne Note avec la formule DAX suivante:
ti
an
Allons-y pour étudier les cas majeurs des 27 quick measures actulles (Septembre 2019) de la
Quick Measure Gallery:
ch
É

Microsoft Power BI / Microsoft Excel BI 710/950


Vincent ISOZ

n
llo
ti
an
ch

Et:
É

Microsoft Power BI / Microsoft Excel BI 711/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 712/950


Vincent ISOZ

Catégorie Texts

Star rating (notation en étoiles)

Créez le tableau suivant:

n
llo
ti
an
ch

Faites ensuite un clic droit sur Median of Note et choisissez New quick measure:
É

Microsoft Power BI / Microsoft Excel BI 713/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 714/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 715/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 716/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 717/950


Vincent ISOZ

Concatenated list of values (liste concaténée de valeurs)

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 718/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 719/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 720/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 721/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 722/950


Vincent ISOZ

Catégorie Mathematical operations

Multiplication

Considérons la matrice suivante:

n
llo
ti
an

Créons une nouvelle mesure d'abord:


ch

Et ajoutons une quick measure:


É

Microsoft Power BI / Microsoft Excel BI 723/950


Vincent ISOZ

n
llo
De type: ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 724/950


Vincent ISOZ

n
llo
ti
an
ch

Avec:
É

Microsoft Power BI / Microsoft Excel BI 725/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 726/950


Vincent ISOZ

n
llo
ti
an

On obtient alors comme attendu (il faut just renommer la mesure!):


ch
É

Microsoft Power BI / Microsoft Excel BI 727/950


Vincent ISOZ

n
llo
Avec la formule DAX:
ti
an
Correlation (corrélation de Pearson)

On veut savoir par secteur d'activité, la corrélation entre la somme d'argent commandé et la
probabilité a priori d'achat.
ch

Pour cela, on crée d'abord une mesure en faisant un clic droit sur Secteur d'activité:
É

Microsoft Power BI / Microsoft Excel BI 728/950


Vincent ISOZ

n
llo
ti
an
On prend:
ch
É

Microsoft Power BI / Microsoft Excel BI 729/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 730/950


Vincent ISOZ

n
llo
ti
an
ch

On valide par OK et on rajoute la mesure correspondante dans une carte pour obtenir:
É

Microsoft Power BI / Microsoft Excel BI 731/950


Vincent ISOZ

n
llo
ti
La DAX correspondant ayant été créé est donné par:
an
ch
É

Microsoft Power BI / Microsoft Excel BI 732/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 733/950


Vincent ISOZ

Percentage difference (différence en pourcents)

Ici on va créer d'abord une mesure de référence:

Ensuite, on crée un quick measure depuis le tableau principal:

n
llo
ti
an
ch

Et on prend:
É

Microsoft Power BI / Microsoft Excel BI 734/950


Vincent ISOZ

n
llo
ti
an
ch

Ensuite on met:
É

Microsoft Power BI / Microsoft Excel BI 735/950


Vincent ISOZ

n
llo
ti
an
ch

Et on valide par OK et on ajoute le résultat dans une carte:


É

Microsoft Power BI / Microsoft Excel BI 736/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 737/950


Vincent ISOZ

Catégorie Totals

Running Total (total cumulé)

Pour cette quick measure, on va d'abord préparer la matrice suivante:

n
llo
ti
an

On ajoute une quick measure sur Prix total avec rabais:


ch
É

Microsoft Power BI / Microsoft Excel BI 738/950


Vincent ISOZ

n
llo
On prend:
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 739/950


Vincent ISOZ

n
llo
ti
an

Et on prend:
ch
É

Microsoft Power BI / Microsoft Excel BI 740/950


Vincent ISOZ

n
llo
ti
an
ch

Et on valide par OK et une fois la matrice triée dans l'ordre alphabétique des Secteur d'activité,
on obtient:
É

Microsoft Power BI / Microsoft Excel BI 741/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 742/950


Vincent ISOZ

Catégorie Time Intelligence

Rolling Average (moyenne glissante)

On prépare d'abord la matrice suivante:

n
llo
ti
an
ch

Et on ajoute une quick measure:


É

Microsoft Power BI / Microsoft Excel BI 743/950


Vincent ISOZ

n
llo
ti
an
On prend:
ch
É

Microsoft Power BI / Microsoft Excel BI 744/950


Vincent ISOZ

n
llo
ti
an
ch

Et on met pour avoir une MM6 (attention Microsot compte le zéro comme étant une valeur!):
É

Microsoft Power BI / Microsoft Excel BI 745/950


Vincent ISOZ

n
llo
ti
an

On valide:
ch
É

Microsoft Power BI / Microsoft Excel BI 746/950


Vincent ISOZ

n
llo
ti
an
Ce qui donne comme mesure explicite:
ch
É

Year to Date (année à ce jour)

On repart de la même matrice:

Microsoft Power BI / Microsoft Excel BI 747/950


Vincent ISOZ

n
llo
ti
an
Et on ajoute une quick measure:
ch
É

Microsoft Power BI / Microsoft Excel BI 748/950


Vincent ISOZ

n
llo
ti
an
On prend:
ch
É

Microsoft Power BI / Microsoft Excel BI 749/950


Vincent ISOZ

n
llo
ti
an
ch

On prend:
É

Microsoft Power BI / Microsoft Excel BI 750/950


Vincent ISOZ

n
llo
ti
an
ch

On valide par OK, ce qui donne:


É

Microsoft Power BI / Microsoft Excel BI 751/950


Vincent ISOZ

n
llo
ti
an

Avec la mesure DAX explicite suivante:


ch
É

Quarter to Date (trimestre à ce jour)

On repart de la même matrice:

Microsoft Power BI / Microsoft Excel BI 752/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 753/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 754/950


Vincent ISOZ

n
llo
ti
an

En ouvrant les trimestres et mois on obtient:


ch
É

Microsoft Power BI / Microsoft Excel BI 755/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 756/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 757/950


Vincent ISOZ

n
llo
ti
an
ch
É

Etc…

Microsoft Power BI / Microsoft Excel BI 758/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 759/950


Vincent ISOZ

n
llo
ti
an
ch
É

Month to Date (mois à ce jour)

On repart de la même matrice:

Microsoft Power BI / Microsoft Excel BI 760/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 761/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 762/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 763/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 764/950


Vincent ISOZ

n
llo
ti
an
ch
É

Et ainsi de suite…

Microsoft Power BI / Microsoft Excel BI 765/950


Vincent ISOZ

Year over Year change (variation d'année en année)

Nous préparons la matrice suivante:

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 766/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 767/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 768/950


Vincent ISOZ

n
llo
ti
Quarter over Quarter change (variation de trimestre en trimestre)
an
Nous préparons la matrice suivante (avec la date de commande):
ch
É

Microsoft Power BI / Microsoft Excel BI 769/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 770/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 771/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 772/950


Vincent ISOZ

n
llo
ti
an
ch

Ce qui donne:
É

Microsoft Power BI / Microsoft Excel BI 773/950


Vincent ISOZ

n
llo
ti
an
ch

Qu'il vaut mieux changer sous la forme suivante:


É

Microsoft Power BI / Microsoft Excel BI 774/950


Vincent ISOZ

n
llo
ti
an
ch

Month over Month change (variation de mois en mois)

Nous préparons la matrice suivante (avec la date de commande):


É

Microsoft Power BI / Microsoft Excel BI 775/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 776/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 777/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 778/950


Vincent ISOZ

n
llo
ti
an
ch

Qu'il vaut mieux changer sous la forme suivante:


É

Microsoft Power BI / Microsoft Excel BI 779/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 780/950


Vincent ISOZ

Catégorie Aggregate per category

Maximum by category (maximum par catégorie)

On prépare la matrice suivante:

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 781/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 782/950


Vincent ISOZ

n
llo
ti
an
ch

Ce qui donne avec la formule DAX explicite:


É

Microsoft Power BI / Microsoft Excel BI 783/950


Vincent ISOZ

n
llo
ti
Minimum by category (minimum par catégorie)

Il suffit de reproduire quasi identiquement l'exemple précédent pour comprendre…!


an
Weighted average (moyenne pondérée)

On prépare la matrice suivante:


ch
É

Microsoft Power BI / Microsoft Excel BI 784/950


Vincent ISOZ

n
llo
ti
an
On ajoute une quick measure sur le tableau:
ch
É

Microsoft Power BI / Microsoft Excel BI 785/950


Vincent ISOZ

n
llo
ti
an
Et on prend:
ch
É

Microsoft Power BI / Microsoft Excel BI 786/950


Vincent ISOZ

n
llo
ti
an

Avec:
ch
É

Microsoft Power BI / Microsoft Excel BI 787/950


Vincent ISOZ

n
llo
ti
an
ch

Ce qui donnera:
É

Microsoft Power BI / Microsoft Excel BI 788/950


Vincent ISOZ

n
llo
ti
an
Avec la mesure DAX explicite correspondante:
ch
É

Variance by caterogy (variance par catégorie)

On prépare la matrice suivante:

Microsoft Power BI / Microsoft Excel BI 789/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 790/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 791/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 792/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 793/950


Vincent ISOZ

Catégorie Filters

Filtered valued (valeur filtrée)

Voici probablement la Quick Measure la plus simple…

On va voir si on peut recréer avec ce dernier la mesure DAX suivante que nous avions créé plus
haut:

n
llo
Pour cela, nous créons une quick measure sur le tableau:

ti
an
ch

Où nous prenons:
É

Microsoft Power BI / Microsoft Excel BI 794/950


Vincent ISOZ

n
llo
ti
an
ch

Et dans l'écran qui suit nous mettons les champs et paramètres suivants:
É

Microsoft Power BI / Microsoft Excel BI 795/950


Vincent ISOZ

n
llo
ti
an
ch

Nous validons par OK et mettons le tout dans une carte pour obtenir:
É

Microsoft Power BI / Microsoft Excel BI 796/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 797/950


Vincent ISOZ

Difference from filtered value (différence avec valeur filtrée)

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 798/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 799/950


Vincent ISOZ

n
llo
ti
an
ch
É

Et on ajoute le résultat dans une carte:

Microsoft Power BI / Microsoft Excel BI 800/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 801/950


Vincent ISOZ

Percentage difference from filtered value (différence avec valeur filtrée)

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 802/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 803/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 804/950


Vincent ISOZ

n
llo
ti
an
ch

Sales new customers (ventes nouveaux clients)

On prépare d'abord la matrice suivante:


É

Microsoft Power BI / Microsoft Excel BI 805/950


Vincent ISOZ

n
llo
ti
Et on ajoute une quick measure à la table principale:
an
ch
É

On prend:

Microsoft Power BI / Microsoft Excel BI 806/950


Vincent ISOZ

n
llo
ti
an
ch

Avec:
É

Microsoft Power BI / Microsoft Excel BI 807/950


Vincent ISOZ

n
llo
ti
an
ch

On valide par OK pour obtenir:


É

Microsoft Power BI / Microsoft Excel BI 808/950


Vincent ISOZ

n
llo
ti
an
ch

Avec la mesure DAX explicitement donnée par:


É

Microsoft Power BI / Microsoft Excel BI 809/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 810/950


Vincent ISOZ

Exercice 104.: Capabilité 6 Sigma


Excel 2010 / Power BI 2018-03

Le calcul de la capabilité 6 Sigma n'est pas vraiment un pattern. Toutefois c'est un excellent
exemple d'une formule mathématique simple mais qui en DAX peut devenir vite

n
impressionnante.

En plus c'est un excellent exemple d'application de variables VAR (pour simplifier l'écriture de
la formule), CALCULATE( ), IFERROR( ), MAXX( ), MINX( ), RELATED( ), FILTER( ),

llo
STDEVX.P( ) et DIVIDE( ) en une seule formule.

Calculon la capabilité des Prix Totaux avec Rabais incluant les Bonus mais que pour les articles
de type AST avec les factures payées (à l'état Oui):

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 811/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 812/950


Vincent ISOZ

Exercice 105.: Moyenne Mobile


Excel 2010 / Power BI 2018-03

Considérons la feuille de ventes suivante:

n
llo
ti
an
Remarquez que la colonne Date Commande est continue (c'est-à-dire sans trous!).

Nous vous demandons de trouver une solution pour calculer une MM-7 (moyenne mobile sur 7
jours).
ch
É

Microsoft Power BI / Microsoft Excel BI 813/950


Vincent ISOZ

Solution

D'abord nous importons le fichier Excel dans Power BI:

n
llo
ti
an

Mais nous créons aussi une table de calendrier:


ch
É

Microsoft Power BI / Microsoft Excel BI 814/950


Vincent ISOZ

n
llo
ti
an
ch

Une fois ceci fait, nous lions les deux tables sur le champ qui nous intéresse:
É

Microsoft Power BI / Microsoft Excel BI 815/950


Vincent ISOZ

n
llo
ti
Une fois ceci fait on crée le tableau suivant avec une simple mesure de type somme:
an
ch
É

Microsoft Power BI / Microsoft Excel BI 816/950


Vincent ISOZ

Ensuite, on rajoute la mesure finale suivante qui utilise subtilement DATESINPERIOD( ), et


LASTDATE( ):

n
llo
ti
an
ch

Note: Si la table avec les ventes contient des dates continues, il n'est pas nécessaire de passer par
une table des dates!

La fin du tableau ressemble alors à:


É

Microsoft Power BI / Microsoft Excel BI 817/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 818/950


Vincent ISOZ

Exercice 106.: Valeur modale (cas unimodal)


Excel 2010 / Power BI 2018-03

Considérons la table suivante:

n
llo
ti
an
ch

Nous souhaiterions calculer la valeur modale des Quantité par Article!

Étant donné qu'à ce jour et à notre connaissance Power BI n'inclut pas la valeur modale, nous
allons devoir passer par un Pattern.
É

Microsoft Power BI / Microsoft Excel BI 819/950


Vincent ISOZ

Solution

Nous créons une mesure du type suivant qui utilisent subtilement MINX( ), TOPN( ),
ADDCOLUMNS( ), VALUES( ), CALCULATE( ) et COUNT( ):

n
llo
ti
an
Ce qui donnera:
ch
É

Ce qui peut aider à comprendre, c'est de reproduire le sous-ensemble de la formule ci-dessous


qui crée une table:

Microsoft Power BI / Microsoft Excel BI 820/950


Vincent ISOZ

n
llo
ti
an
ch

Et ensuite la seconde partie:


É

Microsoft Power BI / Microsoft Excel BI 821/950


Vincent ISOZ

n
llo
La partie subtile est de prendre à la fin MINX( ) !

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 822/950


Vincent ISOZ

Exercice 107.: Médiane


Excel 2010-2013

Sachant que de Excel 2010 à Excel 2013 nous n'avions ni MEDIAN( ), ni MEDIANX( ) et que
certaines entreprises on encore Excel 2013 en 2019, nous sommes obligés de laisser cet exercice

n
dans ce support.

Considérons toujours la même table:

llo
ti
an
Nous voulons la médiane par Quantité dans une table.
ch
É

Microsoft Power BI / Microsoft Excel BI 823/950


Vincent ISOZ

Solution

La pattern DAX à créer est le suivant et remarquez qu'il utilise avec finesse MINX( ),
FILTER( ), VALUES( ), CALCULATE( ), COUNT( ) et EARLIER( ):

n
llo
ti
an
ch

Ce qui donnera:
É

Microsoft Power BI / Microsoft Excel BI 824/950


Vincent ISOZ

Exercice 108.: Moyenne pondérée


Power BI 2018-03

Considérons la table suivante:

n
llo
ti
Essayez de trouver comment nous calculerons la moyenne pondérée.
an
ch
É

Microsoft Power BI / Microsoft Excel BI 825/950


Vincent ISOZ

Solution

Résoudre ce problème se fera en deux étapes car nous allons devoir utiliser une mesure semi-
locale. D'abord nous créons la mesure suivante:

n
llo
Ensuite nous rajoutons la mesure finale:

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 826/950


Vincent ISOZ

18. Data Optimization


Avant toute chose… Rappelez-vous de ne pas charger inutilement dans le modèle Power BI, des
requêtes ou tables se trouvant dans Power Query mais que vous n'utilisez pas du tout, ou du
moins pas directement (mais indirectement via des transformation intermédiaires!).

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 827/950


Vincent ISOZ

Désactiver le Auto Date/Time


Pour de multiples raisons que l'on va vous expliquer dans la formation, nous vous conseillons à
ce jour de désactiver l'option suivante:

n
llo
ti
an
ch

Qui fait que dans les formules vous pouvez utiliser un champ automatique du genre:
É

TOTALYTD('xls_Ventes[PrixTotalAvecRabais]','xlsVentes'[DateComma
nde].[Date])

Outre les problèmes de performances, on citera (on en a déjà parlé):

• L'impossibilité de personnaliser le calendrier sous-jacent généré automatiquement

Microsoft Power BI / Microsoft Excel BI 828/950


Vincent ISOZ

• Chaque colonne à sa propre table de dates, ce qui rend à ce jour impossible de


synchroniser de multiples visuels basés sur ces dates!

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 829/950


Vincent ISOZ

Performance Analyzer

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 830/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 831/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 832/950


Vincent ISOZ

DAX Studio
On ouvre d'abord le fichier Power BI dont on veut analyser la performance d'une mesure DAX
(dans le cas présente, le fichier se nomme DAX_General.pbix). Ensuite, on ouvre DAX Studio:

n
llo
ti
an
On valide par Connect et on écrit et exécute:
ch
É

Microsoft Power BI / Microsoft Excel BI 833/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 834/950


Vincent ISOZ

n
llo
On peut voir le code SQL corrrespondant utilisé par SSAS:

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 835/950


Vincent ISOZ

Utiliser le Query Folding


Il semblerait préférable de ne pas utiliser de code M ou de script SQL pour importer des données
d’un serveur SQL.

Il est préférable de construire les requêtes de sorte que toutes les actions pouvant bénéficier du
Query Folding (code SQL généré automatiquement par Power Query et envoyé au serveur SQL)

n
soient effectuées en premier puisque lorsqu’une action qui ne peut bénéficier du Query Folding
est rencontré, il n’y a plus de Query Folding possible!!

Pour vérifier que le Query Folding est actif (ou d'un autre point de vue: quand est-ce que celui-ci

llo
n'est plus géré), à chaque fois que vous rajoutez des étapes dans Power Query, vérifiquer que
vous avez accès à l'option View Native Query et que cette dernière vous affiche du SQL:

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 836/950


Vincent ISOZ

Identifier les colonnes gourmandes en mémoire (DAX


Studio)
Le texte ci-dessous est traduit de l'adresse suivante:

https://www.kasperonbi.com/determine-columns-you-dont-need-using-dmvs-in-power-bi/

n
Ouvrez votre fichier *.pbix et passez à la vue DMX (Dynamic Management Views) et qui vient
du monde de Microsoft Analysis Services:

llo
ti
an
ch

Pour comprendre ce qui se passe, j'ai commencé par regarder les tables de stockage. Vous
pouvez double-cliquer sur le nom de la requête dans le volet et il génère une requête:
É

Microsoft Power BI / Microsoft Excel BI 837/950


Vincent ISOZ

n
llo
ti
Ce dont nous avons besoin ici, c'est de regarder le champ de comptage de lignes et de déterminer
an
lequel est le plus grand. Le nombre de lignes nous donnera le nombre unique de lignes pour une
colonne. Les lignes uniques ne se compressent pas bien et sont responsables d’un pourcentage
élevé de l’utilisation de la mémoire par le modèle. La bonne chose est que la langue de requête
utilisée pour DMV est semblable à SQL. Par conséquent, je peux modifier la requête comme
suit: select * from $SYSTEM.DISCOVER_STORAGE_TABLES order by rows_count desc.

L'exécution de cette requête me donne le résultat suivant:


ch
É

Dès que nous repérons le coupable, nous avons une colonne ID dans la table des ventes qui est
responsable de la majorité de l’espace nécessaire. Une fois la colonne retirée, la taille du modèle
est passée de 156 Mo à 13.6 Mo.

Microsoft Power BI / Microsoft Excel BI 838/950


Vincent ISOZ

Data Preview de Power Query


D'abord au niveau de l'optimisation de Power Query, en allant dans File / Options and Settings /
Query Options:

n
llo
ti
décocher l'option Allow data preview to download in the background ci-dessous donne
parfois des performances significativement meilleures:
an
ch
É

Microsoft Power BI / Microsoft Excel BI 839/950


Vincent ISOZ

Dans Microsoft Excel, on retrouvera cette option sous la forme:

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 840/950


Vincent ISOZ

19. Data Viz


D'abord rappelons le résumé suivant de la liste en ligne du marketplace de Microsoft concernant
les visuels:

https://appsource.microsoft.com/en-us/marketplace/apps?product=power-bi-visuals

n
llo
ti
an
ch

Pour ceux qui veulent savoir faire des graphiques avec R dans Power BI, nous les renvoyons au
support de cours disponible ici gratuitement en français:

http://www.sciences.ch/dwnldbl/divers/R.pdf
É

Microsoft Power BI / Microsoft Excel BI 841/950


Vincent ISOZ

Thèmes
D'abord un rappel de quelques liens donnés initialement dans la médiagraphie:

Galleries de thèmes en ligne:

https://community.powerbi.com/t5/Themes-Gallery/bd-p/ThemesGallery

n
Lien pour créer des thèmes:

https://powerbi.tips/tools/report-theme-generator-v3/

llo
Liens pour convertir les images en x64 bits pour les fichiers JSON:

https://www.base64-image.de/

Vous trouvez le thème à l'endroit suivant du fichier Zip de votre fichier *.pbix:

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 842/950


Vincent ISOZ

Rappels importants des pièges dans les fichiers d'exercices


De nombreux pièges peuvent vous mener à mal gérer ou comprendre vos visuels. Pour cela,
rappelez-vous:

• Créer une table des dates

n
Mette votre modèle de données à la troisième forme normale

• Lignes vides

llo
• Cellules fusionnées

• Intitulé de colonnes avec retour à la ligne

• Doublons

• Liste Microsoft Excel pas sous forme de tableau


ti
Colonnes mélangeant textes et nombres

Fichier *.csv et *.xlsx des ventes n'ont pas Education écrit de la même manière
an
Certains fichier *.csv ont des données indésirables en fin ou début

Pour les Maps, le pare-feu Internet de votre entreprise doit autoriser l'accès aux trois liens
suivants:

https://dev.virtualearth.net/REST/V1/Locations

https://platform.bing.com/geo/spatial/v1/public/Geodata
ch

https://www.bing.com/api/maps/mapcontrol
É

Microsoft Power BI / Microsoft Excel BI 843/950


Vincent ISOZ

Data Viz Normal (Desktop) screen


D'abord un rappel d'un lien pour créer des visuels *.pbviz donné initialement dans la
médiagraphie:

https://charticulator.com/

n
et pour créer des cartes vectorielles à partir d'images choisies:

https://synoptic.design/

llo
Boutons
Créer des boutons de navigation

Créer des boutons pour ouvrir des liens

Créer des boutons pour effacer tous les filtres

Q&A ti
La liste de mots clés affichée dans cette section n’est pas exhaustive. La meilleure façon de voir
si Power BI reconnaît un mot clé consiste à essayer de le taper dans la zone de question. Si le
an
mot ou le terme est grisé, Power BI ne le reconnaît pas.

La liste ci-dessous utilise le présent, mais tous les temps sont identifiés dans la plupart des cas.
Par exemple, « is » comprend are, was, were, will be, have, has, had, will have, has got, do,
does, did. « sort » comprend sorted et sorting. Power BI reconnaît aussi la version au singulier
et au pluriel d’un mot et en tient compte.

Catégorie Mots clés


ch

Agrégats total, sum, amount, number, quantity, count, average, most, least,
fewest, largest, smallest, highest, biggest, maximum, max, greatest,
lowest, littlest, minimum, min
Articles a, an, the
Vides et blank, empty, null, prefixed with “non” or “non-“, empty string,
booléens empty text, true, t, false, f
É

Comparaisons vs, versus, compared to, compared with


Conjonctions and, or, each of, with, versus, &, and, but, nor, along with, in
addition to

Microsoft Power BI / Microsoft Excel BI 844/950


Vincent ISOZ

Catégorie Mots clés


Contractions Questions et réponses reconnaît presque toutes les contractions,
faites le test. Voici quelques exemples : didn’t, haven’t, he’d, he’s,
isn’t, it’s, she’ll, they’d, weren’t, who’s, won’t, wouldn’t
Dates Power BI reconnaît la plupart des expressions de date ($$$jour,
$$$semaine, $$$mois, $$$année, $$$trimestre, $$$dix dernières

n
années, etc.) et les dates écrites dans différents formats (voir ci-
dessous). Power BI reconnaît également les mots clés suivants :
MonthName, Days 1-31, decade. Exemples : January 3rd of 1995,
January 3rd 1995, jan 03 1995, 3 Jan 1995, the 3rd of January,

llo
January 1995, 1995 January, 1995-01, 01/1995, names of months
Dates relatives today, right now, current time, yesterday, tomorrow, the current,
next, the coming, last, previous, ago, before now, sooner than, after,
later than, from, at, on, from now, after now, in the future, past, last,
previous, within, in, over, N days ago, N days from now, next, once,
twice.

Égalité (plage)
ti
Exemple : count of orders in the past 6 days.
in, equal to, =, after, is more than, in, between, before
Exemples : Order year is before 2012? Price equals between 10 and
20? Is the age of John greater than 40? Total sales in 200-300?
an
Égalité (valeur) is, equal, equal to, in, of, for, within, is in, is on
Exemples : Quels produits sont verts ? Order date equals 2012. Is
the age of John 40? Total sales that aren't equal to 200? Order date
of 1/1/2016. 10 in price? Green for color? 10 in price?
Noms Si une colonne du jeu de données contient la phrase « name » (par
exemple EmployeeName), Q&R comprend que les valeurs de cette
ch

colonne sont des noms. Vous pouvez donc poser des questions du
type « which employees are named robert » (quels employés
s’appellent Robert ?).
Pronoms he, him, himself, his, she, herself, her, hers, it, itself, its, they, their,
them, themselves, theirs, this, these, that, those
Commandes de sorted, sort by, direction, group, group by, by, show, list, display,
requête give me, name, just, only, arrange, rank, compare, to, with, against,
É

alphabetically, ascending, descending, order


Plage greater, more, larger, above, over, >, less, smaller, fewer, below,
under, <, at least, no less than, >=, at most, no more than, <=, in,
between, in the range of, from, later, earlier, sooner, after, on, at,
later than, after, since, starting with, starting from, ending with

Microsoft Power BI / Microsoft Excel BI 845/950


Vincent ISOZ

Catégorie Mots clés


Heure am, pm, o'clock, noon, midnight, hour, minute, second, hh:mm:ss
Exemples : 10 pm, 10:35 pm, 10:35:15 pm, 10 o'clock, noon,
midnight, hour, minute, second.
N premiers (ordre, classement) : top, bottom, highest, lowest, first, last, next,
earliest, newest, oldest, latest, most recent, next

n
Types tous les types d’éléments visuels natifs de Power BI. Si l’option est
d’éléments présente dans le volet visualisations, vous pouvez l’ajouter à votre
visuels question. La seule exception à cette règle concerne les éléments
visuels personnalisés que vous avez ajoutés manuellement dans le

llo
volet de visualisation.
Exemple : show districts by month and sales total as bar chart
Relatifs when, where, which, who, whom, how many, how much, how many
(relation, times, how often, how frequently, amount, number, quantity, how
qualification) long, what

ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 846/950


Vincent ISOZ

Slicers (segments)
Slicers de dates relatifs

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 847/950


Vincent ISOZ

n
llo
ti
an
Trier un slicer (segment) par ordre chronologique des mois
ch
É

Microsoft Power BI / Microsoft Excel BI 848/950


Vincent ISOZ

Trier un slicer (segment) par ordre spécifique

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 849/950


Vincent ISOZ

Slicer Between de dates, filtré par des dates

Masquer/Réafficher un slicer

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 850/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 851/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 852/950


Vincent ISOZ

Symboles Unicodes
Se référer à la page 694.

Créer des groupes

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 853/950


Vincent ISOZ

Formatage conditionnel des barres en fonction d'une valeur cible

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 854/950


Vincent ISOZ

Titres dynamiques (avril 2019)

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 855/950


Vincent ISOZ

Visuel Word Cloud


Il ne faut pas oublier dans Power Query pour la source des phrases dans Power Query de:

1. Enlever les doublons! (sinon problèmes!)

2. Enlever les lignes vides! (sinon problèmes!)

n
3. Mettre toutes les phrases / mots en minuscules

4. Enlever les retour chariots:

llo
ti
an
Avec:
ch
É

Microsoft Power BI / Microsoft Excel BI 856/950


Vincent ISOZ

Visuel Microsoft Visio

Visuel Synoptic Panel by OKViz


Comment créer et utiliser une carte personnalisée avec Power BI?

n
Autrement dit comment créer vos propres cartes, formes dans Power BI avec Synoptic Panel.

Synoptic Panel est un outil de visualisation qu’on peut intégrer dans Power BI et qui permet de

llo
connecter des zones dans une image personnalisée avec des attributs dans le modèle de données.

Vous pouvez remplir et colorer ces zones dynamiquement et afficher plusieurs informations
dessus.

Les démarches à suivre pour réaliser ce type de carte!

Exemple sera pris sur la carte de France (suivre les mêmes étapes pour les cartes des autres
pays). ti
Comme à l'habitude, on va d'abord charger le visuel correspondant dans le Marketplace:
an
ch
É

Microsoft Power BI / Microsoft Excel BI 857/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 858/950


Vincent ISOZ

Data Viz Mobile (phone) screen


Rappel:

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 859/950


Vincent ISOZ

20. Data Sharing (Power BI Services)

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 860/950


Vincent ISOZ

n
llo
ti
Un résumé des différentes options de partage:
an
ch

Informations:

1. Le rôle Lecteur nécessite une licence Power BI Pro ou pour le contenu, d'avoir été publié
sur Power PI Premium. Ainsi, si l'espace de travail est dans Power BI Premium, les
É

utilisateurs avec le rôle Lecteur qui n'ont pas de version Pro, pourront quand même lire le
contenu.

2. Un double clic sur une tuile d'un dashboard n'active pas, et ne peut activer à ce jour!, le
drill-down mais amène juste l'utilisateur vers la page du rapport correspondant.

Microsoft Power BI / Microsoft Excel BI 861/950


Vincent ISOZ

Custom Branding
Personnaliser l'interface de Power BI Services:

n
llo
ti
an
On va dans:
ch
É

Et ensuite dans:

Microsoft Power BI / Microsoft Excel BI 862/950


Vincent ISOZ

n
llo
ti
À noter que cela est disponible aussi dans la version gratuite!
an
ch
É

Microsoft Power BI / Microsoft Excel BI 863/950


Vincent ISOZ

Dashboard
Les dashboards sont faciles à créer, il faut cependant noter qu'à ce jour (fin 2019):

1. Les drill-down ne fonctionne pas sur les tuiles des dashboards

2. Les tooltip ne fonctionnent pasr sur les tuiles des dashboards

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 864/950


Vincent ISOZ

Workspaces App (espaces de travail)

n
llo
ti
an
Partager un Workspace App
D'abord il faut absolument être dans un Workspace autre que My Workspace! Et être dans
un workspace où on a au moins les droits Admin ou Member!
ch
É

Publier un Workspace App

Microsoft Power BI / Microsoft Excel BI 865/950


Vincent ISOZ

Le bouton se trouve typiquement sur la page d'accueil du Workspace:

n
llo
ti
an
Notez bien avant de cliquer sur Publish App que:
ch
É

Nous avons alors:

Microsoft Power BI / Microsoft Excel BI 866/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 867/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 868/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 869/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 870/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 871/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 872/950


Vincent ISOZ

n
llo
ti
an
Workspaces orphelins
ch
É

Microsoft Power BI / Microsoft Excel BI 873/950


Vincent ISOZ

n
llo
ti
an
ch

Notez qu'on peut restaurer les Workspace orphelins:


É

Microsoft Power BI / Microsoft Excel BI 874/950


Vincent ISOZ

n
llo
ti
an
ch

Mais d'où viennent-ils?

Eh bien du "simple" fait que que l'administrateur du service Power BI, supprime l'administrateur
du Workspace (souvent un simple utilisateur):
É

Microsoft Power BI / Microsoft Excel BI 875/950


Vincent ISOZ

n
llo
ti
Et on a le même type de résultat lorsque l'administrateur du Workspace est supprimé par
l'administrateur du Service via PowerShell.
an
ch
É

Microsoft Power BI / Microsoft Excel BI 876/950


Vincent ISOZ

RLS (Row Level Security)


D'abord parlons d'un cas important. Nous créons des groupes pour les rôles et nous souhaitons
ajouter une personne externe à notre organisation dans un des groupes. Nous aurons alors le
message suivant:

n
llo
ti
an
Il y a deux solutions à ce problème qui n'en est pas un…. La première est officielle. On se
connecte avec notre compte Power BI pro au portail Azure:

https://portal.azure.com/
ch
É

Microsoft Power BI / Microsoft Excel BI 877/950


Vincent ISOZ

n
llo
ti
an
ch

On arrive alors sur:


É

Microsoft Power BI / Microsoft Excel BI 878/950


Vincent ISOZ

n
llo
ti
an
ch

On va dans les menus suivants:


É

Microsoft Power BI / Microsoft Excel BI 879/950


Vincent ISOZ

n
llo
ti
an

Et une fois cliqué sur New guest user, on ajoute l'utilisateur souhaité:
ch
É

Microsoft Power BI / Microsoft Excel BI 880/950


Vincent ISOZ

n
llo
ti
an
La personne invitée recevra alors l'e-mail suivant:
ch
É

Microsoft Power BI / Microsoft Excel BI 881/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 882/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 883/950


Vincent ISOZ

Ensuite, si vous invitiez quelqu'un qui n'a pas la version Pro depuis un compte Pro, ce dernier
aura comme message lorsqu'il ouvrira un rapport auquel vous l'aurez invité:

n
llo
ti
an
ch

Maintenant créons un rôle simple dans Power BI:


É

Microsoft Power BI / Microsoft Excel BI 884/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 885/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 886/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 887/950


Vincent ISOZ

Partage
D'abord un rappel de quelques liens donnés initialement dans la médiagraphie:

https://www.powerbitiles.com/?app=PBIRobots

https://binokula.com/features/

n
Attention, pour le partage en mode anonyme, il faut:

• Ne pas avoir utilisé le RLS

llo
• Ne pas avoir de Live connection

• Ne pas utiliser un organizational pack

• Ne pas utiliser de visuels R

Embed Code
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 888/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 889/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 890/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 891/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 892/950


Vincent ISOZ

Intégration dans Microsoft Word

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 893/950


Vincent ISOZ

n
llo
ti
an
ch
É

On fait un clic droit sur un des visuels:

Microsoft Power BI / Microsoft Excel BI 894/950


Vincent ISOZ

n
llo
Ce qui donnera:
ti
an
ch
É

Intégration dans Microsoft Excel

Microsoft Power BI / Microsoft Excel BI 895/950


Vincent ISOZ

Intégration dans Microsoft PowerPoint

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 896/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 897/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 898/950


Vincent ISOZ

Intégration dans Microsoft Teams

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 899/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 900/950


Vincent ISOZ

n
llo
ti
Intégration dans Microsoft OneNote App
an
ch
É

Microsoft Power BI / Microsoft Excel BI 901/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 902/950


Vincent ISOZ

n
llo
ti
Ouvrir l'App OneNote (et non pas le logiciel OneNote!!!):
an
ch
É

Coller le lien qui se transformera alors immédiatement en:

Microsoft Power BI / Microsoft Excel BI 903/950


Vincent ISOZ

n
llo
ti
Cliquer sur le bouton du milieu (flèche de Refresh), de façon à obtenir:
an
ch
É

Microsoft Power BI / Microsoft Excel BI 904/950


Vincent ISOZ

Import de fichiers Microsoft Excel


Nous verrons ici comment l'utilisation des feuilles de calcul Excel en tant que sources de
données fonctionne avec Power BI Services.

Commençons par une feuille de calcul que nous avons stockée localement sur notre serveur. Le
fichier s'appelle ExcelTransactions.xlsx et est stocké localement. Il contient des lignes de

n
données (qui ont été saisies dans la feuille de calcul et ne sont pas des sources de données
externes):

llo
ti
Dans Power BI Service nous cliquons sur:
an
ch
É

Microsoft Power BI / Microsoft Excel BI 905/950


Vincent ISOZ

n
llo
Prenons l'option:
ti
an
ch

Ce qui nous amène sur:


É

Microsoft Power BI / Microsoft Excel BI 906/950


Vincent ISOZ

Sélectionnons notre fichier ExcelTransactions.xlsx. Nous allons maintenant voir cette page:

n
llo
Sélectionnon Import Excel data into Power BI:
ti
an

À ce stade, le service n'a pas importé les données en raison du message ci-dessus. Pour mettre en
forme un tableau, ouvrons la feuille de calcul et sélectionnez nos données, puis appuyez sur
ch

CTRL + T :
É

Microsoft Power BI / Microsoft Excel BI 907/950


Vincent ISOZ

n
llo
Maintenant, répétons le processus de téléchargement de la feuille de calcul Excel sur
powerbi.com.
ti
Les données sont importées dans PowerBI.com en tant que source de données. Il n'y a aucun
rapport de tableaux de bord créés pour cette source de données pour le moment:
an
ch

Nous pouvons créer un rapport de base pour ces données:


É

Nous pouvons sauvegarder le rapport:

Microsoft Power BI / Microsoft Excel BI 908/950


Vincent ISOZ

n
llo
Ce qui affiche:

ti
an

Ce rapport apparaîtra maintenant sous Reports, et nous pouvons épingler les visuels aux
tableaux de bord:
ch
É

Ajoutons une nouvelle ligne à nos données Excel!

Actualisez Power BI. À ce stade, les données ne sont pas actualisées dans Power BI. La
nouvelle ligne que nous avons ajoutée à Excel n'apparaîtra pas dans Power BI. Si nous
accédons aux paramètres d'actualisation planifiée dans Power BI, nous voyons ce message:

Microsoft Power BI / Microsoft Excel BI 909/950


Vincent ISOZ

Supprimons cette source de données de Power BI et recommençons. Téléchargez à nouveau les

n
données et sélectionnez Upload your Excel file to Power BI:

llo
ti
an
Nous voyons que ce classeur Excel est maintenant dans Power BI en tant que rapport. Aucun jeu
de données n'a été créé:
ch
É

Microsoft Power BI / Microsoft Excel BI 910/950


Vincent ISOZ

n
llo
Nous pouvons également épingler des données aux tableaux de bord:

ti
an
Ce qui ouvre:
ch
É

Ce qui résultera en:

Microsoft Power BI / Microsoft Excel BI 911/950


Vincent ISOZ

n
llo
ti
Remarque: l'actualisation des données n'est pas prise en charge:
an
Les feuilles sont en fait modifiables dans Power BI - nous pouvons voir ici que nous pouvons
taper dans une nouvelle ligne. Cependant, les données ne sont enregistrées ni dans Power BI
ni dans la feuille de calcul Excel d'origine!!!
ch

Utilisons maintenant OneDrive Entreprise. Importons la feuille de calcul que nous avons utilisée
dans le premier exemple:
É

Microsoft Power BI / Microsoft Excel BI 912/950


Vincent ISOZ

n
llo
Dans Power BI, on clique sur Get Data et on sélectionne OneDrive - Business:

ti
an
ch

On se connecte:
É

Connectez-vous d'abord en sélectionnant Import Excel data into Power BI:

Microsoft Power BI / Microsoft Excel BI 913/950


Vincent ISOZ

n
llo
Cela crée un Datset mais pas de rapports ni de tableaux de bord:

ti
an
Créons un rapport simple montrant les clients:
ch
É

Ajoutons maintenant une ligne à la feuille de calcul Excel et vous verrez que cette fois-ci les
données du rapport sont actualisées.

Microsoft Power BI / Microsoft Excel BI 914/950


Vincent ISOZ

Ensuite, connectez-vous aux données de Power BI à l'aide de Upload your Excel file to Power
BI:

n
llo
ti
Cela crée un rapport, et non un ensemble de données:
an

Nous pouvons voir pour ce rapport, l'actualisation des données n'est pas prise en charge.
Cependant, si nous ajoutons une ligne à notre feuille de calcul dans OneDrive, celle-ci est mise à
ch

jour dans Power BI. Il s'agit en fait d'une vue en lecture seule en direct des données de la feuille
de calcul OneDrive.

Voyons un résumé car c'est vraiment un peu le "foutoir":

Location Mode Dataset Report Refresh Comments


É

Local File (format data as table) Import Oui Non Non

Local File (format data as table) Upload Non Oui Non View of spreadsheet

OneDrive for Business Import Oui Non Oui

OneDrive for Business Upload Non Oui Live

Microsoft Power BI / Microsoft Excel BI 915/950


Vincent ISOZ

Liens avec filtres


Attention!!! Les liens avec filtres au jour où nous écrivons ces lignes ne fonctionnent que si
et seulement si:

• Vous travaillez avec un rapport et non un dashboard

n
• Vous ne travaillez pas avec Power BI embedded

• Vous travaillez avec le lien d'origine du rapport et non pas le lien obtenu en passant par
Share on the web

llo
• Ne marche que si les tables et champs n'ont pas d'espaces ni accents!

• Ne marche qu'avec les champs de type Text

• Les champs masqués peuvent quand même être utilisé pour le filtrage

Donc on pourra utiliser:


ti
Qui une fois validé via la touche Enter devient pour la dernière partie:
an
ch
É

Microsoft Power BI / Microsoft Excel BI 916/950


Vincent ISOZ

Alertes
Les alertes ne marchent actuellement qu'avec trois types de visuels: les cartes, les KPI et les
gauges par défaut de Microsoft!!!!!!!!!! Gardez-bien cela en tête!

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 917/950


Vincent ISOZ

Power BI Embedded
Pour la culture générale:

https://docs.microsoft.com/en-us/power-bi/developer/embedded-faq

D'abord le lien majeur:

n
https://microsoft.github.io/PowerBI-JavaScript/demo/v2-demo/index.html

llo
ti
an
et:

https://github.com/microsoft/PowerBI-Developer-Samples
ch
É

Microsoft Power BI / Microsoft Excel BI 918/950


Vincent ISOZ

n
llo
ti
an

On peut télécharger la solution .Net et l'ouvrir dans Visual Studio:


ch
É

Microsoft Power BI / Microsoft Excel BI 919/950


Vincent ISOZ

n
llo
Un exemple fonctionnel: ti
https://fleetdemoapp.azurewebsites.net/
an
ch
É

Microsoft Power BI / Microsoft Excel BI 920/950


Vincent ISOZ

Créer un Tenant
Voir la page…

Obtenir le Client ID (ie Application ID) et Client Secret


On va sur:

n
https://portal.azure.com/

Et on procède aux étapes suivantes:

llo
Via azure cherchez:

ti
an
ch

Vous arrivez alors sur:


É

Microsoft Power BI / Microsoft Excel BI 921/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 922/950


Vincent ISOZ

n
llo
Après on va dans:
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 923/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 924/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 925/950


Vincent ISOZ

Lorsqu'on lance un application embedded avec cet Application ID on aura:

n
llo
ti
an
ch
É

Obtenir l'ID du rapport


Cette étape est facile, il suffit d'ouvrir un rapport dans le navigateur:

Microsoft Power BI / Microsoft Excel BI 926/950


Vincent ISOZ

n
llo
Soit en zoomant un peu: ti
an
Obtenir le Tenant ID
On peut l'obtenir via Azure:
ch
É

Microsoft Power BI / Microsoft Excel BI 927/950


Vincent ISOZ

n
llo
ti
an
ch

Ou via Office 365 en allant d'abord dans l'administration SharePoint:


É

Microsoft Power BI / Microsoft Excel BI 928/950


Vincent ISOZ

n
llo
Et ensuite on peut aussi l'obtenir dans les permissions d'Apps:

ti
an
ch
É

Et il s'agit du numéro après le "@":

Microsoft Power BI / Microsoft Excel BI 929/950


Vincent ISOZ

n
Intégration
C# .Net

llo
Pour se faire une idée de comment utiliser l'API de Power BI embedded, le meilleur projet
fonctionnel à ce jour (Septembre 2019) qu'on peut télécharger et qui fonctionne (!!!), est
disponible à l'adresse suivante:

https://github.com/CriticalPathTraining/PowerBiEmbeddedScratchpad/tree/master/PowerBiEmb
eddedScratchpad

Merci à Ted Pattison (MVP)!


ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 930/950


Vincent ISOZ

Javascript
Il semblerait que le code suivant pris d'un forum Reddit fonctionne (je n'ai pas testé et de toute
façon je n'aime pas la programmation bureautique…):

var getAccessToken = function {

return new Promise(function(resolve, reject) {

n
var url = 'https://login.microsoftonline.com/common/oauth2/token';

var username = // Username of PowerBI "pro" account - stored in config

llo
var password = // Password of PowerBI "pro" account - stored in config
var clientId = // Applicaton ID of app registered via Azure Active
Directory - stored in config

var headers = {
'Content-Type' : 'application/x-www-form-urlencoded'
};

var formData = {
grant_type:'password',
client_id: clientId,
ti
resource:'https://analysis.windows.net/powerbi/api',
scope:'openid',
an
username:username,
password:password
};

request.post({
url:url,
form:formData,
headers:headers
ch

}, function(err, result, body) {


if(err) return reject(err);
var bodyObj = JSON.parse(body);
resolve(bodyObj.access_token);
})
});
}
É

// -------------------------------------------

var getEmbedToken = function(accessToken, groupId, reportId) {

return new Promise(function(resolve, reject) {

Microsoft Power BI / Microsoft Excel BI 931/950


Vincent ISOZ

var url = 'https://api.powerbi.com/v1.0/myorg/groups/' + groupId +


'/reports/' + reportId + '/GenerateToken';

var headers = {
'Content-Type' : 'application/x-www-form-urlencoded',
'Authorization' : 'Bearer ' + accessToken
};

n
var formData = {
"accessLevel": "View"
};

llo
request.post({
url:url,
form:formData,
headers:headers

}, function(err, result, body) {


if(err) return reject(err);
console.log(body)

}
})
})
ti
var bodyObj = JSON.parse(body);
resolve(bodyObj.token);
an
Sinon pour ceux qui utilisent Java (bonne chance…!):

https://github.com/AzureAD/azure-activedirectory-library-for-java
ch
É

Microsoft Power BI / Microsoft Excel BI 932/950


Vincent ISOZ

Administration
Dans le About de Power BI Services on peut extraire la version de Power BI Services:

n
llo
ti
an
ch

Sinon on a au niveau de l'administration:


É

Microsoft Power BI / Microsoft Excel BI 933/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 934/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 935/950


Vincent ISOZ

Monitorer les coûts

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 936/950


Vincent ISOZ

n
llo
On peut obtenir ce numéro ici:

https://ea.azure.com/

Ici:

ti
an
ch

Ensuite on doit mettre la clé de l'API:


É

Microsoft Power BI / Microsoft Excel BI 937/950


Vincent ISOZ

n
llo
Clé qui peut être trouvée ici:

ti
an
ch

On a ensuite accès à de nombreuses tables:


É

Microsoft Power BI / Microsoft Excel BI 938/950


Vincent ISOZ

n
llo
ti
an
Et ensuite y'a plus qu'à…
ch
É

Microsoft Power BI / Microsoft Excel BI 939/950


Vincent ISOZ

21. Report Builder

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 940/950


Vincent ISOZ

Data Munging
Microsoft SQL Server Express

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 941/950


Vincent ISOZ

Microsoft Access
Une fois Report Builder ouvert, pour se connecter par exemple à une base Microsoft Access, on
ira:

n
llo
ti
Ensuite, une fois le choix validé, on aura:
an
ch
É

Microsoft Power BI / Microsoft Excel BI 942/950


Vincent ISOZ

n
llo
ti
an

Et on peut au besoin tester la connexion:


ch
É

Microsoft Power BI / Microsoft Excel BI 943/950


Vincent ISOZ

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 944/950


Vincent ISOZ

22. Intelligence Artificielle et Analyse avancée avec R


et Python
Actuellement environ un quart à un tiers des mes clients utilisent déjà l'intelligence artificielle et
l'analyse avancée avec R et Python dans Power BI pour de multiples raison (décisions
automatiques, analyses de niveau universitaire, accélération du traitement de données en

n
comparaison à DAX, traitements statistiques de textes).

Pour ceux qui veulent en savoir plus sur comment intégrer R avec Power BI, vous pouvez vous
référer à l'échantillon de support de cours gratuit suivant d'un peu plus de 2'000 pages:

llo
https://archive.org/details/Livre_R

ti
an
ch
É

Concernant Python, vous trouverez de nombreuses ressources gratuites sur Internet, mais notre
support de cours est accessible seulement à ceux qui suivent les formations Python!

Microsoft Power BI / Microsoft Excel BI 945/950


Vincent ISOZ

23. FAQ (Frequently Asked Questions)

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 946/950


Vincent ISOZ

24. Assessment (questions de révision)


Voici une liste de questions qui peut être utile pour vérifier ses connaissances de culture générale
dans Power BI lors de la formation (notez que les réponses sont données dans l'ensemble du
livre)!

n
llo
ti
an
ch
É

Microsoft Power BI / Microsoft Excel BI 947/950


Vincent ISOZ

25. Listes des tableaux et figures


Tableau 1 Tableau icônes Power Query ..................................................................................... 149

Tableau 2 Tableau icônes DAX .................................................................................................. 396

Tableau 3Tableau opérateurs DAX ............................................................................................ 403

n
Figure 1Vue d'ensemble de Power Query ..................................................................................... 26

llo
Figure 2 Types des jointures typiques en SQL et Power Query ................................................... 27

Figure 3 Vue d'ensemble de Power Pivot ..................................................................................... 28

Figure 4Vue d'ensemble de Power View ...................................................................................... 29

Figure 5Vue d'ensemble de Power Map ....................................................................................... 30


ti
Figure 6Vue d'ensemble de Power BI........................................................................................... 31

Figure 7Vue d'ensemble de R Shiny ............................................................................................. 33


an
Figure 8 Types de jointures DAX (source: Curbal) .................................................................... 339

Figure 9 Types de jointures DAX (source: Curbal) .................................................................... 344

Figure 10 Requête DAX dans Microsoft Excel avec commentaires .......................................... 395

Figure 11 Requête DAX dans Power BI avec commentaires ..................................................... 395


ch
É

Microsoft Power BI / Microsoft Excel BI 948/950


Vincent ISOZ

26. Index

ADDCOLUMNS( ) ............... 328, 350, 368, 690, 820 FIRSTNONBLANK( ) .......................................... 663
ALL( ).................................... 293, 294, 311, 431, 434 FORMAT( ) ................................................... 361, 690
ALLEXCEPT( )..................................................... 453 FOUND( ) .............................................................. 428
ALLNOBLANKROW ( ) ...................................... 466 GENERATE( ) ...................................................... 332

n
ALLSELECTED( ) ................ 436, 438, 440, 443, 446 GENERATEALL( ) ............................................... 336
AND( ) ........................................... 412, 421, 497, 501 GENERATESERIES( ) ................................. 374, 386
AVERAGE( ) ................................................ 326, 506 GROUPBY( ) ........................................................ 319
AVERAGEX( ) ..................................................... 514 HASONEFILTER( ) .............................................. 459

llo
BLANK( ) .............................................................. 657 HASONEVALUE( ) ...................... 455, 459, 518, 657
CALCULATE ( ) ........................................... 476, 480 IF( ) ................................................................ 408, 410
CALCULATE( ) ............ 419, 535, 581, 811, 820, 824 IFERROR( )........................................................... 811
CALCULATETABLE( ) ............................... 306, 333 IGNORE( ) ............................................................ 321
CALENDAR( ) ...................................................... 359 IN 403, 423
CALENDARAUTO( ) .. 363, 589, 593, 598, 601, 607, INT( ) ..................................................................... 585
610, 620, 626, 632, 640 INTERSECT( ) ...................................................... 476
CLOSINGBLANCEMONTH( ) ............................ 639 INTERSECTION ( ) .............................................. 380
CONCATENATEX( ) ........................................... 701 ISBLANK( ) .......................................................... 661
ti
CONTAINSROW( ) .............................................. 423
COUNT( ) .............................................. 533, 820, 824
COUNTA( ) ........................................................... 541
COUNTAX( ) ........................................................ 543
COUNTBLANK ( ) ............................................... 547
ISFILTERED ( ) .................................................... 459
ISINSCOPE ( ) ...................................................... 485
ISONORAFTER( ) ................................................ 446
ISSUBTOTAL( ) ................................................... 355
LASTDATE( ) ............................................... 631, 817
an
COUNTROWS( ) .......................................... 325, 545 LASTNONBLANK( ) ........................................... 665
COUNTX( ) ........................................................... 539 LEFT( ) .................................................................. 428
CROSSJOIN( ) ...................................................... 382 LOOKUPVALUE( ) .............................. 677, 682, 686
CURRENTGROUP( ) ........................................... 319 MAX( ) .................................................................. 525
DATATABLE( ).................................................... 377 MAXX( ) ....................................................... 527, 811
DATE( ) ......................................................... 361, 581 MEDIAN( ) ........................................................... 823
DATEADD( ) ........................................................ 616 MIN( ).................................................................... 520
DATEDIFF( ) ........................................................ 587 MINX( ) ......................................... 523, 811, 820, 824
DATESBETWEEN( )............................................ 650 MONTH( ) ............................................................. 578
ch

DATESINPERIOD( ) .................................... 654, 817 NATURALINNERJOIN( ) .................................... 339


DATESMTD( ) ...................................................... 626 NATURALLEFTOUTERJOIN( ) ......................... 344
DATESYTD( ) ...................................................... 626 NEXTDAY( ) ................................................ 589, 660
DAY( ) ........................................................... 580, 690 NEXTMONTH( ) .......................................... 593, 660
DISTINCT( ) ......................................... 302, 371, 451 NEXTQUARTER( ) .............................................. 597
DISTINCTCOUNT( )............................................ 549 NEXTYEAR( ) .............................................. 601, 660
DIVIDE( )...................................................... 432, 811 NORM.INV( ) ....................................................... 388
EARLIER( )................................... 667, 671, 679, 824 NORM.S.INV( ) .................................................... 388
ENDOFMONTH( )........................................ 639, 654 NOT ....................................................................... 403
ENDOFYEAR( ) ................................... 652, 653, 661 NOW( ) .................................................................. 574
É

EOMONTH( ) ............................................... 361, 579 OR( ) .............................................................. 410, 502


EVALUATE .......................................................... 284 PARALLELPERIOD( ) ......................................... 610
EXCEPT( ) ............................................................ 443 PATH( ) ................................................................. 684
FILTER( ) ..... 309, 421, 423, 428, 430, 497, 679, 811, PATHITME( ) ....................................................... 686
824 PERCENTILE.INC( ) ............................................ 555
FIND( ) .................................................................. 697 PERCENTILEX.EXC( ) ........................................ 552
FIRSTDATE( ) ...................................................... 631 PERCENTILEX.INC( ) ......................................... 551
FIRSTNONBLANK( ) .......................................... 699 PREVIOUSDAY( ) ....................................... 589, 660

Microsoft Power BI / Microsoft Excel BI 949/950


Vincent ISOZ

PREVIOUSMONTH( ) ......................... 593, 660, 661 SUMMARIZECOLUMNS ( ) ............................... 320


PREVIOUSQUARTER( ) ..................................... 597 SUMMARIZECOLUMNS( ) ................................ 321
PREVIOUSYEAR( ) ..................................... 601, 660 SUMX( ) ........................................................ 493, 497
RAND( ) ................................................................ 388 SWITCH( ) ............................................................ 413
RANDBETWEEN( ) ............................................. 388 TODAY( ) ..................................................... 574, 585
RANK.EQ ( ) ......................................................... 324 TOPN( ) ......................... 322, 557, 559, 561, 564, 820
RANK.EQ( ) .......................................................... 570 TOTALMTD( ) ............................................. 643, 647
RANKX( ) ............................................................. 565 TOTALQTD( ) .............................................. 643, 647
RELATED( ) ................................. 328, 415, 493, 811 TOTALYTD( ) .............................................. 643, 647

n
RELATEDTABLE( ) .................................... 332, 336 TREATAS ( ) ........................................................ 480
REMOVEFILTER( ) ............................................. 434 UNICHAR( ) ......................................................... 694
RIGHT( ) ............................................................... 429 UNION( )............................................... 370, 372, 374
ROLLUP( ) ............................................................ 352 UPPER( ) ............................................................... 697

llo
ROLLUPADDISSUBTOTAL( ) ........................... 357 USERCULTURE( ) ............................................... 406
ROLLUPGROUP( ) .............................................. 353 USERELATIONSHIP( ) ............................... 469, 535
ROUND( ) ............................................................. 326 USERNAME( ) ..................................................... 404
ROW( ) .......................................................... 325, 372 USERPRINCIPALNAME( ) ................................. 405
SAMEPERIODLASTYEAR( ) ............................. 607 UTCNOW( ) .......................................................... 575
SAMPLE( ) ............................................................ 310 VALUE( ) .............................................. 408, 410, 693
SEARCH( ) ............................................................ 699 VALUES( ) ............................ 299, 518, 699, 820, 824
SELECTCOLUMNS( ) ................................. 297, 315 VAR............................................................... 694, 811
SELECTEDVALUE( ) .................................. 473, 683 WEEKDAY( ) ....................................... 361, 576, 690

ti
STARTOFMONTH( ) ........................................... 657
STARTOFYEAR( ) ............................... 652, 653, 661
STDEVX.P( ) ........................................................ 811
SUM( ) ........................... 326, 476, 480, 489, 535, 581
SUMMARIZE( ).................................................... 366
WEEKNUM( )....................................................... 361
XIRR( ) .................................................................. 703
XNPV( )................................................................. 706
YEAR( )................................................. 361, 577, 690
YEARFRAC( ) ...................................................... 585
an
ch
É

Microsoft Power BI / Microsoft Excel BI 950/950