Microsoft Power Bi

  • Uploaded by: Vincent ISOZ
  • 0
  • 0
  • January 2021
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Microsoft Power Bi as PDF for free.

More details

  • Words: 48,100
  • Pages: 950
Loading documents preview...
llo n ti an

É

ch

Un compendium de techniques pour Microsoft Excel BI & Microsoft Power BI V0.11 Révision 98 (2020-05-07) 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).

llo n

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 qu'il apparaît dans le tableau de bord ou à l'écran. Chaque exercice doit être fait dans une feuille Power BI à part!

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 :

ti

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 obligé de d'abord créer des colonnes en DAX qui effectuent le nettoyage avant de pouvoir faire de mesures avec en DAX!!!!!!!!!!!!!

É

ch

an

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

Microsoft Power BI / Microsoft Excel BI

2/950

Vincent ISOZ

1. Table des matières Table des matières................................................................................................................. 3 À propos du rédacteur ........................................................................................................ 12 Avertissement ...................................................................................................................... 14 Votre avis nous intéresse! ................................................................................................... 15 Préambule ............................................................................................................................ 16 Copyright ............................................................................................................................. 17 Médiagraphie (liens) ........................................................................................................... 18 Introduction ......................................................................................................................... 21

llo n

1. 2. 3. 4. 5. 6. 7. 8.

Modélisation de bases de données (schémas en étoile ou flocon) .......................................................... 35

9. 10. 11. 12. 13. 14.

Nouveautés ........................................................................................................................... 36 Licences ................................................................................................................................ 40 Limites.................................................................................................................................. 45 Meilleures Pratiques (best practices) ................................................................................ 46 Moteurs VertiPaq et XVelocity.......................................................................................... 48 Data Munging ...................................................................................................................... 52

ti

Data Input ............................................................................................................................................... 53 Data sources............................................................................................................................................ 54

Tables manuelles ................................................................................................................................................ 54 Tables DAX ....................................................................................................................................................... 56 Microsoft SharePoint ......................................................................................................................................... 61

an

Bibliothèque d'images (Asset Library) ............................................................................................................................ 61 Liste d'images (liste personnalisée avec colonne Image) ................................................................................................ 66

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

ch

OData ............................................................................................................................................................... 101 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

ch

an

ti

llo n

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 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 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 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 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 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

llo n

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 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 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

ti

Solution ......................................................................................................................................................................... 360

Exercice 29.: Commande CALENDARAUTO ................................................................................................ 363 Solution ......................................................................................................................................................................... 364

Exercice 30.: Commande SUMMARIZE ........................................................................................................ 366 Solution ......................................................................................................................................................................... 367

Exercice 31.: Commande ADDCOLUMNS .................................................................................................... 368

an

Solution ......................................................................................................................................................................... 369

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

ch

Exercice 36.: Commande INTERSECTION .................................................................................................... 380 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

llo n

Exercice 9.: Fonction CALCULATE ............................................................................................................................ 419 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 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

ti

Exercice 18.: Fonction ALLSELECTED avec colonnes multiples ............................................................................... 440 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

an

Solution ......................................................................................................................................................................................... 452

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

ch

Exercice 27.: Fonction SELECTEDVALUE ................................................................................................................ 473 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

llo n

Solutions ........................................................................................................................................................................................ 526

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 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

ti

Exercice 48.: Fonction COUNTAX .............................................................................................................................. 543 Solution ......................................................................................................................................................................................... 544

Exercice 49.: Fonction COUNTROWS ........................................................................................................................ 545 Solution ......................................................................................................................................................................................... 546

Exercice 50.: Fonction COUNTBLANK ...................................................................................................................... 547 Solution ......................................................................................................................................................................................... 548

Exercice 51.: Fonction DISTINCTCOUNT .................................................................................................................. 549

an

Solution ......................................................................................................................................................................................... 550

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

ch

Solution ......................................................................................................................................................................................... 562

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

llo n

Solution ......................................................................................................................................................................................... 612

Exercice 75.: Fonction DATEADD .............................................................................................................................. 616 Solution ......................................................................................................................................................................................... 618

Exercice 76.: PARALLELPERIOD vs DATEADD vs SAMEPERIODLASTYEAR .................................................. 620 Solution ......................................................................................................................................................................................... 622

Exercice 77.: Fonctions DATESMTD et DATESYTD................................................................................................ 626 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

ti

Exercice 81.: Fonction TOTALX to Date avec date fiscale (TOTALMTD, TOTALQTD, TOTALYTD) ................... 647 Solution ......................................................................................................................................................................................... 649

Exercice 82.: Fonction DATESBETWEEN .................................................................................................................. 650 Solution ......................................................................................................................................................................................... 651

Exercice 83.: STARTOFX et ENDOFX ....................................................................................................................... 652 Solution ......................................................................................................................................................................................... 653

an

Exercice 84.: Fonction DATESINPERIOD et ENDOFMONTH .................................................................................. 654 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

ch

Exercice 89.: Fonction EARLIER pour "SmartIndex" .................................................................................................. 671 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

llo n

Solution ......................................................................................................................................................................................... 707

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 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

ti

Exercice 108.: Moyenne pondérée ................................................................................................................................ 825 Solution ......................................................................................................................................................................................... 826

18. Data Optimization............................................................................................................. 827

an

Désactiver le Auto Date/Time .............................................................................................................. 828 Performance Analyzer .......................................................................................................................... 830 DAX Studio .......................................................................................................................................... 833 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

ch

Boutons ............................................................................................................................................................ 844 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

llo n

RLS (Row Level Security) ................................................................................................................... 877 Partage .................................................................................................................................................. 888

Embed Code ..................................................................................................................................................... 888 Intégration dans Microsoft Word ..................................................................................................................... 893 Intégration dans Microsoft Excel ..................................................................................................................... 895 Intégration dans Microsoft PowerPoint............................................................................................................ 896 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

ti

Créer un Tenant................................................................................................................................................ 921 Obtenir le Client ID (ie Application ID) et Client Secret ................................................................................. 921 Obtenir l'ID du rapport ..................................................................................................................................... 926 Obtenir le Tenant ID ........................................................................................................................................ 927 Intégration ........................................................................................................................................................ 930 C# .Net .......................................................................................................................................................................... 930 Javascript ...................................................................................................................................................................... 931

an

Administration ...................................................................................................................................... 933 Monitorer les coûts........................................................................................................................................... 936

21. Report Builder................................................................................................................... 940 Data Munging ....................................................................................................................................... 941 Microsoft SQL Server Express ........................................................................................................................ 941 Microsoft Access ............................................................................................................................................. 942

Intelligence Artificielle et Analyse avancée avec R et Python....................................... 945 FAQ (Frequently Asked Questions) ................................................................................ 946 Assessment (questions de révision) .................................................................................. 947 Listes des tableaux et figures ........................................................................................... 948 Index ................................................................................................................................... 949

É

ch

22. 23. 24. 25. 26.

Microsoft Power BI / Microsoft Excel BI

10/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

11/950

Vincent ISOZ

2. À propos du rédacteur

llo n

Nom Prénom: ISOZ Vincent Domicilié à ce jour à Lausanne (Suisse)

Formation: Ingénieur Physicien HES Équivalence Internationale: Bachelor of Science 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



modélisation prévisionnelle/décisionnelle avancée (arbres de décisions, chaînes de Markov)



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

an

ti



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

É

ch

an

ti

llo n

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).

Microsoft Power BI / Microsoft Excel BI

13/950

Vincent ISOZ

3. Avertissement

llo n

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 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.

ti

Je décline toute responsabilité en cas de dommages corporels, matériels ou autres de quelque 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.

an

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 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.

É

ch

Je ne dispose (malheureusement...) d'aucun pouvoir dans le but de faire respecter la conformité 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.

llo n

Vous pouvez m'envoyer un e-mail pour partager ce que vous avez aimé ou détesté dans le 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 évidentes.

É

ch

an

ti

E-mail: [email protected]

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).

llo n

Le seul intérêt de ce support est de compiler au propre les questions qui m'ont été le plus souvent 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 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!!!

É

ch

an

ti

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).

Microsoft Power BI / Microsoft Excel BI

16/950

Vincent ISOZ

6. Copyright

llo n

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).

É

ch

an

ti

Nous vous remercions pour votre compréhension.

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 http://community.powerbi.com/t5/Forums/ct-p/Forums https://www.daxpatterns.com/ https://pragmaticworks.com/training/on-demand-training 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/

llo n

• • • • • • • • • •

Quelques add-ins:

ti

https://www.sqlbi.com/tools/vertipaq-analyzer/ 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 https://binokula.com/features/ https://charticulator.com/ https://synoptic.design/

an

• • • • • • • •

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-8E567BF3C672DF9D/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

• •

llo n

Le lien vers le code source (GitHub) de tous les visuels Power BI afin d'apprendre à en créer des personnalisés: https://github.com/Microsoft/PowerBI-visuals https://microsoft.github.io/PowerBI-visuals/samples/

É

ch

an

ti

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

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

É

ch

an

ti

llo n

Vincent ISOZ

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!

ch

an

ti

llo n

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

É

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

Microsoft Power BI / Microsoft Excel BI

21/950

ti

llo n

Vincent ISOZ

ch

an

Ce qui correspond explicitement dans l'écosystème Power BI à:

Power View

Power Map

Power BI/R

É

Power Pivot/DAX/MDX Power Query/M

Microsoft Power BI / Microsoft Excel BI

22/950

Vincent ISOZ

an

ti

llo n

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

É

ch

Ou avec une autre approche pédagogique:

Microsoft Power BI / Microsoft Excel BI

23/950

Vincent ISOZ

an

ti

llo n

Ou encore:

É

ch

Et les différents rôles qui font consensus dans le domaine de la Data Science:

Microsoft Power BI / Microsoft Excel BI

24/950

Vincent ISOZ

ti

llo n

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

É

ch

an

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

Microsoft Power BI / Microsoft Excel BI

25/950

an

ti

llo n

Vincent ISOZ

É

ch

Figure 1Vue d'ensemble de Power Query

Microsoft Power BI / Microsoft Excel BI

26/950

ti

llo n

Vincent ISOZ

É

ch

an

Figure 2 Types des jointures typiques en SQL et Power Query

Microsoft Power BI / Microsoft Excel BI

27/950

an

ti

llo n

Vincent ISOZ

É

ch

Figure 3 Vue d'ensemble de Power Pivot

Microsoft Power BI / Microsoft Excel BI

28/950

an

ti

llo n

Vincent ISOZ

É

ch

Figure 4Vue d'ensemble de Power View

Microsoft Power BI / Microsoft Excel BI

29/950

ti

llo n

Vincent ISOZ

É

ch

an

Figure 5Vue d'ensemble de Power Map

Microsoft Power BI / Microsoft Excel BI

30/950

an

ti

llo n

Vincent ISOZ

É

ch

Figure 6Vue d'ensemble de Power BI

Microsoft Power BI / Microsoft Excel BI

31/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

32/950

an

ti

llo n

Vincent ISOZ

É

ch

Figure 7Vue d'ensemble de R Shiny

Microsoft Power BI / Microsoft Excel BI

33/950

É

ch

an

ti

llo n

Vincent ISOZ

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.

llo n

Le lecteur pourra le trouver ici:

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

É

ch

an

ti

pages 21 à 47.

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



• •

Création de rapports o Regroupement des visuels o Migration vers le volet de filtre 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 Modifier les variables SAP dans le service Power BI (préversion) o PostgreSQL DirectQuery o Connecteur MarkLogic maintenant en disponibilité générale o Nouvelle catégorie Power Platform dans Obtenir des données 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 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)

ch



an

ti



llo n

Août 2019

É

• • •

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

• •

llo n

ch



ti



Création de rapports o Mise à jour de la conception du volet 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 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 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 Modélisation o Nouvel opérateur de comparaison DAX = = É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 o Connecteur de données Entersoft Préparation des données o Améliorations apportées à M Intellisense

an





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

• •



llo n



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 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) o Connecteur Intune Data Warehouse o Connecteur Tenforce o Connecteur Roamler Autre o Annulation automatique des requêtes pour Power BI Desktop

ch



Création de rapports 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 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 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

an



ti

Avril 2019

• •

É



Microsoft Power BI / Microsoft Excel BI

38/950

Vincent ISOZ



llo n



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 Autre o Générateur de rapports paginés Power BI

Mars 2019

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 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 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 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



ch



an

ti





É



….

Microsoft Power BI / Microsoft Excel BI

39/950

Vincent ISOZ

10. Licences

an

ti

llo n

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:

É

ch

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

Microsoft Power BI / Microsoft Excel BI

40/950

Vincent ISOZ

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

É

ch

an

ti

llo n

Ou sous un autre format globalement:

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/

llo n

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

an

ti

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

ch

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.

É

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

an

ti

llo n

Vincent ISOZ

É

ch

Point important:

Microsoft Power BI / Microsoft Excel BI

43/950

ti

É

ch

an

Mais à savoir aussi:

llo n

Vincent ISOZ

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)



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!)



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)



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

ti

llo n



an

Et il suffit de consulter la liste des propositions d'améliorations des utilisateurs de Power BI pour en voir beaucoup plus:

É

ch

https://ideas.powerbi.com/forums/265200-power-bi-ideas

Microsoft Power BI / Microsoft Excel BI

45/950

Vincent ISOZ

É

ch

an

ti

llo n

12. Meilleures Pratiques (best practices)

Microsoft Power BI / Microsoft Excel BI

46/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

47/950

Vincent ISOZ

13. Moteurs VertiPaq et XVelocity

an

ti

llo n

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

É

ch

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

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.

Techniques de compression

•Moins d'utilisation de mémoire vive et des coûts réduits •Augmentation des performances avec moins de données à analyser

llo n

Algorithme de compression

•Dictionnaire / Codage en hachage •Encodage de valeur •Codage en longueur

ch

an

ti

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.

É

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

llo n

Vincent ISOZ

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

ti

Rajoute la valeur lorsque nécessaire.

an

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.

É

ch

Répété 210 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.

É

ch

an

ti

llo n

ligne 1 ligne 2 ligne 3

Microsoft Power BI / Microsoft Excel BI

51/950

Vincent ISOZ

É

ch

an

ti

llo n

14. Data Munging

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:

an

ti

llo n

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

É

ch

Qui intègre donc Power Apps à Power BI!

Microsoft Power BI / Microsoft Excel BI

53/950

Vincent ISOZ

an

ti

llo n

Data sources

Tables manuelles

Cas classiques d'utilisations:

Tables de langues Tables de Pays Tables de fuseaux horaires Tables de phrases types traduites

ch

• • • •

É

Limitations courantes actuelles en cette année de 2019:

Microsoft Power BI / Microsoft Excel BI

54/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

55/950

É

ch

an

ti

llo n

Vincent ISOZ

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

llo n

Vincent ISOZ

ch

an

ti

Calendar = VAR FY_Month_Starts = 6 RETURN 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" ), "Fiscal Month number", MOD ( MONTH ( [Date] ) - FY_Month_Starts, 12 ) + 1, "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" ), "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 ), "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

ch

an

ti

llo n

Vincent ISOZ

É

Ce qui donnera:

Microsoft Power BI / Microsoft Excel BI

58/950

ti

llo n

Vincent ISOZ

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:

an

1. Vous gagnez de la mémoire (plutôt qu'il y ait n colonnes de dates décomposées, il n'y en 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!

ch

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 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

llo n

Vincent ISOZ

ch

an

ti

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:

É

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

Microsoft SharePoint

ti

llo n

Vincent ISOZ

an

Bibliothèque d'images (Asset Library)

É

ch

Considérons la bibliothèque d'images suivante dans SharePoint Online:

Microsoft Power BI / Microsoft Excel BI

61/950

ch

an

ti

llo n

Vincent ISOZ

Nous voulons importer les URL dans Power BI.

É

Pour cela, nous importons un liste SharePoint Online:

Microsoft Power BI / Microsoft Excel BI

62/950

an

ti

llo n

Vincent ISOZ

É

ch

Ensuite on met l'adresse du site contenant la bibliothèque d'images:

Microsoft Power BI / Microsoft Excel BI

63/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

64/950

an

ti

llo n

Vincent ISOZ

É

ch

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

Microsoft Power BI / Microsoft Excel BI

65/950

an

ti

llo n

Vincent ISOZ

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

É

ch

Considérons le scénario suivant:

Microsoft Power BI / Microsoft Excel BI

66/950

an

ti

llo n

Vincent ISOZ

É

ch

Ensuite dans Power BI on prend l'option d'importer une liste SharePoint:

Microsoft Power BI / Microsoft Excel BI

67/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

68/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

69/950

ti

llo n

Vincent ISOZ

ch

an

Ce qui donne après avoir supprimé les colonnes indésirables:

Microsoft Excel

Import d'un fichier Microsoft Excel stocké sur SharePoint

É

Considérons:

Microsoft Power BI / Microsoft Excel BI

70/950

an

ti

llo n

Vincent ISOZ

Nous voulons importer ce fichier.

É

ch

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

Microsoft Power BI / Microsoft Excel BI

71/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

72/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

73/950

É

ch

an

ti

llo n

Vincent ISOZ

Et voilà la suite est connue…

Microsoft Power BI / Microsoft Excel BI

74/950

Vincent ISOZ

É

ch

an

ti

llo n

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

Clic droit sur le dossier: Microsoft Power BI / Microsoft Excel BI

75/950

an

ti

llo n

Vincent ISOZ

É

ch

Ce qui donne:

Microsoft Power BI / Microsoft Excel BI

76/950

llo n

Vincent ISOZ

É

ch

an

ti

Et y'a plus qu'à, il faut qu'on…. Si jamais voici le code M correspondant:

Microsoft Power BI / Microsoft Excel BI

77/950

Vincent ISOZ

Import contenu bibliothéques SharePoint

an

ti

llo n

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

É

ch

Ensuite dans Power BI:

Microsoft Power BI / Microsoft Excel BI

78/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

79/950

ch

an

ti

llo n

Vincent ISOZ

É

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

Microsoft Power BI / Microsoft Excel BI

80/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

81/950

É

ch

an

ti

llo n

Vincent ISOZ

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

an

ti

llo n

Vincent ISOZ

É

ch

On veut que trois des fichiers! Donc:

Microsoft Power BI / Microsoft Excel BI

83/950

an

ti

llo n

Vincent ISOZ

É

ch

Ce qui nous amène dans Power Query où on va filtrer en prenant que le dossier qui nous intéresse:

Après quoi on clique sur l'expandeur:

Microsoft Power BI / Microsoft Excel BI

84/950

É

ch

an

Ce qui nous amène à:

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

85/950

an

ti

llo n

Vincent ISOZ

É

ch

Ce qui nous amène à:

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

É

ch

an

ti

llo n

JSON

Microsoft Power BI / Microsoft Excel BI

87/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

88/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

89/950

Vincent ISOZ

É

ch

an

ti

llo n

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

Microsoft Power BI / Microsoft Excel BI

90/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

91/950

ti

É

ch

an

Microsoft SQL Server

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

92/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

93/950

Vincent ISOZ

É

ch

an

ti

llo n

DirectQuery

Microsoft Power BI / Microsoft Excel BI

94/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

95/950

an

ti

llo n

Vincent ISOZ

É

ch

Depuis fin 2018:

Microsoft Power BI / Microsoft Excel BI

96/950

Vincent ISOZ

É

ch

an

ti

llo n

Query Folding

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

Microsoft Power BI / Microsoft Excel BI

97/950

É

ch

an

ti

llo n

Vincent ISOZ

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

Microsoft Power BI / Microsoft Excel BI

98/950

ti

llo n

Vincent ISOZ

É

ch

an

Soit:

Microsoft Power BI / Microsoft Excel BI

99/950

an

ti

llo n

Vincent ISOZ

É

ch

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

Microsoft Power BI / Microsoft Excel BI

100/950

Vincent ISOZ

É

ch

an

ti

llo n

OData

Microsoft Power BI / Microsoft Excel BI

101/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

102/950

an

ti

llo n

Vincent ISOZ

É

ch

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

Microsoft Power BI / Microsoft Excel BI

103/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

104/950

É

ch

an

ti

llo n

Vincent ISOZ

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:

É

ch

an

ti

llo n

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

Microsoft Power BI / Microsoft Excel BI

106/950

É

ch

an

En compte admin:

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

107/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

108/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

109/950

É

ch

an

ti

llo n

Vincent ISOZ

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

Microsoft Power BI / Microsoft Excel BI

110/950

ti

llo n

Vincent ISOZ

an

On clique sur Done et on arrive sur:

É

ch

On peut sauvegarder:

Microsoft Power BI / Microsoft Excel BI

111/950

Vincent ISOZ

llo n

Streaming Dataset

Limitations actuelle (juin 2018): 75 colonnes au maximum



75 tables au maximum



10 000 lignes au maximum par demande de lignes POST uniques



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



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 de rétention »



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

É

ch

an

ti



Microsoft Power BI / Microsoft Excel BI

112/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

113/950

ch

an

ti

llo n

Vincent ISOZ

É

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

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

115/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

116/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

117/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

118/950

an

Imports Newtonsoft.Json

ti

llo n

Vincent ISOZ

Imports System.Net.Http Module Module1

É

ch

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() 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

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

120/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

121/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

122/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

123/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

124/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

125/950

Vincent ISOZ

an

ti

llo n

Import vs DirectQuery vs Live Connection

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 plus que l'affichage des relations et des dashboards)

ch



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

llo n

Vincent ISOZ

É

ch

an

ti

Ou un autre résumé:

Microsoft Power BI / Microsoft Excel BI

127/950

Vincent ISOZ

Import

DirectQuery

Size

Up to 10 GB per dataset

No limitation

Data Source

Import data from Multiple sources

Data must come from a single Source

Performance

High-performance query engine

Depends on the data source response for each query

Data Change in the underlying data

Not Reflected. Required to do a Manual refresh in Power BI Desktop and republish the report or Schedule Refresh

Power BI caches the data for better performance. So, it is necessary to Refresh to ensure the latest data

Schedule Refresh

Maximum 8 schedules per day

Schedule often as every 15 mins

Power BI Gateway

Only required to get latest data from On-premise data sources

Must require to get data from Onpremise data sources

Data Transformations

Supports all transformations

Supports many data transformations with some limitations

an

ti

llo n

Capability

Data Modelling

No limitation

Some limitations such as autodetect relationships between tables and relationships are limited to a single direction.

Built-in Date Hierarchy

Available

Not available

Supports all DAX functions

Clustering

Available

Not available

Calculated Tables

Available

Not supported

Quick Insights

Available

Not available

Q&A

Available

Not available

Change Data Connectivity mode

Not possible to change Import to DirectQuery

Possible to change DirectQuery to Import

É

ch DAX expressions

Restricted to use complex DAX functions such as Time Intelligence functions. However, if there is a Date table available in the underlying source then it supports

Microsoft Power BI / Microsoft Excel BI

128/950

Vincent ISOZ

É

ch

an

ti

llo n

Data Flows (flux de données)

Microsoft Power BI / Microsoft Excel BI

129/950

Vincent ISOZ

Gateways

É

ch

an

ti

llo n

D'abord comprendre les différences:

Microsoft Power BI / Microsoft Excel BI

130/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

131/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

132/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

133/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

134/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

135/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

136/950

ti

llo n

Vincent ISOZ

É

ch

an

Il faut être dans un domaine pour la suite!

Microsoft Power BI / Microsoft Excel BI

137/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

138/950

an

ti

llo n

Vincent ISOZ

É

ch

Pour supprimer un gateway il y un bouton subtilement visible avec "…" sur lequel il faut cliquer:

Microsoft Power BI / Microsoft Excel BI

139/950

Vincent ISOZ

É

ch

an

ti

llo n

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

Microsoft Power BI / Microsoft Excel BI

140/950

Vincent ISOZ

É

ch

an

ti

llo n

Mises à jour des tables dans Power Query

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

llo n

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

Mises à jour manuelle de certaines tables

ch

an

ti

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

É

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

ti

Mises à jour automatique

llo n

Vincent ISOZ

an

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.

É

ch

Considérons alors que nous nous sommes connectés à la base suivante:

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

an

ti

llo n

Vincent ISOZ

É

ch

Si on active l'option, nous avons alors:

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

Microsoft Power BI / Microsoft Excel BI

144/950

É

ch

an

ti

Mises à jour incrémentielles

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

145/950

Vincent ISOZ

Mises à jour dans Power BI Service

É

ch

an

ti

Mises à jour automatiques

llo n

Mises à jour manuelles

Microsoft Power BI / Microsoft Excel BI

146/950

Vincent ISOZ

É

ch

an

ti

llo n

16. Data Mashup (Power Query)

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é.

É

ch

an

ti

llo n

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

Microsoft Power BI / Microsoft Excel BI

148/950

Vincent ISOZ

Icônes Power Query

Logo

Description Une simple table

llo n

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:

Une table pour laquelle le chargement a été désactivé Un simple dossier

Avertissement à traiter!

ti

Une table non accédée depuis longtemps Une liste (table générée en pure M) Fonction M

an

Paramètre

Groupe (hiérarchie)

É

ch

Tableau 1 Tableau icônes Power Query

Microsoft Power BI / Microsoft Excel BI

149/950

Vincent ISOZ

É

ch

an

ti

llo n

Lister toutes les fonctions

Microsoft Power BI / Microsoft Excel BI

150/950

ch

an

ti

llo n

Vincent ISOZ

É

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

ch

an

ti

llo n

Vincent ISOZ

É

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

É

ch

an

ti

llo n

Vincent ISOZ

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.

llo n

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).

É

ch

an

ti

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

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)

É

ch

an

Ce qui donnera bien:

ti

llo n

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

Microsoft Power BI / Microsoft Excel BI

155/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

156/950

Vincent ISOZ

Construction d'un VLOOKUP approximatif

an

ti

llo n

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

É

ch

Et la table des remises suivante:

Microsoft Power BI / Microsoft Excel BI

157/950

ti

llo n

Vincent ISOZ

an

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

É

ch

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

Microsoft Power BI / Microsoft Excel BI

158/950

an

ti

llo n

Vincent ISOZ

É

ch

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

Microsoft Power BI / Microsoft Excel BI

159/950

an

ti

llo n

Vincent ISOZ

É

ch

Ensuite on étend les colonnes pour obtenir:

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

Microsoft Power BI / Microsoft Excel BI

160/950

ch

an

ti

llo n

Vincent ISOZ

É

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

llo n

Vincent ISOZ

É

ch

an

ti

Pour obtenir:

Microsoft Power BI / Microsoft Excel BI

162/950

ch

an

ti

llo n

Vincent ISOZ

É

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

llo n

Vincent ISOZ

an

ti

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

É

ch

Et observons avant la touche finale:

Et aussi la zone suivante:

Microsoft Power BI / Microsoft Excel BI

164/950

llo n

Vincent ISOZ

an

ti

Et la zone suivante:

É

ch

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:

Ce qui nous donne:

Microsoft Power BI / Microsoft Excel BI

165/950

llo n

Vincent ISOZ

É

ch

an

ti

Et aussi:

Microsoft Power BI / Microsoft Excel BI

166/950

Vincent ISOZ

llo n

Et aussi:

É

ch

an

ti

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

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.

É

ch

an

ti

llo n

À 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 etc. comme l'illustre par example le simple filtre suivant:

Microsoft Power BI / Microsoft Excel BI

168/950

Vincent ISOZ

Fusion de feuilles multiples d'un unique fichier Microsoft Excel

llo n

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!).

an

ti

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

É

ch

Soit en zoomant un peu:

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

É

ch

an

ti

llo n

Considérones les trois fichiers suivants:

Microsoft Power BI / Microsoft Excel BI

170/950

É

ch

an

ti

llo n

Vincent ISOZ

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

llo n



É

ch

an

ti

On commence:

Microsoft Power BI / Microsoft Excel BI

172/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

173/950

an

ti

llo n

Vincent ISOZ

É

ch

Ce qui donne:

On fait le nettoyage standard: Microsoft Power BI / Microsoft Excel BI

174/950

llo n

Vincent ISOZ

ch

an

ti

Soit le code M correspondant:

É

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

Microsoft Power BI / Microsoft Excel BI

175/950

llo n

Vincent ISOZ

É

ch

an

ti

Ce qui devient alors effectivement une fonction:

On va renommer la fonction:

Microsoft Power BI / Microsoft Excel BI

176/950

llo n

Vincent ISOZ

É

ch

an

ti

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:

Microsoft Power BI / Microsoft Excel BI

177/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

178/950

llo n

Vincent ISOZ

an

ti

Ce qui nous amène à:

ch

Maintenant, normalement, nous serions tentés de cliquer sur les doubles flèches à côté de l'entê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!

É

Pour cela:

Microsoft Power BI / Microsoft Excel BI

179/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

180/950

ch

an

Ce qui donne:

ti

llo n

Vincent ISOZ

É

Reste plus qu'à faire le nettoyage habituel…

Microsoft Power BI / Microsoft Excel BI

181/950

Vincent ISOZ

ch

an

ti

llo n

Fusion de fichiers Microsoft Excel d'un dossier avec feuille unique non identiquement nommées

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

É

ch

an

ti

llo n

//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", "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 #"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")), #"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") in #"Doublons supprimés"

Microsoft Power BI / Microsoft Excel BI

183/950

Vincent ISOZ

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

ch

an

ti

llo n

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

É

Si nous l'importons de façon classique:

Microsoft Power BI / Microsoft Excel BI

184/950

ch

an

ti

llo n

Vincent ISOZ

É

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

Microsoft Power BI / Microsoft Excel BI

185/950

Vincent ISOZ

llo n

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

an

ti

Ce qui donnera:

É

ch

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

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

Microsoft Power BI / Microsoft Excel BI

186/950

llo n

Vincent ISOZ

ch

an

ti

Et on y est! On obtient:

É

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.

llo n

L'idée est alors plutôt d'inclure une date dans une table PowerQuery! 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.

É

ch

an

ti

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

Une fois ceci fait, ajoutez une colonne:

Microsoft Power BI / Microsoft Excel BI

188/950

É

ch

an

ti

llo n

Vincent ISOZ

Et n'oubliez pas de changer le type:

Microsoft Power BI / Microsoft Excel BI

189/950

llo n

Vincent ISOZ

an

ti

Ce qui donnera:

É

ch

Et voilà il vous suffit d'ajouter cette colonne dans un visuel de type Card d'une page de rapport 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

ch

an

ti

llo n

Considérons la table importée suivante:

É

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

Microsoft Power BI / Microsoft Excel BI

191/950

É

ch

an

ti

llo n

Vincent ISOZ

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

Microsoft Power BI / Microsoft Excel BI

192/950

É

ch

an

ti

llo n

Vincent ISOZ

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!

an

ti

llo n

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

É

ch

Ou une version alternative:

Microsoft Power BI / Microsoft Excel BI

194/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

195/950

Vincent ISOZ

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

É

ch

an

ti

llo n

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!

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!

É

ch

an

ti

llo n

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

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:

ch

an

ti

llo n

let CreateDateTable = (StartDate as date, EndDate as date, optional Culture as nullable text) as table => let 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}}), 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])), 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", 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), 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

an

ti

llo n

Vincent ISOZ

ch

Une fois validé:

É

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

Microsoft Power BI / Microsoft Excel BI

199/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

200/950

Vincent ISOZ

Filtre dynamique en M

an

ti

llo n

Considérons la table suivante importée dans Power Query:

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

É

ch

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

Microsoft Power BI / Microsoft Excel BI

201/950

É

ch

an

Ce qui donne bien:

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

202/950

Vincent ISOZ

É

ch

an

ti

llo n

Création d'une Fonction simple en M

Microsoft Power BI / Microsoft Excel BI

203/950

Vincent ISOZ

É

ch

an

ti

llo n

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

Microsoft Power BI / Microsoft Excel BI

204/950

Vincent ISOZ

É

ch

an

ti

llo n

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

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: Fonction

Résultat

Microsoft Excel

=TRIM(“ trim me “)

“trim me”

Power Query

=Text.Trim(“ trim me “)

“trim me“

llo n

Source

É

ch

an

ti

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...).

Microsoft Power BI / Microsoft Excel BI

206/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

207/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

208/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

209/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

210/950

Vincent ISOZ

É

ch

an

ti

llo n

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

Microsoft Power BI / Microsoft Excel BI

211/950

Vincent ISOZ

É

ch

an

ti

llo n

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

Microsoft Power BI / Microsoft Excel BI

212/950

Vincent ISOZ

É

ch

an

ti

llo n

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

Microsoft Power BI / Microsoft Excel BI

213/950

Vincent ISOZ

Création d'une Liste statique en M

ch

an

ti

llo n

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

É

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

Microsoft Power BI / Microsoft Excel BI

214/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

215/950

Vincent ISOZ

ch

an

ti

llo n

Création d'une Table statique en M

É

Mais la syntaxe suivante passe aussi:

Microsoft Power BI / Microsoft Excel BI

216/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

217/950

Vincent ISOZ

Création d'une Table dynamique en M

É

ch

an

Ce qui donne après validation:

ti

llo n

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

Si on saisit des valeurs:

Microsoft Power BI / Microsoft Excel BI

218/950

llo n

Vincent ISOZ

É

ch

an

ti

Cela donne:

Microsoft Power BI / Microsoft Excel BI

219/950

Vincent ISOZ

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

an

ti

llo n

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

ch

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

É

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

an

ti

llo n

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:

É

ch

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

Microsoft Power BI / Microsoft Excel BI

221/950

an

ti

llo n

Vincent ISOZ

É

ch

Une fois la liste transformée en table, nous pouvons cliquer sur Custom Column:

Microsoft Power BI / Microsoft Excel BI

222/950

ch

an

ti

llo n

Vincent ISOZ

É

On aura alors:

Microsoft Power BI / Microsoft Excel BI

223/950

É

ch

an

ti

llo n

Vincent ISOZ

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

an

ti

llo n

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

É

ch

Ce qui donnera:

Microsoft Power BI / Microsoft Excel BI

225/950

Vincent ISOZ

Échantillonnage aléatoire simple

É

ch

an

Ajoutons-y une colonne aléatoire:

ti

llo n

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:

Microsoft Power BI / Microsoft Excel BI

226/950

an

ti

llo n

Vincent ISOZ

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

É

ch

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

Microsoft Power BI / Microsoft Excel BI

227/950

ti

llo n

Vincent ISOZ

ch

an

Nous cliquons sur le bouton d'expansion et prenons Expand to New Rows:

É

Cela donnera:

Ce qui donnera alors le résultat attendu:

Microsoft Power BI / Microsoft Excel BI

228/950

ti

llo n

Vincent ISOZ

É

ch

an

Ensuite il suffit de trier sur la colonne aléatoire:

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!

É

ch

an

ti

llo n

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:

Microsoft Power BI / Microsoft Excel BI

230/950

Vincent ISOZ

Traitements des dates

É

ch

an

ti

llo n

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

Microsoft Power BI / Microsoft Excel BI

231/950

Vincent ISOZ

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

an

ti

llo n

Considérons tous les imports suivants:

ch

Imaginons qu'ils viennent tous d'un même dossier. Malheureusement nous savons par 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

llo n

Vincent ISOZ

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!

É

ch

an

ti

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

Microsoft Power BI / Microsoft Excel BI

233/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

234/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

235/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

236/950

ti

llo n

Vincent ISOZ

É

ch

an

Sur la même idée, on peut créer des paramètres pour des filtres:

Microsoft Power BI / Microsoft Excel BI

237/950

an

ti

llo n

Vincent ISOZ

ch

Et les imbriquer dans le code M typiquement de la manière suivante: …" & SalesYear & "…

É

des statistiques:

Microsoft Power BI / Microsoft Excel BI

238/950

an

ti

llo n

Vincent ISOZ

ch

Et les imbriquer dans le code M typiquement de la manière suivante: …" & AggType & "…

É

etc.!

Microsoft Power BI / Microsoft Excel BI

239/950

Vincent ISOZ

Importer le fichier du jour

ch

an

ti

llo n

Considérons le script suivant d'import:

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

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

241/950

Vincent ISOZ

É

ch

an

ti

llo n

Compter les mots

Microsoft Power BI / Microsoft Excel BI

242/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

243/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

244/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

245/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

246/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

247/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

248/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

249/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

250/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

251/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

252/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

253/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

254/950

Vincent ISOZ

Extraire les premiers/derniers de groupes

ch

an

ti

llo n

Soit la table suivante:

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

ti

an

Ensuite on fait un groupement:

llo n

Vincent ISOZ

É

ch

Avec les paramètres suivants:

On obtient alors: Microsoft Power BI / Microsoft Excel BI

256/950

an

ti

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

llo n

Vincent ISOZ

É

ch

Ce qui va afficher:

Microsoft Power BI / Microsoft Excel BI

257/950

É

ch

an

Qu'on va d'abord reformater ainsi:

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

258/950

an

ti

llo n

Vincent ISOZ

É

ch

Qu'on va devoir modifier comme suit:

Microsoft Power BI / Microsoft Excel BI

259/950

an

ti

llo n

Vincent ISOZ

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

ch

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

É

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

É

ch

an

ti

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

llo n

Vincent ISOZ

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).

ch

an

ti

llo n

Pour cela considérons à nouveau la table suivante:

É

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

Microsoft Power BI / Microsoft Excel BI

262/950

llo n

Vincent ISOZ

É

ch

an

ti

Ensuite on groupe:

De la manière suivante: Microsoft Power BI / Microsoft Excel BI

263/950

llo n

Vincent ISOZ

ch

an

ti

Ce qui donnera:

É

Ensuite on ajoute un nouvelle colonne:

Microsoft Power BI / Microsoft Excel BI

264/950

Vincent ISOZ

an

ti

llo n

Et on y met:

É

ch

Ce qui donnera:

Ensuite on garde seulement la dernière colonne:

Microsoft Power BI / Microsoft Excel BI

265/950

ch

an

Ce qui donnera évidemment:

ti

llo n

Vincent ISOZ

É

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

an

ti

llo n

Vincent ISOZ

É

ch

Ce qui donnera au final:

Microsoft Power BI / Microsoft Excel BI

267/950

an

ti

llo n

Vincent ISOZ

É

ch

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:

Microsoft Power BI / Microsoft Excel BI

268/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

269/950

Vincent ISOZ

Fusionner de multiples lignes en une seule ligne

llo n

Considérons dans Power Query les deux table suivantes:

ch

an

ti

Et:

É

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

Microsoft Power BI / Microsoft Excel BI

270/950

Vincent ISOZ

ti

llo n

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

É

ch

an

Ensuite vient la première subtilité! On rajoute une colonne avec la formule suivante:

Microsoft Power BI / Microsoft Excel BI

271/950

Vincent ISOZ

ti

llo n

Ce qui donnera:

É

ch

an

Ensuite, deuxième subtilité, on rajoute:

Microsoft Power BI / Microsoft Excel BI

272/950

Vincent ISOZ

ch

an

Ensuite on étend la colonne:

ti

llo n

Ce qui donnera:

É

On obtient finalement:

Microsoft Power BI / Microsoft Excel BI

273/950

llo n

Vincent ISOZ

É

ch

an

ti

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

Microsoft Power BI / Microsoft Excel BI

274/950

Vincent ISOZ

Lag de colonnes

an

ti

llo n

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é!

É

ch

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

Microsoft Power BI / Microsoft Excel BI

275/950

ch

an

ti

llo n

Vincent ISOZ

É

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

ti

É

ch

an

Ce qui donnera:

llo n

Vincent ISOZ

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

É

ch

an

ti

llo n

Fuseaux horaires

Microsoft Power BI / Microsoft Excel BI

278/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

279/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

280/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

281/950

Vincent ISOZ

17. DAX (Data Analysis Expression)

an

ti

llo n

Voici comment on peut présenter DAX:

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!)

ch

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

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.

É

ch

an

ti

llo n

Notez aussi que de nombreux fonctions Analytiques DAX ont dans la pratique (business case) 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):

Microsoft Power BI / Microsoft Excel BI

283/950

Vincent ISOZ

Exemple 1.: Requête EVALUATE Excel BI 2010 à 2019

llo n

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 Power BI.

É

ch

an

ti

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

Microsoft Power BI / Microsoft Excel BI

284/950

ch

an

ti

llo n

Vincent ISOZ

É

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

Microsoft Power BI / Microsoft Excel BI

285/950

Vincent ISOZ

Solution

ch

an

ti

llo n

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

É

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

Microsoft Power BI / Microsoft Excel BI

286/950

llo n

Vincent ISOZ

É

ch

an

ti

Ce qui nous donne:

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

ch

an

ti

Nous validons par OK et nous obtenons:

llo n

Vincent ISOZ

É

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

Microsoft Power BI / Microsoft Excel BI

288/950

É

ch

an

ti

llo n

Vincent ISOZ

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

llo n

Vincent ISOZ

ch

an

ti

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

É

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

Microsoft Power BI / Microsoft Excel BI

290/950

É

ch

an

Ou dans une version plus élaborée:

ti

llo n

Vincent ISOZ

Ce qui donnera:

Microsoft Power BI / Microsoft Excel BI

291/950

llo n

Vincent ISOZ

É

ch

an

ti

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

Microsoft Power BI / Microsoft Excel BI

292/950

Vincent ISOZ

Exemple 2.: Requête ALL Power BI 2018-03 / Excel 2010 à 2019

an

ti

llo n

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:

É

ch

Ensuite, nous cliquons sur New Table:

Microsoft Power BI / Microsoft Excel BI

293/950

É

ch

an

ti

Et nous utilisons la requête ALL( ):

llo n

Vincent ISOZ

Mais on peut aussi prendre un sous-ensemble:

Microsoft Power BI / Microsoft Excel BI

294/950

an

ti

llo n

Vincent ISOZ

ch

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 de ALL( ))!

É

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

Microsoft Power BI / Microsoft Excel BI

295/950

É

ch

an

ti

llo n

Vincent ISOZ

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

an

ti

Voyons d'abord un exemple avec Power BI:

llo n

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!

É

ch

Et l'équivalent avec Microsoft Excel:

Microsoft Power BI / Microsoft Excel BI

297/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

298/950

Vincent ISOZ

Exemple 4.: Requête VALUES Power BI 2019-08 / Excel 2010 à 2019

É

ch

On part de:

an

ti

llo n

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( ) qui en DAX est à de multiples usages:

Microsoft Power BI / Microsoft Excel BI

299/950

Vincent ISOZ

É

ch

an

Et nous écrivons:

ti

llo n

Ensuite, nous cliquons sur New Table:

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

ti

llo n

Vincent ISOZ

É

ch

an

Nous verrons plus loin comment éliminer les lignes vierges.

Microsoft Power BI / Microsoft Excel BI

301/950

Vincent ISOZ

Exemple 5.: Requête DISTINCT Power BI 2018-03 / Excel 2010 à 2019

ch

an

ti

llo n

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

É

Et son équivalent dans Microsoft Excel:

Microsoft Power BI / Microsoft Excel BI

302/950

ch

an

ti

llo n

Vincent ISOZ

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

llo n

Vincent ISOZ

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

É

ch

an

ti

du côté "plusieurs" a vraiment physiquement des lignes vierges).

Microsoft Power BI / Microsoft Excel BI

304/950

Vincent ISOZ

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

llo n

Power BI 2018-03 / Excel 2010 à 2019

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… :

É

ch

an

ti

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!!!

Microsoft Power BI / Microsoft Excel BI

305/950

Vincent ISOZ

Exemple 7.: Requête CALCULATETABLE Power BI 2018-03 / Excel 2010 à 2019

É

ch

an

ti

llo n

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:

Avec Microsoft Excel cela donne:

Microsoft Power BI / Microsoft Excel BI

306/950

an

ti

llo n

Vincent ISOZ

ch

Sinon on peut faire des requêtes avec critères multiples ET:

É

Ou avec une condition OU:

Ou avec une condition IN:

Microsoft Power BI / Microsoft Excel BI

307/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

308/950

Vincent ISOZ

Exemple 8.: Requête FILTER Power BI 2018-03 / Excel 2010 à 2019

llo n

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 rapide selon l'article très détaillé de Marco Russo:

https://www.sqlbi.com/articles/filter-vs-calculatetable-optimization-using-cardinality-estimation/ Nous souhaiterions filter tous les articles IBM 500 ou AST Intel 150 et dont la facture payée est à l'état Oui.

É

ch

an

ti

Pour cela, nous écrirons:

Microsoft Power BI / Microsoft Excel BI

309/950

Vincent ISOZ

Exemple 9.: Requête SAMPLE Power BI 2018-03 / Excel 2010 à 2019

llo n

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 obtient un outil d'échantillon et de simulation de population très intéressant.

ch

an

ti

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

É

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

an

ti

llo n

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

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!

É

ch

L'équivalent dans Microsoft Excel étant:

Mais on peut aussi faire des statistiques de regroupement: Microsoft Power BI / Microsoft Excel BI

311/950

an

ti

llo n

Vincent ISOZ

É

ch

Ou son équivalent dans Microsoft Excel:

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

Microsoft Power BI / Microsoft Excel BI

312/950

llo n

Vincent ISOZ

ch

an

ti

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:

É

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

Microsoft Power BI / Microsoft Excel BI

313/950

É

ch

an

ti

llo n

Vincent ISOZ

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

ch

an

ti

llo n

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

É

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

Microsoft Power BI / Microsoft Excel BI

315/950

llo n

Vincent ISOZ

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

É

ch

an

ti

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

Microsoft Power BI / Microsoft Excel BI

316/950

an

ti

llo n

Vincent ISOZ

É

ch

Avec l'exemple suivant d'une application de SUMMARIZE( ) en monde multi-tables:

Microsoft Power BI / Microsoft Excel BI

317/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

318/950

Vincent ISOZ

Exemple 12.: Requête GROUPBY et CURRENTGROUP Power BI 2018-03 / Excel 2010 à 2019

ch

an

ti

llo n

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

É

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

llo n

Voyons quelque cas d'applications de SUMMARIZECOLUMNS( ):

an

ti

Et:

É

ch

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 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

llo n

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

ti

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

an

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

É

ch

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

Microsoft Power BI / Microsoft Excel BI

321/950

Vincent ISOZ

Exemple 15.: Requête TOPN Power BI 2018-03 / Excel 2010 à 2019

ti

Donc voici un premier exemple au plus simple:

llo n

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 lecteur à la page 551.

ch

an

Et un deuxième exemple toujours dans Power BI:

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

an

ti

llo n

Vincent ISOZ

É

ch

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

Microsoft Power BI / Microsoft Excel BI

323/950

Vincent ISOZ

Exemple 16.: Requête RANK.EQ Power BI 2018-03 / Excel 2010 à 2019

É

ch

an

ti

llo n

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

Microsoft Power BI / Microsoft Excel BI

324/950

Vincent ISOZ

Exemple 17.: Requête ROW Power BI 2018-03 / Excel 2010 à 2019

an

ti

llo n

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

Notez que l'expression suivante:

ch

Ou suivante:

É

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

an

ti

llo n

Vincent ISOZ

É

ch

Ou encore un autre exemple utilisant SUM( ), AVERAGE( ) et ROUND( ):

Microsoft Power BI / Microsoft Excel BI

326/950

Vincent ISOZ

É

ch

an

ti

llo n

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

Microsoft Power BI / Microsoft Excel BI

327/950

Vincent ISOZ

Exemple 18.: Requête SELECTCOLUMNS avec RELATED Power BI 2018-03 / Excel 2010 à 2019

ch

an

ti

llo n

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

É

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

Microsoft Power BI / Microsoft Excel BI

328/950

ti

llo n

Vincent ISOZ

É

ch

an

Voyons maintenant un exemple avec Microsoft Excel en considérant le schéma suivant:

Microsoft Power BI / Microsoft Excel BI

329/950

an

ti

llo n

Vincent ISOZ

É

ch

Et enfin un exemple d'application:

Microsoft Power BI / Microsoft Excel BI

330/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

331/950

Vincent ISOZ

Exemple 19.: Requête GENERATE avec RELATEDTABLE Power BI 2018-03 / Excel 2010 à 2019

llo n

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

ch

an

ti

Dans Microsoft Excel, la requête DAX suivante:

É

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

ti

llo n

Vincent ISOZ

an

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

É

ch

Conjointement avec CALCULATETABLE( ), nous pouvons ajouter un filtre à GENERATE( ) ou GENERATEALL( ):

Microsoft Power BI / Microsoft Excel BI

333/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

334/950

Vincent ISOZ

É

ch

an

ti

llo n

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:

Microsoft Power BI / Microsoft Excel BI

335/950

Vincent ISOZ

Exemple 20.: Requête GENERATEALL avec RELATEDTABLE Power BI 2018-03 / Excel 2010 à 2019

llo n

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

ch

an

ti

Dans Microsoft Excel, la requête DAX suivante:

É

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

an

ti

llo n

Vincent ISOZ

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

É

ch

À nouveau, 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:

Microsoft Power BI / Microsoft Excel BI

337/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

338/950

Vincent ISOZ

Exemple 21.: Requête NATURALINNERJOIN Power BI 2018-03 / Excel 2010 à 2019

É

ch

an

ti

llo n

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

Figure 8 Types de jointures DAX (source: Curbal)

Considérons notre schéma habituel:

Microsoft Power BI / Microsoft Excel BI

339/950

an

ti

llo n

Vincent ISOZ

É

ch

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:

Microsoft Power BI / Microsoft Excel BI

340/950

ch

an

ti

llo n

Vincent ISOZ

É

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

É

ch

an

ti

llo n

Vincent ISOZ

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

llo n

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

É

ch

an

ti

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

Microsoft Power BI / Microsoft Excel BI

343/950

Vincent ISOZ

Exemple 22.: Requête NATURALLEFTOUTERJOIN Power BI 2018-03 / Excel 2010 à 2019

É

ch

an

ti

llo n

Pour la fonction NATURALLEFTOUTERJOIN( ), l'excellent rappel suivant de Curbal peut être utile (notez que contrairement à NATURALINNERJOIN( ), cette fonction n'est pas "symétrique"):

Figure 9 Types de jointures DAX (source: Curbal)

Considérons notre schéma habituel:

Microsoft Power BI / Microsoft Excel BI

344/950

an

ti

llo n

Vincent ISOZ

É

ch

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:

Microsoft Power BI / Microsoft Excel BI

345/950

ch

an

ti

llo n

Vincent ISOZ

É

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

É

ch

an

ti

llo n

Vincent ISOZ

Ou inversement: Microsoft Power BI / Microsoft Excel BI

347/950

É

ch

an

ti

llo n

Vincent ISOZ

Donc la jointure naturelle fait bien son travail!

Microsoft Power BI / Microsoft Excel BI

348/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

349/950

Vincent ISOZ

Exemple 23.: Requête ADDCOLUMNS Power BI 2018-03 / Excel 2010 à 2019

an

ti

Voyons donc d'abord un cas simple:

llo n

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 seule utilité!

É

ch

Ou l'équivalent dans Microsoft Excel:

Microsoft Power BI / Microsoft Excel BI

350/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

351/950

Vincent ISOZ

Exemple 24.: Requête ROLLUP Excel BI 2019 / Power BI 2019-10

llo n

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 puisque nous y avons les tableaux croisés dynamiques (mais elle existe toutefois dans ce dernier!!!!).

É

ch

an

ti

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

Microsoft Power BI / Microsoft Excel BI

352/950

Vincent ISOZ

Exemple 25.: Requête ROLLUPGROUP Excel BI 2019 / Power BI 2019-10

llo n

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 Power BI puisque nous y avons les tableaux croisés dynamiques (mais elle existe toutefois dans ce dernier!!!!).

ch

an

ti

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

É

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

Avec ROLLUPGROUP

É

ch

an

ti

llo n

ROLLUP seul

Microsoft Power BI / Microsoft Excel BI

354/950

Vincent ISOZ

Exemple 26.: Requête ISSUBTOTAL Excel BI 2019 / Power BI 2019-10

llo n

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 de sens dans Power BI puisque nous y avons les tableaux croisés dynamiques (mais elle existe toutefois dans ce dernier!!!!). Voyons deux exemples d'applications dans Microsoft Excel!

É

ch

an

ti

D'abord avec ROLLUP( ) seul:

Et enfin avec ROLLUP( ) et ROLLUPGROUP( ):

Microsoft Power BI / Microsoft Excel BI

355/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

356/950

Vincent ISOZ

Exemple 27.: Requête ROLLUPADDISSUBTOTAL Excel BI 2019 / Power BI 2019-10

llo n

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 de sens dans Power BI puisque nous y avons les tableaux croisés dynamiques (mais elle existe toutefois dans ce dernier!!!!).

É

ch

an

ti

Voyons donc un exemple d'application dans Microsoft Excel:

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: 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 que les tables Power Query sont toujours disponibles dans le Data Model)

É

ch

an

ti

llo n



Microsoft Power BI / Microsoft Excel BI

358/950

Vincent ISOZ

Exercice 28.: Commande CALENDAR Power BI 2018-03

llo n

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

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

É

ch

an

ti

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

Microsoft Power BI / Microsoft Excel BI

359/950

Vincent ISOZ

Solution

llo n

On clique sur Modeling/New Table:

ti

On saisit la relation suivante:

an

Et on valide par entrée pour obtenir:

É

ch

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

Microsoft Power BI / Microsoft Excel BI

360/950

llo n

Vincent ISOZ

ti

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

É

ch

an

Calendrier = ADDCOLUMNS ( CALENDAR ( DATE ( 2000, 1, 1 ), DATE ( 2025, 12, 31 ) ), "Date As Integer", FORMAT ( [Date], "YYYYMMDD" ), "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" ), "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

É

ch

an

ti

llo n

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!

Microsoft Power BI / Microsoft Excel BI

362/950

Vincent ISOZ

Exercice 29.: Commande CALENDARAUTO Power BI 2018-03

llo n

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

É

ch

an

ti

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 le modèle Power BI.

Microsoft Power BI / Microsoft Excel BI

363/950

Vincent ISOZ

Solution

llo n

On clique sur Modeling/New Table:

ti

On saisit la relation suivante:

an

Et on valide par entrée pour obtenir:

É

ch

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

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: Après (décalage de 1 mois):

É

ch

an

ti

llo n

Avant:

Microsoft Power BI / Microsoft Excel BI

365/950

Vincent ISOZ

Exercice 30.: Commande SUMMARIZE Power BI 2018-03

É

ch

an

ti

llo n

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).

Microsoft Power BI / Microsoft Excel BI

366/950

Vincent ISOZ

Solution

llo n

On clique sur Modeling/New Table:

É

ch

an

ti

Et on y met:

Microsoft Power BI / Microsoft Excel BI

367/950

Vincent ISOZ

Exercice 31.: Commande ADDCOLUMNS Power BI 2018-03

llo n

Un premier exercice illustrant cette commande dans un cas fameux est disponible à la page 690. 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:

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

É

ch

an

ti



Microsoft Power BI / Microsoft Excel BI

368/950

Vincent ISOZ

Solution

É

ch

an

Ce qui donnera:

ti

llo n

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

Microsoft Power BI / Microsoft Excel BI

369/950

Vincent ISOZ

Exercice 32.: Commande UNION Power BI 2018-03

llo n

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( )).

an

ti

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

É

ch

Comment les fusionner ?

Microsoft Power BI / Microsoft Excel BI

370/950

Vincent ISOZ

Solution

ti

llo n

Eh bien la solution consiste simplement à écrire:

É

ch

an

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

Microsoft Power BI / Microsoft Excel BI

371/950

Vincent ISOZ

Exercice 33.: Commande UNION et ROW Power BI 2018-03

É

ch

an

ti

llo n

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 d'une table Microsoft Excel à une nouvelle table statique…):

Microsoft Power BI / Microsoft Excel BI

372/950

Vincent ISOZ

Solution

É

ch

an

ti

llo n

La solution non triviale est donnée par:

Microsoft Power BI / Microsoft Excel BI

373/950

Vincent ISOZ

Exercice 34.: Commande UNION et GENERATESERIES Power BI 2018-03

É

ch

an

ti

llo n

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 suivant à l'aide de la fonction UNION( ) et GENERATESERIES( ):

Microsoft Power BI / Microsoft Excel BI

374/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

375/950

Vincent ISOZ

Solution

ch

an

ti

llo n

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

É

É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

É

ch

an

ti

llo n

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 pourrait aussi bien évidemment faire un copier/coller spécial d'une table Microsoft Excel à une nouvelle table statique…):

Microsoft Power BI / Microsoft Excel BI

377/950

Vincent ISOZ

Solution

an

ti

llo n

La solution non triviale est donnée par:

É

ch

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:

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

378/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

379/950

Vincent ISOZ

Exercice 36.: Commande INTERSECTION Power BI 2018-03

an

ti

llo n

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:

É

ch

Nous souhaiterions fusionner par intersection seulement la colonne strNbArticle des trois tables?

Microsoft Power BI / Microsoft Excel BI

380/950

Vincent ISOZ

Solution

llo n

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:

Ce qui est bien conforme!

É

ch

an

ti

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

Microsoft Power BI / Microsoft Excel BI

381/950

Vincent ISOZ

Exemple 37.: Commande CROSSJOIN Power BI 2018-03 / Excel 2010

É

ch

an

ti

Voyons un exemple avec Power BI:

llo n

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( ).

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

Microsoft Power BI / Microsoft Excel BI

382/950

É

ch

an

ti

llo n

Vincent ISOZ

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

Microsoft Power BI / Microsoft Excel BI

383/950

an

ti

llo n

Vincent ISOZ

É

ch

Nous pouvons faire le produit cartésien de toutes les ventes avec tous les bonus (ie remises):

Microsoft Power BI / Microsoft Excel BI

384/950

É

ch

an

ti

llo n

Vincent ISOZ

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

llo n

Power BI 2018-03 / Excel 2016

an

ti

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

É

ch

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:

Microsoft Power BI / Microsoft Excel BI

386/950

ch

an

ti

llo n

Vincent ISOZ

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

an

ti

llo n

Vincent ISOZ

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é!

É

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

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.

llo n

En tant qu'auteur de ce document, je ne souhaite pas prendre parti, mais sachez que DAX peut comme tout autre domaine relativement complexe être résumé par l'illustration ci-dessous:

La maîtrise de DAX nécessite

De La CONNAISSANCE,

an

De la PATIENCE,

ti

Du TEMPS,

ch

Et surtout de l'EXPÉRIENCE

É

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)

llo n

3. Les mesures DAX dites "DAX query context"

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

ti

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

an

4. Les mesures DAX de type query context avec filtres dites "DAX filter context"

É

ch

4.1. Elles sont identifiées car elles contiennent des paramétrages de filtres dans la formule

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

llo n

Fonctions AGGREGATEX SUMX AVERAGEX MINX MAXX COUNTX COUNTAX

ch

an

ti

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:

É

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.



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 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!

É

ch

an

ti

llo n



Microsoft Power BI / Microsoft Excel BI

392/950

Vincent ISOZ

Compatibilités fonctions DAX

Description Introduit avec Excel 2016 Introduit avec Excel 2016 Septembre 2019 Septembre 2019 Mai 2019 Avril 2019 Mars 2019 Mars 2019 Mars 2019 Décembre 2019 Août 2018 Août 2018 Août 2018 Août 2018 Août 2018 Août 2018 Août 2018 Août 2018 Août 2018 April 2018 Mars 2018 Mars 2018 Mars 2018

ch

an

ti

Fonction MEDIAN MEDIANX CONVERTE REMOVEFILTERS SELECTEDMEASUREFORMATSTRING ALLCROSSFILTERED CONTAINSSTRING CONTAINSSTRINGEXACT DISTINCTCOUNTNOBLANK APPROXIMATEDISTINCTCOUNT ISINSCOPE NORM.DIST NORM.INV NORM.S.INV T.DIST T.DIST.2T T.DIST.RT T.INV T.INV.2T DISTINCT COMBINEVALUES UTCNOW UTCTODAY

llo n

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…!):

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



Indentation: Ctrl + ]



Suppression Indentation: Ctrl + [



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 + /



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



Déplacer la ligne actuelle vers le haut / bas: ALT + Flèche haut / bas



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 plusieurs lignes, puis CTRL + MAJ + K

ch

an

ti

llo n



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 utilisant / * * / (par exemple = 1 + / * un commentaire * / 2)

llo n



an

ti

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!).

ch

Figure 10 Requête DAX dans Microsoft Excel avec commentaires

É

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: Description Une simple table (importée)

llo n

Logo

Une table DAX (ie requête DAX)

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

ti

Un colonne DAX

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

an

Une hiérarchie DAX

Un dossier de mesures DAX

Une table uniquement de mesures DAX

Une erreur dans un requête ou mesure DAX

Tableau 2 Tableau icônes DAX

É

ch

Groupe

Microsoft Power BI / Microsoft Excel BI

396/950

Vincent ISOZ

É

ch

an

ti

llo n

Organiser les fonctions

Microsoft Power BI / Microsoft Excel BI

397/950

Vincent ISOZ

"Table" de mesures

an

ti

llo n

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:

Vous validez pour obtenir:

ch

Ensuite vous y mettez au moins une mesure:

É

Ensuite vous masquez la colonne Formules:

Microsoft Power BI / Microsoft Excel BI

398/950

llo n

Vincent ISOZ

ti

Ce qui donnera:

É

ch

an

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

Microsoft Power BI / Microsoft Excel BI

399/950

Vincent ISOZ

É

ch

an

ti

llo n

Dossiers et sous-dossiers de mesures

Microsoft Power BI / Microsoft Excel BI

400/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

401/950

É

ch

an

ti

llo n

Vincent ISOZ

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é:

Logique

&&

Comparaison

an

||

Signification Addition Soustraction Multiplication Division Exponentiation Égalité Plus que grand que Plus petit que Plus grand ou égale à Plut petit ou égal à Différent de Concatène deux valeurs de textes Opérateur ET entre deux expressions booléennes Opérateur OU entre deux expressions booléennes Appartenance à une liste Négation

IN

NOT

Exemple 2+3 2–3 2*3 3/2 2^3 2=3 2>3 2<3 2 >= 3 2 <= 3 2<>3 "2" & "3"

Résultat 5 -1 6 1.5 8 FALSE FALSE TRUE FALSE TRUE TRUE 23

(2 = 3) && (1 = 1)

FALSE

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

TRUE

2 IN {1, 2, 3}

TRUE

NOT 2 = 3

TRUE

llo n

Concaténation

Opérateur + * / ^ = > < >= <= <> &

ti

Type Arithmétique

ch

Tableau 3Tableau opérateurs DAX

É

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

llo n

Power BI 2019-10

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

an

ti

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

É

ch

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

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

llo n

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.

an

ti

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

É

ch

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

Microsoft Power BI / Microsoft Excel BI

405/950

Vincent ISOZ

Exercice 3.: Fonction USERCULTURE Power BI 2019-10

llo n

La fonction USERCULTURE est très utilisée dans les multinationales où les rapports doivent être multi-langue. 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.

ch

an

ti

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

É

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

llo n

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). 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…!!!), et surtout dans les Quick Measures DAX (voir page 709).

É

ch

an

ti

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

Microsoft Power BI / Microsoft Excel BI

407/950

Vincent ISOZ

DAX Catégorie Fonctions Logiques Exercice 4.: Fonction IF (+VALUE)

llo n

Power BI 2018-03

É

ch

an

ti

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.

Microsoft Power BI / Microsoft Excel BI

408/950

Vincent ISOZ

Solution

É

ch

Et on y met:

an

ti

llo n

Dans le volet de droite on cliquer sur New Column:

Microsoft Power BI / Microsoft Excel BI

409/950

Vincent ISOZ

Exercice 5.: Fonction IF, OR (+VALUE) Power BI 2018-03

É

ch

an

ti

llo n

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 colonne avec les numéros de semestre.

Microsoft Power BI / Microsoft Excel BI

410/950

Vincent ISOZ

Solution

É

ch

an

ti

llo n

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

Microsoft Power BI / Microsoft Excel BI

411/950

Vincent ISOZ

Exercice 6.: Fonction AND Power BI 2018-03

É

ch

an

ti

llo n

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.

Microsoft Power BI / Microsoft Excel BI

412/950

Vincent ISOZ

Exercice 7.: Fonction SWITCH (pour KPI) Power BI 2018-03

an

ti

llo n

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

É

ch

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

Microsoft Power BI / Microsoft Excel BI

413/950

Vincent ISOZ

Solution

ti

llo n

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

É

ch

an

En cela:

Microsoft Power BI / Microsoft Excel BI

414/950

Vincent ISOZ

DAX Catégorie de Filtres Exercice 8.: Fonction RELATED

llo n

Power BI 2018-03

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

É

ch

an

ti

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

où SourceRemisesClients (avant renommage en csv_SourceRemisesClients) contient:

Microsoft Power BI / Microsoft Excel BI

415/950

É

ch

an

ti

llo n

Vincent ISOZ

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

ti

llo n

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

É

ch

an

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):

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

Microsoft Power BI / Microsoft Excel BI

417/950

llo n

Vincent ISOZ

É

ch

an

ti

Et rappelez-vous que tout du long, nous sommes dans une formule DAX de colonne et non pas de mesure!!!!

Microsoft Power BI / Microsoft Excel BI

418/950

Vincent ISOZ

Exercice 9.: Fonction CALCULATE Power BI 2018-03

É

ch

an

ti

llo n

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 expression booléenne servant de filtre. On peut ainsi, y mettre plusieurs filtres séparés par des points virgules…

Microsoft Power BI / Microsoft Excel BI

419/950

Vincent ISOZ

Solution

ti

llo n

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 :

É

ch

an

Comme on peut le voir on a obtenu le même résultat qu'avec CA _net_Encaissé _2000 :

Microsoft Power BI / Microsoft Excel BI

420/950

Vincent ISOZ

Exercice 10.: Fonctions FILTER et AND dans CALCULATE Power BI 2018-03

llo n

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 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.

É

ch

an

ti

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

Microsoft Power BI / Microsoft Excel BI

421/950

Vincent ISOZ

Solution

llo n

É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( ) :

É

ch

an

ti

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

Microsoft Power BI / Microsoft Excel BI

422/950

Vincent ISOZ

Exercice 11.: Fonctions FILTER et IN dans CALCULATE Power BI 2018-03

ch

an

ti

En reprenant l'exemple vu plus haut:

llo n

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

É

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

ch

an

ti

llo n

Voyons d'abord la solution avec un simple OR:

É

Ou écrit autrement:

Microsoft Power BI / Microsoft Excel BI

424/950

an

ti

llo n

Vincent ISOZ

É

ch

Ou avec l'opérateur IN:

Microsoft Power BI / Microsoft Excel BI

425/950

an

ti

llo n

Vincent ISOZ

É

ch

Ou encore avec CONTAINSROW( ):

Microsoft Power BI / Microsoft Excel BI

426/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

427/950

Vincent ISOZ

Exercice 12.: Fonction FILTER avec FOUND ou LEFT Excel BI 2010 à 2019

É

ch

an

ti

llo n

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 articles de type IBM.

Microsoft Power BI / Microsoft Excel BI

428/950

Vincent ISOZ

Solutions

llo n

La première solution possible est:

ch

an

ti

La deuxième solution possible est:

É

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

É

ch

an

ti

llo n

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

Microsoft Power BI / Microsoft Excel BI

430/950

Vincent ISOZ

Exercice 14.: Fonction ALL Power BI 2018-03

É

ch

an

ti

llo n

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 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.

Microsoft Power BI / Microsoft Excel BI

431/950

Vincent ISOZ

Solution

llo n

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) :

an

ti

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

ch

Pour mieux comprendre tentons de présenter le numérateur et le dénominateur séparément : 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

É

ch

an

ti

llo n

Vincent ISOZ

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

llo n

Voici une requête typique très demandée. Comment créer une mesure qui soit indépendante de l'un des slicers (segments) et dépendante ou pas en même temps d'un autre filtre non dynamique?

É

ch

an

ti

Considérons que nous voulons afficher la somme des quantités par Article qui soit filtrable par année, mais aussi avec une colonne qui soit indépendante du filtre choisi pour une année?

Microsoft Power BI / Microsoft Excel BI

434/950

Vincent ISOZ

Solution

llo n

La solution est donnée par:

an

ti

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

É

ch

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!

Microsoft Power BI / Microsoft Excel BI

435/950

Vincent ISOZ

Exercice 16.: Fonction ALLSELECTED Power BI 2018-03

llo n

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

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

ch

Avec:

an

ti

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

Et:

É

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

Microsoft Power BI / Microsoft Excel BI

436/950

llo n

Vincent ISOZ

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:

É

ch

an

ti

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

Microsoft Power BI / Microsoft Excel BI

437/950

Vincent ISOZ

Exercice 17.: Fonction ALLSELECTED avec calcul Power BI 2018-03

É

ch

an

ti

llo n

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

Microsoft Power BI / Microsoft Excel BI

438/950

Vincent ISOZ

É

ch

an

ti

llo n

Solution

Microsoft Power BI / Microsoft Excel BI

439/950

Vincent ISOZ

Exercice 18.: Fonction ALLSELECTED avec colonnes multiples Power BI 2020-02

ch

an

ti

llo n

Considérons la matrice suivante:

É

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

É

ch

an

ti

llo n

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

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

Microsoft Power BI / Microsoft Excel BI

441/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

442/950

Vincent ISOZ

Exercice 19.: Fonction ALLSELECTED et EXCEPT( ) Power BI 2020-02

llo n

Créez une matrice avec un slicer sur les noms des Article qui montre: 1. La quantité vendue par Secteur d'Activité

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

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

É

ch

an

ti

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

Microsoft Power BI / Microsoft Excel BI

443/950

Vincent ISOZ

Solution

llo n

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

ti

Avec d'abord pour rappel:

ch

Et:

an

Et enfin:

Et:

É

Et:

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

Microsoft Power BI / Microsoft Excel BI

444/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

445/950

Vincent ISOZ

Exercice 20.: Fonction ALLSELECTED et ISONORAFTER pour les Running Total Power BI 2017-04

llo n

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( ) le calcul de running Total c'est considérablement simplifié.

ti

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

É

ch

an

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):

Microsoft Power BI / Microsoft Excel BI

446/950

an

ti

llo n

Vincent ISOZ

É

ch

Une fois ceci fait, on prend:

Microsoft Power BI / Microsoft Excel BI

447/950

ch

an

ti

llo n

Vincent ISOZ

É

Et on paramètre comme suit:

Microsoft Power BI / Microsoft Excel BI

448/950

ch

an

ti

llo n

Vincent ISOZ

É

On valide pour obtenir:

Microsoft Power BI / Microsoft Excel BI

449/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

450/950

Vincent ISOZ

Exercice 21.: Fonction DISTINCT Power BI 2018-03

É

ch

an

ti

llo n

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.

Microsoft Power BI / Microsoft Excel BI

451/950

Vincent ISOZ

Solution

É

ch

an

ti

llo n

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

Microsoft Power BI / Microsoft Excel BI

452/950

Vincent ISOZ

Exercice 22.: Fonction ALLEXCEPT Power BI 2018-03

llo n

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.

É

ch

an

ti

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

Microsoft Power BI / Microsoft Excel BI

453/950

Vincent ISOZ

Solution

É

ch

an

ti

llo n

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

Microsoft Power BI / Microsoft Excel BI

454/950

Vincent ISOZ

Exercice 23.: Fonction HASONEVALUE avec application pour formatage Power BI 2018-03

llo n

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

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… 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

3. Millions

an

4. ou autre…

ti

2. Milliers

É

ch

Essayez de deviner comment faire cela…

Microsoft Power BI / Microsoft Excel BI

455/950

Vincent ISOZ

Solution

an

ti

llo n

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):

É

ch

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

Microsoft Power BI / Microsoft Excel BI

456/950

an

ti

llo n

Vincent ISOZ

É

ch

Ensuite, nous créons la mesure suivante:

Microsoft Power BI / Microsoft Excel BI

457/950

ti

llo n

Vincent ISOZ

É

ch

an

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

Microsoft Power BI / Microsoft Excel BI

458/950

Vincent ISOZ

Exercice 24.: Fonction HASONEVALUE vs ISFILTERED vs HASONEFILTER Power BI 2019-10

É

ch

an

ti

llo n

Considérons la matrice suivante:

Microsoft Power BI / Microsoft Excel BI

459/950

É

ch

an

ti

llo n

Vincent ISOZ

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

É

ch

an

ti

llo n

Vincent ISOZ

Maintenant ajoutons la mesure DAX suivante:

Microsoft Power BI / Microsoft Excel BI

461/950

ch

an

ti

llo n

Vincent ISOZ

É

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

É

ch

an

ti

llo n

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

Microsoft Power BI / Microsoft Excel BI

463/950

Vincent ISOZ

É

ch

an

ti

llo n

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

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

É

ch

an

Et cochez quelques articles… :

ti

llo n

Vincent ISOZ

Tout est dit…! Microsoft Power BI / Microsoft Excel BI

465/950

Vincent ISOZ

Exemple 25.: Requête ALLNOBLANKROW Power BI 2018-03

llo n

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 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…

ch

an

ti

Considérons notre schéma habituel suivant:

É

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

ch

an

ti

llo n

Vincent ISOZ

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

É

ch

an

ti

llo n

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:

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

an

ti

llo n

Considérons le schéma suivant:

É

ch

Et créons la matrice (tableau croisé dynamique) suivant sur un Dashboard:

Microsoft Power BI / Microsoft Excel BI

469/950

É

ch

an

ti

llo n

Vincent ISOZ

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

Microsoft Power BI / Microsoft Excel BI

470/950

É

ch

an

ti

llo n

Vincent ISOZ

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

É

ch

an

ti

llo n

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

Microsoft Power BI / Microsoft Excel BI

472/950

Vincent ISOZ

Exercice 27.: Fonction SELECTEDVALUE Power BI 2018-03

É

ch

an

ti

llo n

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.

Microsoft Power BI / Microsoft Excel BI

473/950

Vincent ISOZ

Solution

an

ti

llo n

D'abord nous créons une table manuelle:

É

ch

Et nous préparons ensuite un Dashboard comme ci-dessous:

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

llo n

Vincent ISOZ

an

Et respectivement:

ti

Ce qui donnera bien:

É

ch

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

Microsoft Power BI / Microsoft Excel BI

475/950

Vincent ISOZ

Exercice 28.: Fonction INTERSECT avec SUM et CALCULATE Power BI 2019-10

llo n

Nous allons vouloir ici faire un calcul d'un type très rare. 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.

an

ti

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

É

ch

Avec la table de calendrier suivante:

Microsoft Power BI / Microsoft Excel BI

476/950

an

ti

llo n

Vincent ISOZ

É

ch

Et nous ferons attention à ne pas lier les deux tables entre elles:

Microsoft Power BI / Microsoft Excel BI

477/950

an

ti

llo n

Vincent ISOZ

É

ch

Nou souhaiterions faire un analyse temporelle de ventes entre les deux tables sans les lier. Comment procéder?

Microsoft Power BI / Microsoft Excel BI

478/950

Vincent ISOZ

Solution

É

ch

an

ti

llo n

On crée la mesure suivante et la matrice suivante:

Microsoft Power BI / Microsoft Excel BI

479/950

Vincent ISOZ

Exercice 29.: Fonction TREATAS avec SUM et CALCULATE Power BI 2018-02

llo n

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 relations physiques!).

Notez que TREATAS( ) fait la même chose que INTERSECT( ) à la différene de l'ordre dans lesquels s'écrivent les arguments!

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!

ti

On pourrait refaire comme exercice, le même que nous avons fait avec la fonction INTERSECT( ) mais cela n'apporterait aucune plus value! Faisons quelque chose de plus exotique!

É

ch

an

Considérons que nous avons créé le table suivante en DAX (que nous aurions pu tout aussi bien créer avec Power Query!!!):

Microsoft Power BI / Microsoft Excel BI

480/950

an

ti

llo n

Vincent ISOZ

É

ch

Et le rapport suivant dans Power BI:

Microsoft Power BI / Microsoft Excel BI

481/950

ti

llo n

Vincent ISOZ

É

ch

an

Nous souhaiterions avoir une seule matrice et basculer de l'une à l'autre seulement via le slicer!

Microsoft Power BI / Microsoft Excel BI

482/950

Vincent ISOZ

Solution

llo n

On crée la mesure suivante:

É

ch

an

ti

Et ensuite on change les champs de la matrice comme visible ci-dessous:

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

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

484/950

Vincent ISOZ

Exercice 30.: Fonction ISINSCOPE Power BI 2018-02

an

ti

llo n

Je ne connais pas d'application à cette fonction en-dehors des visuels. Pour comprendre de quoi il s'agit, construisons le graphique suivant:

É

ch

Maintenant nous souhaitons mettre différentes lignes d'objectifs suivant le niveau de profondeur (drill down), que nous faisons dans le graphique.

Microsoft Power BI / Microsoft Excel BI

485/950

Vincent ISOZ

Solution

llo n

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…!):

ch

an

ti

Ensuite, on change de graphique:

É

Et on ajoute notre mesure dans le champ Line Values. Ce qui donne:

Microsoft Power BI / Microsoft Excel BI

486/950

ti

llo n

Vincent ISOZ

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!

É

ch

an

Et si on fait un drill-down:

Microsoft Power BI / Microsoft Excel BI

487/950

Vincent ISOZ

Etc.

an

ti

llo n

Et encore und drill-down:

É

ch

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!

Microsoft Power BI / Microsoft Excel BI

488/950

Vincent ISOZ

DAX Catégorie Fonctions Statistiques Exercice 31.: Fonction SUM

llo n

Power BI 2018-03

La fonction SUM(), comme avec Microsoft Excel permet de calculer le total d'une colonne par exemple.

É

ch

an

ti

Nous allons déterminer la quantité totale de pièces commandées puis la somme totale par pays.

Microsoft Power BI / Microsoft Excel BI

489/950

Vincent ISOZ

Solution

llo n

Pour commencer, nous allons créer la variable Quantite_clean qui va contenir les quantités nettoyées en cliquant sur Modeling/New Column:

É

ch

an

ti

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) :

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

llo n

Vincent ISOZ

É

ch

an

ti

On peut ajouter aussi ce calcul en tant que colonne DAX:

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

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

492/950

Vincent ISOZ

Exercice 32.: Fonction SUMX (+RELATED) Power BI 2018-03

É

ch

an

Et donc la table suivante:

ti

llo n

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

Microsoft Power BI / Microsoft Excel BI

493/950

ti

llo n

Vincent ISOZ

É

ch

an

On souhaite y rajouter une colonne qui affiche la somme des Quantités_Clean utilisant SUMX( ) et RELATED( ).

Microsoft Power BI / Microsoft Excel BI

494/950

Vincent ISOZ

Solution

ch

an

ti

llo n

La solution est donnée:

É

On peut complexifier l'exemple en faisant un calcul:

Microsoft Power BI / Microsoft Excel BI

495/950

an

ti

llo n

Vincent ISOZ

Fonctions AGGREGATEX SUMX AVERAGEX MINX MAXX COUNTX COUNTAX

É

ch

Notez que la même technique s'applique pour:

Microsoft Power BI / Microsoft Excel BI

496/950

Vincent ISOZ

Exercice 33.: Fonction SUMX (+FILTER +AND) Power BI 2018-03

É

ch

an

ti

llo n

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 la colonne qui va être agrégé en somme. C'est une fonction itérative comme les autres fonctions en X (comme suffixe) …

Microsoft Power BI / Microsoft Excel BI

497/950

Vincent ISOZ

Solution

llo n

Exemple d'utilisation simple pour réaliser la somme totale des ventes Quantité * prix de toutes les commandes :

É

ch

an

ti

On a créé la mesure Somme_des_ventes_brutes qui vaut (glissez et déposez la mesure) :

Ou un autre cas très simple avec les quantités:

Microsoft Power BI / Microsoft Excel BI

498/950

an

ti

llo n

Vincent ISOZ

É

ch

Exemple d'utilisation combinée avec FILTER( ):

On peut ensuite glisser et déposer la mesure comme suit :

Microsoft Power BI / Microsoft Excel BI

499/950

an

ti

llo n

Vincent ISOZ

É

ch

En rajoutant à cette table la colonne pays, les ventes ou chiffre d'affaires de l'an 2000 par pays :

Microsoft Power BI / Microsoft Excel BI

500/950

ti

llo n

Vincent ISOZ

É

ch

an

Nous allons finalement déterminer la part du chiffre d'affaires net (en considérant cette fois les 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( ):

Microsoft Power BI / Microsoft Excel BI

501/950

Vincent ISOZ

Bien évidemment, nous avons aussi la fonction OR( )!

an

ti

llo n

On peut enfin mettre la mesure avec pays et surtout avec la colonne Facture payée pour constater qu'effectivement notre filtre à bien fonctionné :

Fonctions AGGREGATEX SUMX AVERAGEX MINX MAXX COUNTX COUNTAX

É

ch

Notez que la même technique s'applique aux autres fonctions d'agrégation:

Microsoft Power BI / Microsoft Excel BI

502/950

Vincent ISOZ

Exercice 34.: Interlude sur les SUM et SUMX Power BI 2018-03

llo n

Nous savons qu'il est facile en ajoutant un simple champ dans un dashboard Power BI d'obtenir:

ch

an

ti

Mais voyons qu'on peut obtenir la même chose autrement avec une mesure DAX:

É

Ou encore autrement avec une autre mesures DAX:

Microsoft Power BI / Microsoft Excel BI

503/950

Vincent ISOZ

an

ti

Ou encore autrement avec un colonne DAX:

llo n

Ou encore avec une autre mesure DAX gérant potentiellement les filtres:

É

ch

Remarquons que rien ne nous empêche de faire une colonne qui affiche toujours le grand total:

Et on peut faire un ratio:

Microsoft Power BI / Microsoft Excel BI

504/950

llo n

Vincent ISOZ

É

ch

an

ti

Ou faire un mesure DAX qui ne dépend pas d'un segement spécifique:

Microsoft Power BI / Microsoft Excel BI

505/950

Vincent ISOZ

Exercice 35.: Fonction AVERAGE Power BI 2018-03

É

ch

an

ti

llo n

Cette fonction tout simplement permet de réaliser la moyenne.

Microsoft Power BI / Microsoft Excel BI

506/950

Vincent ISOZ

Premier cas

É

ch

an

ti

llo n

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.

Microsoft Power BI / Microsoft Excel BI

507/950

Vincent ISOZ

Solution

llo n

Créer la mesure de la moyenne et la faire glisser dans un objet visuel Table :

É

ch

an

ti

On peut facilement après coup y ajouter la colonne des pays

Microsoft Power BI / Microsoft Excel BI

508/950

É

ch

an

ti

llo n

Vincent ISOZ

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!

É

ch

an

ti

llo n

L'idée est comment avoir la moyenne par produit en excluant les quantités qui sont à "zéro".

Microsoft Power BI / Microsoft Excel BI

510/950

Vincent ISOZ

É

ch

an

ti

llo n

Solution

Microsoft Power BI / Microsoft Excel BI

511/950

Vincent ISOZ

Troisième cas

llo n

Considérons le scénario suivant:

On voit qu'il y au un problème. La moyenne n'est évidemment pas la moyenne des moyennes. Nous savons pourqouoi par ailleurs

É

ch

an

ti

Comme résoudre ceci?

Microsoft Power BI / Microsoft Excel BI

512/950

Vincent ISOZ

Solution

É

ch

an

ti

llo n

La solution est traité un peu plus bas à la page 517.

Microsoft Power BI / Microsoft Excel BI

513/950

Vincent ISOZ

Exercice 36.: Fonction AVERAGEX Power BI 2018-03

llo n

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 une expression renvoyant une colonne sur laquelle sera effectuée la moyenne.

É

ch

an

ti

Calculer la moyenne des ventes brutes par exemple est impossible à réaliser avec AVERAGE( ) donc il faut utiliser AVERAGEX( ) qui elle est itérative.

Microsoft Power BI / Microsoft Excel BI

514/950

Vincent ISOZ

llo n

Solution

É

ch

an

ti

Puis on glisse et on dépose la mesure dans une table comme ci-dessous :

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

É

ch

an

ti

llo n

Fonctions AGGREGATEX SUMX AVERAGEX MINX MAXX COUNTX COUNTAX

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

É

ch

an

ti

llo n

Si nous considérons le tableau croisé dynamique suivant (un classique de Microsoft Excel aussi!):

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

É

ch

an

ti

llo n

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!):

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

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

519/950

Vincent ISOZ

Exercice 38.: Fonction MIN Power BI 2018-03

É

ch

an

ti

llo n

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 scalaires et non des colonnes.

Microsoft Power BI / Microsoft Excel BI

520/950

Vincent ISOZ

Solution

an

ti

llo n

Trouver la date de la première commande :

ch

Cas de deux arguments, par exemple déterminer la valeur minimale entre les ventes brutes 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

ch

an

ti

En affichant les résultats côte à côte on a ceci :

llo n

Le minimum :

É

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

É

ch

an

ti

llo n

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 déterminée le minimum.

Microsoft Power BI / Microsoft Excel BI

523/950

Vincent ISOZ

Solution

llo n

La facture, la moins élevée :

ti

Affichage du résultat :

Notez que la même technique s'applique aux autres fonctions d'agrégation:

É

ch

an

Fonctions AGGREGATEX SUMX AVERAGEX MINX MAXX COUNTX COUNTAX

Microsoft Power BI / Microsoft Excel BI

524/950

Vincent ISOZ

Exercice 40.: Fonction MAX Power BI 2018-03

llo n

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.

É

ch

an

ti

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.

Microsoft Power BI / Microsoft Excel BI

525/950

Vincent ISOZ

Solutions Commençons par la date de la plus récente des commandes ?

an

ti

llo n

En affichage ça donne ceci :

É

ch

Et maintenant l'affichage par article de la date de fin de mois de la dernière commande:

Microsoft Power BI / Microsoft Excel BI

526/950

Vincent ISOZ

Exercice 41.: Fonction MAXX Power BI 2018-03

llo n

Fonction en « X » de MAX. voir plus haut la définition des fonctions en « X » avec SUMX, AVERAGEX, MINX …

É

ch

an

ti

Calculez le rabais le plus élévé dans une simple carte et les rabais les plus élévés par pays dans une table!

Microsoft Power BI / Microsoft Excel BI

527/950

Vincent ISOZ

Solutions

llo n

Calculer le rabais le plus élevé jamais accordé :

an

ti

Dont voici le résultat :

É

ch

On peut afficher le résultat par pays comme ceci :

Microsoft Power BI / Microsoft Excel BI

528/950

Vincent ISOZ

Exercice 42.: Calcul de l'étendue pour utilisation conjointe de MAX et MIN

ti

Considérons la simple matrice suivante:

llo n

Power BI 2018-03

É

ch

an

La question est comment calculer l'étendue à l'aide des fonctions MAX( ) et MIN( )?

Microsoft Power BI / Microsoft Excel BI

529/950

Vincent ISOZ

Solution

É

ch

an

ti

llo n

La réponse est simplement:

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

an

ti

llo n

Un autres cas très courant de l'utilisation de MAX( ) et MIN( ) est relative au slicer (segment suivant) de Power BI:

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.

É

ch

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!

Microsoft Power BI / Microsoft Excel BI

531/950

Vincent ISOZ

Solution

an

ti

llo n

Voyon déjà pour la date de fin sélectionnée:

É

ch

Et c'est le même système pour la date de début:

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

É

ch

an

ti

llo n

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.

Microsoft Power BI / Microsoft Excel BI

533/950

Vincent ISOZ

Solution Le nombre de commandes réalisées :

É

ch

an

ti

llo n

On peut ensuite ajouter la colonne Pays comme ceci pour afficher le nombre de commandes par Pays :

Microsoft Power BI / Microsoft Excel BI

534/950

Vincent ISOZ

Exercice 45.: Fonction COUNT, CALCULATE et USERELATIONSHIP Power BI 2018-03

ch

an

ti

llo n

Considérons (cas hypeerrrrrrr important et très très demandé dans la pratique!!!!!):

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

an

ti

llo n

Vincent ISOZ

É

ch

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é:

Microsoft Power BI / Microsoft Excel BI

536/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

537/950

Vincent ISOZ

Solution La solution consiste à créer la mesure suivante:

É

ch

an

ti

llo n

Ce qui donne bien:

Microsoft Power BI / Microsoft Excel BI

538/950

Vincent ISOZ

Exercice 46.: Fonction COUNTX Power BI 2018-03

É

ch

an

ti

llo n

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.

Microsoft Power BI / Microsoft Excel BI

539/950

Vincent ISOZ

Solution

llo n

Le nombre de commandes réalisées en 2000:

an

ti

On peut ensuite ajouter la colonne Pays comme ceci pour afficher le nombre de commandes par Pays mais cette fois en 2000 :

Fonctions AGGREGATEX SUMX AVERAGEX MINX MAXX COUNTX COUNTAX

É

ch

Notez que la même technique s'applique aux autres fonctions d'agrégation:

Microsoft Power BI / Microsoft Excel BI

540/950

Vincent ISOZ

Exercice 47.: Fonction COUNTA Power BI 2018-03

É

ch

an

ti

llo n

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).

Microsoft Power BI / Microsoft Excel BI

541/950

Vincent ISOZ

Solution

É

ch

an

ti

llo n

Compter le nombre de lignes non vides de la colonne Quantité :

Microsoft Power BI / Microsoft Excel BI

542/950

Vincent ISOZ

Exercice 48.: Fonction COUNTAX Power BI 2018-03

É

ch

an

ti

llo n

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.

Microsoft Power BI / Microsoft Excel BI

543/950

Vincent ISOZ

Solution

llo n

Compter le nombre de commande provenant du secteur des Assurances :

an

ti

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 :

É

ch

Notez que la même technique s'applique aux autres fonctions d'agrégation: 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

É

ch

an

ti

llo n

Cette fonction permet de compter de lignes contenues dans une table fournie en argument.

Microsoft Power BI / Microsoft Excel BI

545/950

Vincent ISOZ

Solution

llo n

Simple utilisation : compter le nombre de ligne ou de commande en 2001

ti

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

É

ch

an

Quand on affiche la mesure on obtient :

Microsoft Power BI / Microsoft Excel BI

546/950

Vincent ISOZ

Exercice 50.: Fonction COUNTBLANK Power BI 2018-12

llo n

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( ).

ch

an

ti

Comme cas pratique, rappelons que nous avons la table suivante:

É

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

an

ti

llo n

La solution consiste simplement à créer la mesure suivante:

É

ch

On peut obtenir le même résultat avec:

Microsoft Power BI / Microsoft Excel BI

548/950

Vincent ISOZ

Exercice 51.: Fonction DISTINCTCOUNT Power BI 2018-03

É

ch

an

ti

llo n

Cette fonction permet de compter le nombre de valeurs distinctes contenues dans une colonne fournie en argument.

Microsoft Power BI / Microsoft Excel BI

549/950

Vincent ISOZ

Solution

É

ch

an

ti

llo n

Déterminer le nombre de secteurs d'activité d'où proviennent les commandes :

Microsoft Power BI / Microsoft Excel BI

550/950

Vincent ISOZ

Exercice 52.: Fonction PERCENTILEX.INC Power BI 2018-03

É

ch

an

ti

llo n

Nous avons vu à la page 374 comment créer une table de centiles en DAX:

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

É

ch

an

ti

llo n

La solution est donnée par:

É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????

ch

an

ti

llo n

Pour cela on construit d'abord la table suivante:

É

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

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

554/950

Vincent ISOZ

Exercice 53.: Fonction PERCENTILE.INC Power BI 2018-03

É

ch

an

ti

llo n

Nous voulons dans un carte affichier le 10ème centile (inclus) des Quantités vendues!

Microsoft Power BI / Microsoft Excel BI

555/950

Vincent ISOZ

Solution

É

ch

an

ti

llo n

La solution consiste à créer la mesure DAX suivante et la mettre dans une carte comme visible ci-dessous:

Microsoft Power BI / Microsoft Excel BI

556/950

Vincent ISOZ

Exercice 54.: Fonction TOPN simple Power BI 2018-03

llo n

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 : -

Un entier désignant les n premiers ou derniers éléments

-

Une table

-

Une colonne selon laquelle la table doit être ordonnée

-

Finalement le type d'ordre DESC ou ASC

É

ch

an

ti

Nous souhaiterions afficher dans un TCD la somme des trois plus grandes ventes par Quantité pour un Article donné.

Microsoft Power BI / Microsoft Excel BI

557/950

Vincent ISOZ

Solutions

ti

llo n

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):

É

ch

an

Ou une manière équivalente ne nécessitant pas de mesure DAX:

Microsoft Power BI / Microsoft Excel BI

558/950

Vincent ISOZ

Exercice 55.: Fonction TOPN dans calcul Power BI 2018-03

llo n

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 : -

Un entier désignant les n premiers ou derniers éléments

-

Une table

-

Une colonne selon laquelle la table doit être ordonnée

-

Finalement le type d'ordre DESC ou ASC

É

ch

an

ti

Nous souhaitons calculer la part des trois premières commandes sur le total des commandes en valeur (Quantité * Prix à l'unité).

Microsoft Power BI / Microsoft Excel BI

559/950

Vincent ISOZ

Solution

llo n

Pour répondre à l'exercice, nous écrirons:

É

ch

an

ti

L'affichage peut se faire par Pays dans ce cas, ce serait la part des 3 premiers par Pays :

Microsoft Power BI / Microsoft Excel BI

560/950

Vincent ISOZ

Exercice 56.: Fonction TOPN dans calcul avec paramètre dynamique Power BI 2018-03

É

ch

an

ti

llo n

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 grandes quantités vendues via un paramètre.

Microsoft Power BI / Microsoft Excel BI

561/950

Vincent ISOZ

Solution

llo n

On crée d'abord un paramère:

ch

an

ti

Avec les paramètres:

É

On a alors automatiquement un segement qui apparaît à l'écran:

Microsoft Power BI / Microsoft Excel BI

562/950

llo n

Vincent ISOZ

É

ch

an

ti

Il ne reste plus qu'à écrire la fonction DAX correspondante:

Microsoft Power BI / Microsoft Excel BI

563/950

Vincent ISOZ

Exercice 57.: Fonction TOPN en tant que requête Power BI 2018-03

É

ch

an

ti

llo n

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:

Microsoft Power BI / Microsoft Excel BI

564/950

Vincent ISOZ

Exercice 58.: Fonction RANKX simple avec ALL( ) Power BI 2018-03

É

ch

an

ti

llo n

Pour découvrir RANKX( ) considérons la table suivante:

Comment y rajouter une colonne des rangs des clients ?

Microsoft Power BI / Microsoft Excel BI

565/950

Vincent ISOZ

Solution

É

ch

an

ti

llo n

La solution consiste à créer la mesure suivante (après avoir trié la colonne quantité Somme Quantité DAX dans l'ordre décroissant!):

Notez la différence entre le paramètre dense et skip:

Microsoft Power BI / Microsoft Excel BI

566/950

llo n

Vincent ISOZ

ti

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 différence qu'il faudrait d'abord faire un groupement:

É

ch

an

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:

Microsoft Power BI / Microsoft Excel BI

567/950

ch

an

ti

llo n

Vincent ISOZ

É

Et ensuite retirer les 2 premières mesures DAX du tableau pour avoir finalement:

Microsoft Power BI / Microsoft Excel BI

568/950

llo n

Vincent ISOZ

É

ch

an

ti

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).

Microsoft Power BI / Microsoft Excel BI

569/950

Vincent ISOZ

Exercice 59.: Fonction RANK.EQ Power BI 2018-03

ch

an

ti

llo n

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:

É

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

ch

an

ti

llo n

D'abord nous créons la table suivante:

É

Et enfin nous créons la colonne DAX suivante pour arriver à notre résultat:

Microsoft Power BI / Microsoft Excel BI

571/950

ch

an

ti

llo n

Vincent ISOZ

É

Ce type de colonnes peut typiquement être utilisé comme colonne de tri dans les segments (slicers!).

Microsoft Power BI / Microsoft Excel BI

572/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

573/950

Vincent ISOZ

DAX Catégorie Fonctions de Temps Exercice 60.: Fonctions TODAY et NOW

llo n

Power BI 2018-03

Les fonctions TODAY( ) et NOW( ) sont particulièrement utilisées en DAX pour: •

Les filtres que nous verrons plus loin



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)

ti

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( ).

É

ch

an

PS: Notez que ces fonctions ne s'actualisent que si et seulement si on clique sur le bout Refresh de Power BI!

Microsoft Power BI / Microsoft Excel BI

574/950

Vincent ISOZ

Solutions

llo n

Voyons le premier cas:

an

Et le troisième:

ti

Et le deuxième:

É

ch

Ou encore avec UTCNOW( ):

Microsoft Power BI / Microsoft Excel BI

575/950

Vincent ISOZ

Exercice 61.: Fonction WEEKDAY Power BI 2018-03

É

ch

an

ti

llo n

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

Microsoft Power BI / Microsoft Excel BI

576/950

Vincent ISOZ

Exercice 62.: Fonction YEAR Power BI 2018-03

llo n

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

an

ti

Sinon voici un exemple combinant TODAY( ), YEAR( ), CALCULATE( ) et SUM( ):

É

ch

Ou de manière équivalente avec FILTER( ) dont nous détaillerons plus loin à la page 421 les spécificités:

Microsoft Power BI / Microsoft Excel BI

577/950

Vincent ISOZ

Exercice 63.: Fonction MONTH Power BI 2019-10

É

ch

an

ti

llo n

Un exemple connu et fameux d'application est déjà donné à la page 359.

Microsoft Power BI / Microsoft Excel BI

578/950

Vincent ISOZ

Exercice 64.: Fonction EOMONTH Power BI 2019-09

É

ch

an

ti

llo n

Un exemple connu et fameux d'application est déjà donné à la page 359.

Microsoft Power BI / Microsoft Excel BI

579/950

Vincent ISOZ

Exercice 65.: Fonction DAY Power BI 2019-10

É

ch

an

ti

llo n

Un exemple connu et fameux d'application est déjà donné à la page 359.

Microsoft Power BI / Microsoft Excel BI

580/950

Vincent ISOZ

Exercice 66.: Fonction DATE et SUM et CALCULATE Power BI 2019-09

an

ti

llo n

Considérons les deux tables suivantes, d'abord la table tblXLSprincipale:

É

ch

Et la table calendrier tblCalendar suivante

Microsoft Power BI / Microsoft Excel BI

581/950

É

ch

an

Avec respectivement la relation:

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

582/950

an

ti

llo n

Vincent ISOZ

É

ch

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!

Microsoft Power BI / Microsoft Excel BI

583/950

Vincent ISOZ

É

ch

an

ti

llo n

Solution

Microsoft Power BI / Microsoft Excel BI

584/950

Vincent ISOZ

Exercice 67.: Fonctions YEARFRAC et INT et TODAY Power BI 2019-09

an

ti

llo n

Considérons la table suivante des clients:

É

ch

Et le besoin suivant (très utile dans de nombreux domaines du marketing, de l'ingénierie, de la 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:

É

ch

an

ti

llo n

Ce qui donnera:

Microsoft Power BI / Microsoft Excel BI

586/950

Vincent ISOZ

Exercice 68.: Fonction DATEDIFF Power BI 2018-03

llo n

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 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.

É

ch

an

ti

Considérons que nous souhaitons calculer le nombre de jours entre les deux dates suivantes:

Microsoft Power BI / Microsoft Excel BI

587/950

Vincent ISOZ

Solution

É

ch

an

ti

llo n

La solution est extrêmement simple:

Microsoft Power BI / Microsoft Excel BI

588/950

Vincent ISOZ

Exercice 69.: Fonctions PREVIOUSDAY et NEXTDAY Power BI 2018-03

llo n

Pour étudier la fonction PREVIOUSDAY( ) (et par analogie aussi avec NEXTDAY( ) ), on conseillera fortement au lecteur de travailler avec le fichier Microsoft Excel suivant:

ch

an

ti

Qui contient:

É



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

llo n

Vincent ISOZ

É

ch

an

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 jour d'avant mais aussi du jour d'après!

Microsoft Power BI / Microsoft Excel BI

590/950

Vincent ISOZ

Solution

ch

an

ti

llo n

Nous créons une mesure d'abord avec le jour d'avant utilisant la fonction PREVIOUSDAY( ):

É

Ajoutons-y maintenant avec le jour d'après avec NEXTDAY( ):

Microsoft Power BI / Microsoft Excel BI

591/950

ch

an

ti

llo n

Vincent ISOZ

É

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

llo n

Pour étudier la fonction PREVIOUSMONTH ( ) (et par analogie aussi avec NEXTMONTH( ) ), on conseillera fortement au lecteur de travailler avec le fichier Microsoft Excel suivant:

ch

an

ti

Qui contient:

É



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

llo n

Vincent ISOZ

É

ch

an

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 mois d'avant mais aussi du mois d'après!

Microsoft Power BI / Microsoft Excel BI

594/950

Vincent ISOZ

Solution

É

ch

an

ti

llo n

Nous créons une mesure d'abord avec le mois d'avant utilisant la fonction PREVIOUSMONTH( ):

Ajoutons-y maintenant avec le mois d'après avec NEXTMONTH( ):

Microsoft Power BI / Microsoft Excel BI

595/950

ch

an

ti

llo n

Vincent ISOZ

É

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

llo n

Pour étudier la fonction PREVIOUSQUARTER( ) (et par analogie aussi avec NEXTQUARTER( ) ), on conseillera fortement au lecteur de travailler avec le fichier Microsoft Excel suivant:

ch

an

ti

Qui contient:

É



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

ti

llo n

Ensuite avec la fonction CALENDARAUTO( ), on demandera au lecteur de créer un table Calendrier et de la lier comme ci-dessous:

É

ch

an

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!

Microsoft Power BI / Microsoft Excel BI

598/950

Vincent ISOZ

Solution

ch

an

ti

llo n

Nous créons une mesure d'abord avec l'année d'avant utilisant la fonction PREVIOUSQUARTER( ):

É

Ajoutons-y maintenant le trimestre d'après avec NEXTQUARTER( ):

Microsoft Power BI / Microsoft Excel BI

599/950

an

ti

llo n

Vincent ISOZ

É

ch

Donc tout est conforme à la logique. Après y'a plus qu'à et y faut qu'on…

Microsoft Power BI / Microsoft Excel BI

600/950

Vincent ISOZ

Exercice 72.: Fonctions PREVIOUSYEAR et NEXTYEAR Power BI 2018-03

llo n

Pour étudier la fonction PREVIOUSYEAR( ) (et par analogie aussi avec NEXTYEAR( ) ), on conseillera fortement au lecteur de travailler avec le fichier Microsoft Excel suivant:

ch

an

ti

Qui contient:

É



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

llo n

Vincent ISOZ

É

ch

an

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 de l'année d'avant mais aussi de l'année d'après!

Microsoft Power BI / Microsoft Excel BI

602/950

Vincent ISOZ

Solution

an

ti

llo n

Nous créons une mesure d'abord avec l'année d'avant utilisant la fonction PREVIOUSYEAR( ):

É

ch

Notez ce que nous avons si nous ajoutons le niveau des mois:

Microsoft Power BI / Microsoft Excel BI

603/950

É

ch

an

ti

llo n

Vincent ISOZ

Ajoutons-y maintenant l'année d'après avec NEXTYEAR( ):

Microsoft Power BI / Microsoft Excel BI

604/950

llo n

Vincent ISOZ

É

ch

an

ti

Si nous ouvrons le niveau hiérarchique inférieur, nous obtenons:

Microsoft Power BI / Microsoft Excel BI

605/950

ch

an

ti

llo n

Vincent ISOZ

É

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

llo n

Pour étudier la fonction SAMPERIODLASTYEAR( ), on conseillera fortement au lecteur de travailler avec le fichier Microsoft Excel suivant:

ch

an

ti

Qui contient:

É



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

llo n

Vincent ISOZ

É

ch

an

ti

Nous souhaiterions dans un Dashboard afficher les lignes des dates (jusqu'au niveau Mois) avec le Prix total avec rabais mais aussi avec le Prix total avec rabais de la même période anuelle qu'avant!

Microsoft Power BI / Microsoft Excel BI

608/950

Vincent ISOZ

Solution

É

ch

an

ti

llo n

Nous créons simplement:

Microsoft Power BI / Microsoft Excel BI

609/950

Vincent ISOZ

Exercice 74.: Fonction PARALLELPERIOD Power BI 2018-03

llo n

Pour étudier la fonction PARALLELPERIOD( ) on conseillera fortement au lecteur de travailler avec le fichier Microsoft Excel suivant:

ch

an

ti

Qui contient:

É



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

llo n

Vincent ISOZ

É

ch

an

ti

Nous souhaiterions dans un Dashboard afficher les lignes des dates (jusqu'au niveau Mois) avec 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( )!

Microsoft Power BI / Microsoft Excel BI

611/950

Vincent ISOZ

Solution

llo n

D'abord nous recréons la fonction SAMEPERIODLASTYEAR( ) dans une matrice:

an

ti

Maintenant, nous ajoutons PARALLELPERIOD( ):

É

ch

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:

Microsoft Power BI / Microsoft Excel BI

612/950

É

ch

an

ti

llo n

Vincent ISOZ

Non il va falloir mettre la granularité au niveau de la journée pour comprendre:

Microsoft Power BI / Microsoft Excel BI

613/950

É

ch

an

ti

llo n

Vincent ISOZ

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

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

615/950

Vincent ISOZ

Exercice 75.: Fonction DATEADD Power BI 2018-03

ch

an

ti

llo n

Faites-en sorte d'avoir la configuration suivante de votre modèle relationnel:

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

llo n

Vincent ISOZ

É

ch

an

ti

Nous souhaiterions pouvoir avoir dans chaque ligne, la valeur de l'année précédente!

Microsoft Power BI / Microsoft Excel BI

617/950

Vincent ISOZ

Solution

an

ti

llo n

Pour ce faire il "suffit"… "simplement"… de créer la mesure suivante:

ch

où pour rappel, Quantite_clean est basée sur:

É

Ensuite, nous ajoutons la mesure qui nous intéresse:

Microsoft Power BI / Microsoft Excel BI

618/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

619/950

Vincent ISOZ

Exercice 76.: PARALLELPERIOD vs DATEADD vs SAMEPERIODLASTYEAR Power BI 2018-03

llo n

Pour comprendre la différence entre ces trois fonctions on conseillera fortement au lecteur de travailler avec le fichier Microsoft Excel suivant:

ch

an

ti

Qui contient:

É



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

É

ch

an

ti

llo n

Vincent ISOZ

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:

PARALLELPERIOD

Type Seulement l'année précédente Toute période partielle (jour, mois, trimestre, année) anté ou postérieure Seulement les périodes complètes (mois, trimestre, année) anté ou postérieure

llo n

Fonction SAMEPERIODLASTYEAR DATEADD

ti

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( ).

an

Pour comparer les trois il suffira de créer respectivement les trois mesures suivantes:

É

ch

Ce qui donnera au niveau de l'année dans une matrice:

Au niveau deS trimestreS:

Microsoft Power BI / Microsoft Excel BI

622/950

an

ti

llo n

Vincent ISOZ

É

ch

Au niveau des mois:

Microsoft Power BI / Microsoft Excel BI

623/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

624/950

Vincent ISOZ

É

ch

an

ti

llo n

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:

Microsoft Power BI / Microsoft Excel BI

625/950

Vincent ISOZ

Exercice 77.: Fonctions DATESMTD et DATESYTD Power BI 2018-03

llo n

Pour étudier la fonction DATESMTD( ) (et respectivement DATESYTD( )), on conseillera fortement au lecteur de travailler avec le fichier Microsoft Excel suivant:

ch

an

ti

Qui contient:

É



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

llo n

Vincent ISOZ

É

ch

an

ti

Nous souhaiterions dans un Dashboard afficher les lignes des dates avec le Prix total avec rabais mais aussi avec Prix total avec rabais en cumul du jour par mois (MTD) et après de jour par année (YTD)!

Microsoft Power BI / Microsoft Excel BI

627/950

Vincent ISOZ

Solution

É

ch

an

ti

llo n

Nous créons simplement pour le cumul de jour par mois avec DATESMTD( ):

Où la fin de l'année 2000 ressemble à:

Microsoft Power BI / Microsoft Excel BI

628/950

ch

an

ti

llo n

Vincent ISOZ

É

Nous créons simplement pour le cumul de jour par année avec DATESYTD( ):

Microsoft Power BI / Microsoft Excel BI

629/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

630/950

Vincent ISOZ

Exercice 78.: Fonctions FIRSTDATE et LASTDATE

É

ch

an

ti

llo n

Power BI 2018-03

Microsoft Power BI / Microsoft Excel BI

631/950

Vincent ISOZ

Premier cas

llo n

Pour étudier la fonction FIRSTDATE( ) (et respectivement LASTDATE( ), on conseillera fortement au lecteur de travailler avec le fichier Microsoft Excel suivant:

ch



an

ti

Qui contient:

É

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

llo n

Vincent ISOZ

É

ch

an

ti

Nous souhaiterions dans un Dashboard afficher les lignes des numéros de clients, et pour chaque client afficher la date de première commande et dans une autre colonne la date de dernière commande.

Microsoft Power BI / Microsoft Excel BI

633/950

Vincent ISOZ

Solution

É

ch

an

ti

llo n

La solution à la première question sera (pour information la fonction MIN( ) donne exactement le même résultat!!!!):

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

ch

an

ti

llo n

Vincent ISOZ

É

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

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

636/950

Vincent ISOZ

Deuxième cas

llo n

Considérons notre table calendrier simplifiée:

É

ch

an

ti

En utilisant les deux fonctions FIRSTDATE( ) ET LASTDATE( ) faites en sorte que la date de début et de fin correspondent respectivement à la plus ancienne et la plus récente date d'achat de la table:

Microsoft Power BI / Microsoft Excel BI

637/950

Vincent ISOZ

Solution

llo n

La solution consiste à écrire:

an

ti

On trouvera souvent dans la pratique la forme plus complète suivante:

É

ch

Nous verrons plus bas (voir page 813) également un application de LASTDATE( ) pour calculer le moyenne mobile!

Microsoft Power BI / Microsoft Excel BI

638/950

Vincent ISOZ

Exercice 79.: Fonction ENDOFMONTH et CLOSINGBALANCEMONTH Power BI 2018-03

llo n

Pour étudier la fonction ENDOFMONTH( ) (et respectivement CLOSINGBALANCEMONTH( )), on conseillera fortement au lecteur de travailler avec le fichier Microsoft Excel suivant:

ch

an

ti

Qui contient:

É



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

ti

llo n

Ensuite avec la fonction CALENDARAUTO( ), on demandera au lecteur de créer un table Calendrier et de la lier comme ci-dessous:

É

ch

an

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!

Microsoft Power BI / Microsoft Excel BI

640/950

Vincent ISOZ

Solution

É

ch

an

ti

llo n

La solution est simplement pour ENDOFMONTH( ) donnée par:

Et pour CLOSINGBALANCEMONTH( ) (qui est simplement une autre variante d'écriture de ENDOFMONTH( )!!!):

Microsoft Power BI / Microsoft Excel BI

641/950

É

ch

an

ti

llo n

Vincent ISOZ

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

llo n

Les fonctions TOTALXTD( ) où X désigne la périodicité (Mensualité, trimestrialité, annualité) 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 de date obligatoirement continue.

É

ch

an

ti

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.

Microsoft Power BI / Microsoft Excel BI

643/950

Vincent ISOZ

Solution

llo n

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 :

ch

an

ti

Puis il faut ensuite lier cette colonne Date à celle de la Date Commande comme ceci :

É

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

an

ti

llo n

Vincent ISOZ

É

ch

Finalement on obtient le résultat suivant :

Microsoft Power BI / Microsoft Excel BI

645/950

Vincent ISOZ

É

ch

an

ti

llo n

Ou sous forme graphique (c'est plus sympa et parlant!):

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

llo n

Les fonctions TOTALXTD( ) où X désigne la périodicité (mensualité, trimestrialité, annualité) 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 de date obligatoirement continue. Mais elles ont aussi deux autres arguments: 1. Filtre 2. Fin années fiscale

É

ch

an

ti

Pour voir un exemple, rappelons ce que nous avons fait précédemment:

Ou vue en trimestres:

Microsoft Power BI / Microsoft Excel BI

647/950

llo n

Vincent ISOZ

É

ch

an

ti

Considérons maintenant que nous voulons que l'année fiscale termine le 30 Juin, comment changer la formule que nous avions fait?

Microsoft Power BI / Microsoft Excel BI

648/950

Vincent ISOZ

Solution

an

ti

llo n

La solution réside simplement à changer un petit peut la formule en écrivant:

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!

É

ch

Ce se voit évidemment encore mieux si on zoom plus!

Microsoft Power BI / Microsoft Excel BI

649/950

Vincent ISOZ

Exercice 82.: Fonction DATESBETWEEN Power BI 2018-03

llo n

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, une colonne de date, une date de début et une date de fin.

É

ch

an

ti

L'exemple suivant permet de calculer les ventes brutes s'écoulant sur le premier semestre 2003.

Microsoft Power BI / Microsoft Excel BI

650/950

Vincent ISOZ

Solution

llo n

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( ):

an

ti

On peut ensuite afficher le résultat comme ceci :

É

ch

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).

Microsoft Power BI / Microsoft Excel BI

651/950

Vincent ISOZ

Exercice 83.: STARTOFX et ENDOFX Power BI 2018-03

llo n

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 et YEAR.

É

ch

an

ti

Elles sont particulièrement intéressantes combinées notamment avec DATESBETWEEN, comme le montre l'exemple ci-dessous.

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.

É

ch

an

ti

On s'assure que le filtrage suivant est respecté :

llo n

On entre la mesure suivante utilisant donc STARTOFYEAR( ) et ENDOFYEAR( ) :

Microsoft Power BI / Microsoft Excel BI

653/950

Vincent ISOZ

Exercice 84.: Fonction DATESINPERIOD et ENDOFMONTH Power BI 2018-03

ch

an

ti

llo n

Le concept de DATESINPERIOD( ) est similaire mais toutefois un peu différent dans sa philosophie. Pour l'introduire, considérons le schéma suivant:

É

Et la construction suivante d'une matrice (tableau croisé dynamique):

Microsoft Power BI / Microsoft Excel BI

654/950

É

ch

an

ti

llo n

Vincent ISOZ

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

É

ch

an

ti

llo n

La solution consiste donc à créer la mesure DAX suivante:

Microsoft Power BI / Microsoft Excel BI

656/950

Vincent ISOZ

É

ch

an

ti

llo n

Notez les problèmes au niveau des sous-totaux… pour corriger cela il faudrait alors écrire en utilisant HASONEVALUE( ) et BLANK( ):

É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

llo n

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. D'abord rappelons la syntaxe des deux fonctions: •

DATESINPERIOD(,<start_date>,,)



DATESBETWEEN(,<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).

É

ch

an

ti

Maintenant pour comparer la syntaxe des deux, créez la mesure suivante:

Créez la mesure équivalente avec DATESBETWEEN( )! Microsoft Power BI / Microsoft Excel BI

658/950

Vincent ISOZ

Solution

É

ch

an

ti

llo n

La solution est:

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

llo n

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, MONTH, QUATER et YEAR. Donc l'exemple suivant s'applique typiquement aux fonctions: NEXTDAY( )



NEXTMONTH( )



NEXTYEAR( )



PREVIOUSDAY( )



PREVIOUSMONTH( )



PREVIOUSNEXTYEAR ( )

an

ti



É

ch

L'exemple suivant permet de calculer la variation relative entre les ventes mensuelles au cours de l'an 2000.

Microsoft Power BI / Microsoft Excel BI

660/950

Vincent ISOZ

Solution

llo n

La part des ventes mensuelles dans les ventes totales réalisées au cours de l'année utilisant STARTOFYEAR( ) et ENDOFYEAR( ) :

ch

an

ti

La mesure de la variation relative entre les ventes mensuelles (notez l'utilisation des fonctions ISBLANK( ), PREVIOUSMONTH( )) :

É

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

ti

llo n

Vincent ISOZ

É

ch

an

Finalement la visualisation tabulaire donne ceci :

Microsoft Power BI / Microsoft Excel BI

662/950

Vincent ISOZ

Exercice 87.: Fonction FIRSTNONBLANK Power BI 2018-03

ch

an

ti

llo n

Considérons que nous avons importé la table suivante:

É

Et que nous avons le schéma suivant:

Microsoft Power BI / Microsoft Excel BI

663/950

llo n

Vincent ISOZ

É

ch

an

ti

Nous souhaiterions dans la première table rapatrier la première vente de chaque vendeur. Comment faire?

Microsoft Power BI / Microsoft Excel BI

664/950

Vincent ISOZ

Solution

ch

an

ti

llo n

La solution est de créer une colonne DAX avec:

É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

É

ch

an

ti

Ce qui correspond bien au contenu de la table:

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

666/950

Vincent ISOZ

Exercice 88.: Fonction EARLIER Power BI 2019-06

llo n

Nous souhaiterions en DAX: 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



Et enfin… une colonne dans cette dernière table qui fait le cumul temporel

É

ch

an

ti



Microsoft Power BI / Microsoft Excel BI

667/950

Vincent ISOZ

Solution

É

ch

an

ti

llo n

La première étape est simple, nous savons qu'il suffit d'utiliser la fonction SELECTCOLUMNS( ):

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

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

669/950

Vincent ISOZ

an

ti

llo n

Maintenant il nous reste le dernier point, qui est de faire la somme cumulée par date avec la fonction EARLIER( ):

ch

Attention, la fonction EARLIER( ) nécessite soit une colonne de date soit une colonne avec un Index. 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

llo n

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 (et non dans un table d'un rapport!).

É

ch

an

ti

Pour cela nous partirons de notre table TablePrincipale dont nous aurons gardé que les colonne suivantes:

et que nous renommerons TablePrincipale avec SmartIndex. Microsoft Power BI / Microsoft Excel BI

671/950

Vincent ISOZ

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

É

ch

an

ti

llo n

La première solution considérée comme ancienne est donnée par:

Microsoft Power BI / Microsoft Excel BI

672/950

Vincent ISOZ

Solution (méthode "moderne" sans EARLIER( ))

É

ch

an

ti

llo n

La deuxième solution considérée comme moderne est donnée par:

Microsoft Power BI / Microsoft Excel BI

673/950

Vincent ISOZ

Exercice 90.: Mois précédent filtré Power BI 2019-06

llo n

Nous souhaiterions en DAX: 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, afficher la valeur du mois précédent visible dans la matrice

É

ch

an

ti



Microsoft Power BI / Microsoft Excel BI

674/950

Vincent ISOZ

Solution

ch

an

ti

llo n

D'abord on prépare le scénario de base qui ne devrait poser aucune difficulté:

É

Ce qu'on veut c'est le résultat suivant:

Microsoft Power BI / Microsoft Excel BI

675/950

ti

llo n

Vincent ISOZ

É

ch

an

Pour arriver à ce résultat, nous avons écrit la fonction non-triviale suivante:

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

llo n

Power BI 2018-03

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( ) reste à ce jour (et à notre connaissance) indispensable!

an

ti

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!):

É

ch

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!

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…

an

ti

llo n

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!!!):

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!

É

ch

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!!!):

Microsoft Power BI / Microsoft Excel BI

678/950

Vincent ISOZ

an

ti

llo n

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!:

Remarquez que comme il y a des valeurs égales, on échouera ici à faire un lag correct!!!

É

ch

Ensuite, on crée une colonne (oui ici le nom choisi laisse à désirer…) avec la formule suivante:

Microsoft Power BI / Microsoft Excel BI

679/950

ti

llo n

Vincent ISOZ

É

ch

an

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:

Microsoft Power BI / Microsoft Excel BI

680/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

681/950

Vincent ISOZ

Exercice 92.: Fonction LOOKUPVALUE pour sélection de scénarios Power BI 2018-03

an

ti

llo n

Considérons la table manuelle suivante:

É

ch

Et le slicer, carte et tableau correspondant:

Nous souhaiterions une colonne Prix total avec rabais avec taxe.

Microsoft Power BI / Microsoft Excel BI

682/950

Vincent ISOZ

Solution

É

ch

an

ti

llo n

La solution utilise donc LOOKUPVALUE( ) mais aussi la non moins fameuse fonction SELECTEDVALUE( ):

Microsoft Power BI / Microsoft Excel BI

683/950

Vincent ISOZ

Exercice 93.: Fonction PATH Power BI 2018-03

É

ch

an

ti

llo n

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):

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

É

ch

an

ti

llo n

Solution

Microsoft Power BI / Microsoft Excel BI

685/950

Vincent ISOZ

Exercice 94.: Fonction LOOKUPVALUE et PATHITEM Power BI 2018-03

É

ch

an

ti

llo n

Considérons la table DAX précédemment construite:

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

É

ch

an

ti

llo n

Faites-cela pour les 2 premiers niveaux mais en reprenant le nom des clients au lieu du numéro de hiérarchie!

Microsoft Power BI / Microsoft Excel BI

687/950

Vincent ISOZ

Solution

É

ch

an

ti

llo n

La solution pour le premier niveau sera:

Et pour le deuxième niveau:

Microsoft Power BI / Microsoft Excel BI

688/950

É

ch

an

ti

llo n

Vincent ISOZ

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!

llo n

Exercice 95.: Fonction FORMAT (+WEEKDAY, ADDCOLUMNS et YEAR et DAY( ) ) Power BI 2018-03

Nous voulons rajouter dans la table calendrier, de nombreuses informations complémentaires comme le nom du mois, le nom du jour, le trimestre, etc.

É

ch

an

ti

Procédez comme demandé en utilisant les fonctions CALENDAR( ), FORMAT( ) et WEEKDAY( ) et la fonction de création de table ADDCOLUMNS( ).

Microsoft Power BI / Microsoft Excel BI

690/950

Vincent ISOZ

ti

llo n

Solution

an

Ou une version alternative que nous vous autorisons à copier/coller:

É

ch

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" ), "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

Description

"General Number"

Displays number with no thousand separators.

"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.

"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"

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

ti

llo n

Spécification Format

Uses standard scientific notation, providing two significant digits.

"Yes/No"

Displays No if number is 0; otherwise, displays Yes.

ch

"Scientific"

"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

llo n

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).

É

ch

an

ti

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).

Microsoft Power BI / Microsoft Excel BI

693/950

Vincent ISOZ

Exercice 97.: Fonction UNICHAR (+VAR) Power BI 2018-03

É

ch

an

ti

llo n

D'abord avant d'énoncer l'objectif qu'on traitera ici, reproduisez l'exercice de la page 677 qui introduisait la fonction LOOKUPVALUE( ):

Microsoft Power BI / Microsoft Excel BI

694/950

Vincent ISOZ

Solution

ch

an

ti

llo n

Une fois la table préparée, ajoutez une nouvelle colonne avec la formule suivante:

É

Il suffit ensuite d'ajouter le résultat dans un page Power BI:

Microsoft Power BI / Microsoft Excel BI

695/950

ti

llo n

Vincent ISOZ

É

ch

an

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 dans une formule.

Microsoft Power BI / Microsoft Excel BI

696/950

Vincent ISOZ

Exercice 98.: Fonction FIND( ) et UPPER( ) Power BI 2018-03

ch

an

Et la table suivante tbl_Clients:

ti

llo n

Considérons à nouveau l'exemple précédent où nous avons une table manuelle de mots-clés comme ci-dessous tbl_MotsCles:

É

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

llo n

La solution consiste à écrire la formule suivante non-triviale:

É

ch

an

ti

Ce qui donne:

Microsoft Power BI / Microsoft Excel BI

698/950

Vincent ISOZ

Exercice 99.: Fonction VALUES avec SEARCH( ) et FIRSTNONBLANK( ) Power BI 2018-03

ch

an

Et la table suivante tbl_Clients:

ti

llo n

Considérons à nouveau l'exemple précédent où nous avons une table manuelle de mots-clés comme ci-dessous tbl_MotsCles:

É

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:

É

ch

an

ti

llo n

Ce qui donne:

Microsoft Power BI / Microsoft Excel BI

700/950

Vincent ISOZ

Exercice 100.: Fonction CONCATENATEX( ) Power BI 2019-07

an

ti

llo n

Considérons la table tbl_Ventes suivante:

É

ch

Et la table suivant ContactClients:

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

llo n

La solution consiste en la formule suivante:

É

ch

an

ti

Ce qui donne:

Microsoft Power BI / Microsoft Excel BI

702/950

Vincent ISOZ

DAX Catégorie Finance Exercice 101.: Fonction XIRR (annuel)

an

ti

Considérons la table manuelle suivante:

llo n

Power BI 2019-10

É

ch

Qui dépivotée dans Power Query donne:

Calculer le IRR annuel!

Microsoft Power BI / Microsoft Excel BI

703/950

Vincent ISOZ

an

ti

llo n

Solution

É

ch

Si on veut transfomer cela en IRR mensuel:

Microsoft Power BI / Microsoft Excel BI

704/950

Vincent ISOZ

É

ch

an

ti

llo n

Ou, sous l'hypothèse que chaque année fait exactement 365 jours (…):

Microsoft Power BI / Microsoft Excel BI

705/950

Vincent ISOZ

Exercice 102.: Fonction XNPV Power BI 2019-10

ti

llo n

Considérons la table manuelle suivante:

É

ch

an

Qui dépivotée dans Power Query donne:

Calculer le NPV!

Microsoft Power BI / Microsoft Excel BI

706/950

Vincent ISOZ

É

ch

an

ti

llo n

Solution

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.

ch

an

ti

llo n

Rappelons qu'il y a un site Internet dédié à de tels patterns des créateurs de SQLBI:

É

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

llo n

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 a du sens!).

ch

an

ti

Considérons donc un fichier avec le jeu de données suivant (qui nous est bien connu!):

É

Et qui contient des Date de commande toutes continues!:

Microsoft Power BI / Microsoft Excel BI

709/950

llo n

Vincent ISOZ

an

ti

Où nous avons rajouté une colonne Note avec la formule DAX suivante:

É

ch

Allons-y pour étudier les cas majeurs des 27 quick measures actulles (Septembre 2019) de la Quick Measure Gallery:

Microsoft Power BI / Microsoft Excel BI

710/950

ch

an

ti

llo n

Vincent ISOZ

É

Et:

Microsoft Power BI / Microsoft Excel BI

711/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

712/950

Vincent ISOZ

Catégorie Texts Star rating (notation en étoiles)

ch

an

ti

llo n

Créez le tableau suivant:

É

Faites ensuite un clic droit sur Median of Note et choisissez New quick measure:

Microsoft Power BI / Microsoft Excel BI

713/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

714/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

715/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

716/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

717/950

Vincent ISOZ

É

ch

an

ti

llo n

Concatenated list of values (liste concaténée de valeurs)

Microsoft Power BI / Microsoft Excel BI

718/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

719/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

720/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

721/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

722/950

Vincent ISOZ

Catégorie Mathematical operations Multiplication

an

ti

llo n

Considérons la matrice suivante:

ch

Créons une nouvelle mesure d'abord:

É

Et ajoutons une quick measure:

Microsoft Power BI / Microsoft Excel BI

723/950

ti

llo n

Vincent ISOZ

É

ch

an

De type:

Microsoft Power BI / Microsoft Excel BI

724/950

ch

an

ti

llo n

Vincent ISOZ

É

Avec:

Microsoft Power BI / Microsoft Excel BI

725/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

726/950

an

ti

llo n

Vincent ISOZ

É

ch

On obtient alors comme attendu (il faut just renommer la mesure!):

Microsoft Power BI / Microsoft Excel BI

727/950

an

Avec la formule DAX:

ti

llo n

Vincent ISOZ

Correlation (corrélation de Pearson)

ch

On veut savoir par secteur d'activité, la corrélation entre la somme d'argent commandé et la probabilité a priori d'achat.

É

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

É

ch

On prend:

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

729/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

730/950

ch

an

ti

llo n

Vincent ISOZ

É

On valide par OK et on rajoute la mesure correspondante dans une carte pour obtenir:

Microsoft Power BI / Microsoft Excel BI

731/950

ti

llo n

Vincent ISOZ

É

ch

an

La DAX correspondant ayant été créé est donné par:

Microsoft Power BI / Microsoft Excel BI

732/950

É

ch

an

ti

llo n

Vincent ISOZ

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:

ch

an

ti

llo n

Ensuite, on crée un quick measure depuis le tableau principal:

É

Et on prend:

Microsoft Power BI / Microsoft Excel BI

734/950

ch

an

ti

llo n

Vincent ISOZ

É

Ensuite on met:

Microsoft Power BI / Microsoft Excel BI

735/950

ch

an

ti

llo n

Vincent ISOZ

É

Et on valide par OK et on ajoute le résultat dans une carte:

Microsoft Power BI / Microsoft Excel BI

736/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

737/950

Vincent ISOZ

Catégorie Totals Running Total (total cumulé)

an

ti

llo n

Pour cette quick measure, on va d'abord préparer la matrice suivante:

É

ch

On ajoute une quick measure sur Prix total avec rabais:

Microsoft Power BI / Microsoft Excel BI

738/950

ti

llo n

Vincent ISOZ

É

ch

an

On prend:

Microsoft Power BI / Microsoft Excel BI

739/950

É

ch

Et on prend:

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

740/950

ch

an

ti

llo n

Vincent ISOZ

É

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

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

742/950

Vincent ISOZ

Catégorie Time Intelligence Rolling Average (moyenne glissante)

ch

an

ti

llo n

On prépare d'abord la matrice suivante:

É

Et on ajoute une quick measure:

Microsoft Power BI / Microsoft Excel BI

743/950

É

ch

On prend:

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

744/950

ch

an

ti

llo n

Vincent ISOZ

É

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

É

ch

On valide:

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

746/950

an

ti

llo n

Vincent ISOZ

É

ch

Ce qui donne comme mesure explicite:

Year to Date (année à ce jour) On repart de la même matrice:

Microsoft Power BI / Microsoft Excel BI

747/950

an

ti

llo n

Vincent ISOZ

É

ch

Et on ajoute une quick measure:

Microsoft Power BI / Microsoft Excel BI

748/950

É

ch

On prend:

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

749/950

ch

an

ti

llo n

Vincent ISOZ

É

On prend:

Microsoft Power BI / Microsoft Excel BI

750/950

ch

an

ti

llo n

Vincent ISOZ

É

On valide par OK, ce qui donne:

Microsoft Power BI / Microsoft Excel BI

751/950

an

ti

llo n

Vincent ISOZ

É

ch

Avec la mesure DAX explicite suivante:

Quarter to Date (trimestre à ce jour) On repart de la même matrice:

Microsoft Power BI / Microsoft Excel BI

752/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

753/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

754/950

an

ti

llo n

Vincent ISOZ

É

ch

En ouvrant les trimestres et mois on obtient:

Microsoft Power BI / Microsoft Excel BI

755/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

756/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

757/950

É

ch

an

ti

llo n

Vincent ISOZ

Etc…

Microsoft Power BI / Microsoft Excel BI

758/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

759/950

É

ch

an

ti

llo n

Vincent ISOZ

Month to Date (mois à ce jour) On repart de la même matrice:

Microsoft Power BI / Microsoft Excel BI

760/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

761/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

762/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

763/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

764/950

É

ch

an

ti

llo n

Vincent ISOZ

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)

É

ch

an

ti

llo n

Nous préparons la matrice suivante:

Microsoft Power BI / Microsoft Excel BI

766/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

767/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

768/950

ti

llo n

Vincent ISOZ

an

Quarter over Quarter change (variation de trimestre en trimestre)

É

ch

Nous préparons la matrice suivante (avec la date de commande):

Microsoft Power BI / Microsoft Excel BI

769/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

770/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

771/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

772/950

ch

an

ti

llo n

Vincent ISOZ

É

Ce qui donne:

Microsoft Power BI / Microsoft Excel BI

773/950

ch

an

ti

llo n

Vincent ISOZ

É

Qu'il vaut mieux changer sous la forme suivante:

Microsoft Power BI / Microsoft Excel BI

774/950

ch

an

ti

llo n

Vincent ISOZ

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

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

776/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

777/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

778/950

ch

an

ti

llo n

Vincent ISOZ

É

Qu'il vaut mieux changer sous la forme suivante:

Microsoft Power BI / Microsoft Excel BI

779/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

780/950

Vincent ISOZ

Catégorie Aggregate per category Maximum by category (maximum par catégorie)

É

ch

an

ti

llo n

On prépare la matrice suivante:

Microsoft Power BI / Microsoft Excel BI

781/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

782/950

ch

an

ti

llo n

Vincent ISOZ

É

Ce qui donne avec la formule DAX explicite:

Microsoft Power BI / Microsoft Excel BI

783/950

ti

llo n

Vincent ISOZ

Minimum by category (minimum par catégorie)

an

Il suffit de reproduire quasi identiquement l'exemple précédent pour comprendre…! Weighted average (moyenne pondérée)

É

ch

On prépare la matrice suivante:

Microsoft Power BI / Microsoft Excel BI

784/950

an

ti

llo n

Vincent ISOZ

É

ch

On ajoute une quick measure sur le tableau:

Microsoft Power BI / Microsoft Excel BI

785/950

É

ch

Et on prend:

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

786/950

É

ch

Avec:

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

787/950

ch

an

ti

llo n

Vincent ISOZ

É

Ce qui donnera:

Microsoft Power BI / Microsoft Excel BI

788/950

an

ti

llo n

Vincent ISOZ

É

ch

Avec la mesure DAX explicite correspondante:

Variance by caterogy (variance par catégorie) On prépare la matrice suivante:

Microsoft Power BI / Microsoft Excel BI

789/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

790/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

791/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

792/950

É

ch

an

ti

llo n

Vincent ISOZ

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…

llo n

On va voir si on peut recréer avec ce dernier la mesure DAX suivante que nous avions créé plus haut:

ch

an

ti

Pour cela, nous créons une quick measure sur le tableau:

É

Où nous prenons:

Microsoft Power BI / Microsoft Excel BI

794/950

ch

an

ti

llo n

Vincent ISOZ

É

Et dans l'écran qui suit nous mettons les champs et paramètres suivants:

Microsoft Power BI / Microsoft Excel BI

795/950

ch

an

ti

llo n

Vincent ISOZ

É

Nous validons par OK et mettons le tout dans une carte pour obtenir:

Microsoft Power BI / Microsoft Excel BI

796/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

797/950

Vincent ISOZ

É

ch

an

ti

llo n

Difference from filtered value (différence avec valeur filtrée)

Microsoft Power BI / Microsoft Excel BI

798/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

799/950

É

ch

an

ti

llo n

Vincent ISOZ

Et on ajoute le résultat dans une carte:

Microsoft Power BI / Microsoft Excel BI

800/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

801/950

Vincent ISOZ

É

ch

an

ti

llo n

Percentage difference from filtered value (différence avec valeur filtrée)

Microsoft Power BI / Microsoft Excel BI

802/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

803/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

804/950

ch

an

ti

llo n

Vincent ISOZ

Sales new customers (ventes nouveaux clients)

É

On prépare d'abord la matrice suivante:

Microsoft Power BI / Microsoft Excel BI

805/950

ti

llo n

Vincent ISOZ

É

ch

an

Et on ajoute une quick measure à la table principale:

On prend:

Microsoft Power BI / Microsoft Excel BI

806/950

ch

an

ti

llo n

Vincent ISOZ

É

Avec:

Microsoft Power BI / Microsoft Excel BI

807/950

ch

an

ti

llo n

Vincent ISOZ

É

On valide par OK pour obtenir:

Microsoft Power BI / Microsoft Excel BI

808/950

ch

an

ti

llo n

Vincent ISOZ

É

Avec la mesure DAX explicitement donnée par:

Microsoft Power BI / Microsoft Excel BI

809/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

810/950

Vincent ISOZ

Exercice 104.: Capabilité 6 Sigma Excel 2010 / Power BI 2018-03

llo n

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 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( ), STDEVX.P( ) et DIVIDE( ) en une seule formule.

É

ch

an

ti

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):

Microsoft Power BI / Microsoft Excel BI

811/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

812/950

Vincent ISOZ

Exercice 105.: Moyenne Mobile Excel 2010 / Power BI 2018-03

an

ti

llo n

Considérons la feuille de ventes suivante:

Remarquez que la colonne Date Commande est continue (c'est-à-dire sans trous!).

É

ch

Nous vous demandons de trouver une solution pour calculer une MM-7 (moyenne mobile sur 7 jours).

Microsoft Power BI / Microsoft Excel BI

813/950

Vincent ISOZ

Solution

an

ti

llo n

D'abord nous importons le fichier Excel dans Power BI:

É

ch

Mais nous créons aussi une table de calendrier:

Microsoft Power BI / Microsoft Excel BI

814/950

ch

an

ti

llo n

Vincent ISOZ

É

Une fois ceci fait, nous lions les deux tables sur le champ qui nous intéresse:

Microsoft Power BI / Microsoft Excel BI

815/950

ti

llo n

Vincent ISOZ

É

ch

an

Une fois ceci fait on crée le tableau suivant avec une simple mesure de type somme:

Microsoft Power BI / Microsoft Excel BI

816/950

Vincent ISOZ

ch

an

ti

llo n

Ensuite, on rajoute la mesure finale suivante qui utilise subtilement DATESINPERIOD( ), et LASTDATE( ):

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

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

818/950

Vincent ISOZ

Exercice 106.: Valeur modale (cas unimodal) Excel 2010 / Power BI 2018-03

ch

an

ti

llo n

Considérons la table suivante:

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

an

ti

llo n

Nous créons une mesure du type suivant qui utilisent subtilement MINX( ), TOPN( ), ADDCOLUMNS( ), VALUES( ), CALCULATE( ) et COUNT( ):

É

ch

Ce qui donnera:

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

ch

an

ti

llo n

Vincent ISOZ

É

Et ensuite la seconde partie:

Microsoft Power BI / Microsoft Excel BI

821/950

llo n

Vincent ISOZ

É

ch

an

ti

La partie subtile est de prendre à la fin MINX( ) !

Microsoft Power BI / Microsoft Excel BI

822/950

Vincent ISOZ

Exercice 107.: Médiane Excel 2010-2013

an

ti

Considérons toujours la même table:

llo n

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 dans ce support.

É

ch

Nous voulons la médiane par Quantité dans une table.

Microsoft Power BI / Microsoft Excel BI

823/950

Vincent ISOZ

Solution

ch

an

ti

llo n

La pattern DAX à créer est le suivant et remarquez qu'il utilise avec finesse MINX( ), FILTER( ), VALUES( ), CALCULATE( ), COUNT( ) et EARLIER( ):

É

Ce qui donnera:

Microsoft Power BI / Microsoft Excel BI

824/950

Vincent ISOZ

Exercice 108.: Moyenne pondérée Power BI 2018-03

ti

llo n

Considérons la table suivante:

É

ch

an

Essayez de trouver comment nous calculerons la moyenne pondérée.

Microsoft Power BI / Microsoft Excel BI

825/950

Vincent ISOZ

Solution

É

ch

an

ti

Ensuite nous rajoutons la mesure finale:

llo n

Résoudre ce problème se fera en deux étapes car nous allons devoir utiliser une mesure semilocale. D'abord nous créons la mesure suivante:

Microsoft Power BI / Microsoft Excel BI

826/950

Vincent ISOZ

18. Data Optimization

É

ch

an

ti

llo n

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!).

Microsoft Power BI / Microsoft Excel BI

827/950

Vincent ISOZ

Désactiver le Auto Date/Time

ch

an

ti

llo n

Pour de multiples raisons que l'on va vous expliquer dans la formation, nous vous conseillons à ce jour de désactiver l'option suivante:

É

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!

É

ch

an

ti

llo n



Microsoft Power BI / Microsoft Excel BI

829/950

Vincent ISOZ

É

ch

an

ti

llo n

Performance Analyzer

Microsoft Power BI / Microsoft Excel BI

830/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

831/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

832/950

Vincent ISOZ

DAX Studio

an

ti

llo n

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:

É

ch

On valide par Connect et on écrit et exécute:

Microsoft Power BI / Microsoft Excel BI

833/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

834/950

llo n

Vincent ISOZ

É

ch

an

ti

On peut voir le code SQL corrrespondant utilisé par SSAS:

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.

llo n

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) 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!!

É

ch

an

ti

Pour vérifier que le Query Folding est actif (ou d'un autre point de vue: quand est-ce que celui-ci 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:

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:

llo n

https://www.kasperonbi.com/determine-columns-you-dont-need-using-dmvs-in-power-bi/

ch

an

ti

Ouvrez votre fichier *.pbix et passez à la vue DMX (Dynamic Management Views) et qui vient du monde de Microsoft Analysis Services:

É

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

ti

llo n

Vincent ISOZ

an

Ce dont nous avons besoin ici, c'est de regarder le champ de comptage de lignes et de déterminer 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.

É

ch

L'exécution de cette requête me donne le résultat suivant:

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

ti

llo n

D'abord au niveau de l'optimisation de Power Query, en allant dans File / Options and Settings / Query Options:

É

ch

an

décocher l'option Allow data preview to download in the background ci-dessous donne parfois des performances significativement meilleures:

Microsoft Power BI / Microsoft Excel BI

839/950

Vincent ISOZ

É

ch

an

ti

llo n

Dans Microsoft Excel, on retrouvera cette option sous la forme:

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:

ch

an

ti

llo n

https://appsource.microsoft.com/en-us/marketplace/apps?product=power-bi-visuals

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:

llo n

https://community.powerbi.com/t5/Themes-Gallery/bd-p/ThemesGallery Lien pour créer des thèmes:

https://powerbi.tips/tools/report-theme-generator-v3/ Liens pour convertir les images en x64 bits pour les fichiers JSON: https://www.base64-image.de/

É

ch

an

ti

Vous trouvez le thème à l'endroit suivant du fichier Zip de votre fichier *.pbix:

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



Mette votre modèle de données à la troisième forme normale



Lignes vides



Cellules fusionnées



Intitulé de colonnes avec retour à la ligne



Doublons



Liste Microsoft Excel pas sous forme de tableau



Colonnes mélangeant textes et nombres



Fichier *.csv et *.xlsx des ventes n'ont pas Education écrit de la même manière



Certains fichier *.csv ont des données indésirables en fin ou début

an

ti

llo n



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

ch

https://platform.bing.com/geo/spatial/v1/public/Geodata

É

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:

llo n

https://charticulator.com/ et pour créer des cartes vectorielles à partir d'images choisies: https://synoptic.design/

Boutons Créer des boutons de navigation Créer des boutons pour ouvrir des liens

ti

Créer des boutons pour effacer tous les filtres

Q&A

an

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 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.

Mots clés

Agrégats

total, sum, amount, number, quantity, count, average, most, least, fewest, largest, smallest, highest, biggest, maximum, max, greatest, lowest, littlest, minimum, min a, an, the blank, empty, null, prefixed with “non” or “non-“, empty string, empty text, true, t, false, f vs, versus, compared to, compared with and, or, each of, with, versus, &, and, but, nor, along with, in addition to

ch

Catégorie

É

Articles Vides et booléens Comparaisons Conjonctions

Microsoft Power BI / Microsoft Excel BI

844/950

Vincent ISOZ

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 Power BI reconnaît la plupart des expressions de date ($$$jour, $$$semaine, $$$mois, $$$année, $$$trimestre, $$$dix dernières années, etc.) et les dates écrites dans différents formats (voir cidessous). 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, January 1995, 1995 January, 1995-01, 01/1995, names of months 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. 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? 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? Si une colonne du jeu de données contient la phrase « name » (par exemple EmployeeName), Q&R comprend que les valeurs de cette colonne sont des noms. Vous pouvez donc poser des questions du type « which employees are named robert » (quels employés s’appellent Robert ?). he, him, himself, his, she, herself, her, hers, it, itself, its, they, their, them, themselves, theirs, this, these, that, those sorted, sort by, direction, group, group by, by, show, list, display, give me, name, just, only, arrange, rank, compare, to, with, against, alphabetically, ascending, descending, order 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

Dates relatives

an

Égalité (plage)

Égalité (valeur)

ch

Noms

ti

Dates

llo n

Catégorie

Pronoms

É

Commandes de requête Plage

Microsoft Power BI / Microsoft Excel BI

845/950

Vincent ISOZ

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. (ordre, classement) : top, bottom, highest, lowest, first, last, next, earliest, newest, oldest, latest, most recent, next tous les types d’éléments visuels natifs de Power BI. Si l’option est présente dans le volet visualisations, vous pouvez l’ajouter à votre question. La seule exception à cette règle concerne les éléments visuels personnalisés que vous avez ajoutés manuellement dans le volet de visualisation. Exemple : show districts by month and sales total as bar chart when, where, which, who, whom, how many, how much, how many times, how often, how frequently, amount, number, quantity, how long, what

N premiers Types d’éléments visuels

É

ch

an

ti

Relatifs (relation, qualification)

llo n

Catégorie

Microsoft Power BI / Microsoft Excel BI

846/950

Vincent ISOZ

Slicers (segments)

É

ch

an

ti

llo n

Slicers de dates relatifs

Microsoft Power BI / Microsoft Excel BI

847/950

an

ti

llo n

Vincent ISOZ

É

ch

Trier un slicer (segment) par ordre chronologique des mois

Microsoft Power BI / Microsoft Excel BI

848/950

Vincent ISOZ

É

ch

an

ti

llo n

Trier un slicer (segment) par ordre spécifique

Microsoft Power BI / Microsoft Excel BI

849/950

Vincent ISOZ

Slicer Between de dates, filtré par des dates

É

ch

an

ti

llo n

Masquer/Réafficher un slicer

Microsoft Power BI / Microsoft Excel BI

850/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

851/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

852/950

Vincent ISOZ

Symboles Unicodes Se référer à la page 694.

É

ch

an

ti

llo n

Créer des groupes

Microsoft Power BI / Microsoft Excel BI

853/950

Vincent ISOZ

É

ch

an

ti

llo n

Formatage conditionnel des barres en fonction d'une valeur cible

Microsoft Power BI / Microsoft Excel BI

854/950

Vincent ISOZ

É

ch

an

ti

llo n

Titres dynamiques (avril 2019)

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!)

llo n

2. Enlever les lignes vides! (sinon problèmes!) 3. Mettre toutes les phrases / mots en minuscules

É

ch

Avec:

an

ti

4. Enlever les retour chariots:

Microsoft Power BI / Microsoft Excel BI

856/950

Vincent ISOZ

Visuel Microsoft Visio

Visuel Synoptic Panel by OKViz

llo n

Comment créer et utiliser une carte personnalisée avec Power BI?

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 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!

ti

Exemple sera pris sur la carte de France (suivre les mêmes étapes pour les cartes des autres pays).

É

ch

an

Comme à l'habitude, on va d'abord charger le visuel correspondant dans le Marketplace:

Microsoft Power BI / Microsoft Excel BI

857/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

858/950

Vincent ISOZ

Data Viz Mobile (phone) screen

É

ch

an

ti

llo n

Rappel:

Microsoft Power BI / Microsoft Excel BI

859/950

Vincent ISOZ

É

ch

an

ti

llo n

20. Data Sharing (Power BI Services)

Microsoft Power BI / Microsoft Excel BI

860/950

ti

llo n

Vincent ISOZ

ch

an

Un résumé des différentes options de partage:

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

É

ch

On va dans:

an

ti

llo n

Personnaliser l'interface de Power BI Services:

Et ensuite dans:

Microsoft Power BI / Microsoft Excel BI

862/950

ti

llo n

Vincent ISOZ

É

ch

an

À noter que cela est disponible aussi dans la version gratuite!

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

É

ch

an

ti

llo n

2. Les tooltip ne fonctionnent pasr sur les tuiles des dashboards

Microsoft Power BI / Microsoft Excel BI

864/950

Vincent ISOZ

an

ti

llo n

Workspaces App (espaces de travail)

Partager un Workspace App

É

ch

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!

Publier un Workspace App

Microsoft Power BI / Microsoft Excel BI

865/950

Vincent ISOZ

an

ti

llo n

Le bouton se trouve typiquement sur la page d'accueil du Workspace:

É

ch

Notez bien avant de cliquer sur Publish App que:

Nous avons alors:

Microsoft Power BI / Microsoft Excel BI

866/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

867/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

868/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

869/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

870/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

871/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

872/950

an

ti

llo n

Vincent ISOZ

É

ch

Workspaces orphelins

Microsoft Power BI / Microsoft Excel BI

873/950

ch

an

ti

llo n

Vincent ISOZ

É

Notez qu'on peut restaurer les Workspace orphelins:

Microsoft Power BI / Microsoft Excel BI

874/950

ch

an

ti

llo n

Vincent ISOZ

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

ti

llo n

Vincent ISOZ

É

ch

an

Et on a le même type de résultat lorsque l'administrateur du Workspace est supprimé par l'administrateur du Service via PowerShell.

Microsoft Power BI / Microsoft Excel BI

876/950

Vincent ISOZ

RLS (Row Level Security)

an

ti

llo n

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:

https://portal.azure.com/

É

ch

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:

Microsoft Power BI / Microsoft Excel BI

877/950

ch

an

ti

llo n

Vincent ISOZ

É

On arrive alors sur:

Microsoft Power BI / Microsoft Excel BI

878/950

ch

an

ti

llo n

Vincent ISOZ

É

On va dans les menus suivants:

Microsoft Power BI / Microsoft Excel BI

879/950

an

ti

llo n

Vincent ISOZ

É

ch

Et une fois cliqué sur New guest user, on ajoute l'utilisateur souhaité:

Microsoft Power BI / Microsoft Excel BI

880/950

an

ti

llo n

Vincent ISOZ

É

ch

La personne invitée recevra alors l'e-mail suivant:

Microsoft Power BI / Microsoft Excel BI

881/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

882/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

883/950

Vincent ISOZ

ch

an

ti

llo n

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é:

É

Maintenant créons un rôle simple dans Power BI:

Microsoft Power BI / Microsoft Excel BI

884/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

885/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

886/950

É

ch

an

ti

llo n

Vincent ISOZ

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

llo n

https://binokula.com/features/ Attention, pour le partage en mode anonyme, il faut: Ne pas avoir utilisé le RLS



Ne pas avoir de Live connection



Ne pas utiliser un organizational pack



Ne pas utiliser de visuels R

É

ch

an

Embed Code

ti



Microsoft Power BI / Microsoft Excel BI

888/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

889/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

890/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

891/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

892/950

Vincent ISOZ

É

ch

an

ti

llo n

Intégration dans Microsoft Word

Microsoft Power BI / Microsoft Excel BI

893/950

É

ch

an

ti

llo n

Vincent ISOZ

On fait un clic droit sur un des visuels:

Microsoft Power BI / Microsoft Excel BI

894/950

É

ch

an

Ce qui donnera:

ti

llo n

Vincent ISOZ

Intégration dans Microsoft Excel

Microsoft Power BI / Microsoft Excel BI

895/950

Vincent ISOZ

É

ch

an

ti

llo n

Intégration dans Microsoft PowerPoint

Microsoft Power BI / Microsoft Excel BI

896/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

897/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

898/950

Vincent ISOZ

É

ch

an

ti

llo n

Intégration dans Microsoft Teams

Microsoft Power BI / Microsoft Excel BI

899/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

900/950

ti

llo n

Vincent ISOZ

É

ch

an

Intégration dans Microsoft OneNote App

Microsoft Power BI / Microsoft Excel BI

901/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

902/950

ti

llo n

Vincent ISOZ

É

ch

an

Ouvrir l'App OneNote (et non pas le logiciel OneNote!!!):

Coller le lien qui se transformera alors immédiatement en:

Microsoft Power BI / Microsoft Excel BI

903/950

ti

llo n

Vincent ISOZ

É

ch

an

Cliquer sur le bouton du milieu (flèche de Refresh), de façon à obtenir:

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.

ti

llo n

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 données (qui ont été saisies dans la feuille de calcul et ne sont pas des sources de données externes):

É

ch

an

Dans Power BI Service nous cliquons sur:

Microsoft Power BI / Microsoft Excel BI

905/950

ch

an

Prenons l'option:

ti

llo n

Vincent ISOZ

É

Ce qui nous amène sur:

Microsoft Power BI / Microsoft Excel BI

906/950

Vincent ISOZ

llo n

Sélectionnons notre fichier ExcelTransactions.xlsx. Nous allons maintenant voir cette page:

an

ti

Sélectionnon Import Excel data into Power BI:

É

ch

À 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 CTRL + T :

Microsoft Power BI / Microsoft Excel BI

907/950

llo n

Vincent ISOZ

ti

Maintenant, répétons le processus de téléchargement de la feuille de calcul Excel sur powerbi.com.

ch

an

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:

É

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

llo n

Vincent ISOZ

an

ti

Ce qui affiche:

É

ch

Ce rapport apparaîtra maintenant sous Reports, et nous pouvons épingler les visuels aux tableaux de bord:

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

an

ti

llo n

Supprimons cette source de données de Power BI et recommençons. Téléchargez à nouveau les données et sélectionnez Upload your Excel file to Power BI:

É

ch

Nous voyons que ce classeur Excel est maintenant dans Power BI en tant que rapport. Aucun jeu de données n'a été créé:

Microsoft Power BI / Microsoft Excel BI

910/950

llo n

Vincent ISOZ

É

ch

Ce qui ouvre:

an

ti

Nous pouvons également épingler des données aux tableaux de bord:

Ce qui résultera en:

Microsoft Power BI / Microsoft Excel BI

911/950

ti

llo n

Vincent ISOZ

an

Remarque: l'actualisation des données n'est pas prise en charge:

ch

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!!!

É

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

llo n

Vincent ISOZ

ch

an

ti

Dans Power BI, on clique sur Get Data et on sélectionne OneDrive - Business:

É

On se connecte:

Connectez-vous d'abord en sélectionnant Import Excel data into Power BI:

Microsoft Power BI / Microsoft Excel BI

913/950

llo n

Vincent ISOZ

an

ti

Cela crée un Datset mais pas de rapports ni de tableaux de bord:

É

ch

Créons un rapport simple montrant les clients:

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

ti

llo n

Ensuite, connectez-vous aux données de Power BI à l'aide de Upload your Excel file to Power BI:

an

Cela crée un rapport, et non un ensemble de données:

ch

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 à 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": Mode

Dataset

Report

Refresh

Local File (format data as table)

Import

Oui

Non

Non

Local File (format data as table)

Upload

Non

Oui

Non

OneDrive for Business

Import

Oui

Non

Oui

OneDrive for Business

Upload

Non

Oui

Live

É

Location

Microsoft Power BI / Microsoft Excel BI

Comments

View of spreadsheet

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



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



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

ti

Donc on pourra utiliser:

llo n



É

ch

an

Qui une fois validé via la touche Enter devient pour la dernière partie:

Microsoft Power BI / Microsoft Excel BI

916/950

Vincent ISOZ

Alertes

É

ch

an

ti

llo n

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!

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

llo n

D'abord le lien majeur:

et:

an

ti

https://microsoft.github.io/PowerBI-JavaScript/demo/v2-demo/index.html

É

ch

https://github.com/microsoft/PowerBI-Developer-Samples

Microsoft Power BI / Microsoft Excel BI

918/950

an

ti

llo n

Vincent ISOZ

É

ch

On peut télécharger la solution .Net et l'ouvrir dans Visual Studio:

Microsoft Power BI / Microsoft Excel BI

919/950

Un exemple fonctionnel:

ti

llo n

Vincent ISOZ

É

ch

an

https://fleetdemoapp.azurewebsites.net/

Microsoft Power BI / Microsoft Excel BI

920/950

Vincent ISOZ

Créer un Tenant Voir la page…

On va sur:

llo n

Obtenir le Client ID (ie Application ID) et Client Secret

https://portal.azure.com/ Et on procède aux étapes suivantes:

ch

an

ti

Via azure cherchez:

É

Vous arrivez alors sur:

Microsoft Power BI / Microsoft Excel BI

921/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

922/950

É

ch

an

Après on va dans:

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

923/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

924/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

925/950

Vincent ISOZ

É

ch

an

ti

llo n

Lorsqu'on lance un application embedded avec cet Application ID on aura:

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

an

Soit en zoomant un peu:

ti

llo n

Vincent ISOZ

Obtenir le Tenant ID

É

ch

On peut l'obtenir via Azure:

Microsoft Power BI / Microsoft Excel BI

927/950

ch

an

ti

llo n

Vincent ISOZ

É

Ou via Office 365 en allant d'abord dans l'administration SharePoint:

Microsoft Power BI / Microsoft Excel BI

928/950

llo n

Vincent ISOZ

É

ch

an

ti

Et ensuite on peut aussi l'obtenir dans les permissions d'Apps:

Et il s'agit du numéro après le "@": Microsoft Power BI / Microsoft Excel BI

929/950

llo n

Vincent ISOZ

Intégration C# .Net

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:

É

ch

an

Merci à Ted Pattison (MVP)!

ti

https://github.com/CriticalPathTraining/PowerBiEmbeddedScratchpad/tree/master/PowerBiEmb eddedScratchpad

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 {

llo n

return new Promise(function(resolve, reject) {

var url = 'https://login.microsoftonline.com/common/oauth2/token'; var username = var password = var clientId = Directory - stored

// // // in

Username of PowerBI "pro" account - stored in config Password of PowerBI "pro" account - stored in config Applicaton ID of app registered via Azure Active config

ti

var headers = { 'Content-Type' : 'application/x-www-form-urlencoded' };

an

var formData = { grant_type:'password', client_id: clientId, resource:'https://analysis.windows.net/powerbi/api', scope:'openid', username:username, password:password };

ch

request.post({ url:url, form:formData, headers:headers

}, 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 formData = { "accessLevel": "View" }; request.post({ url:url, form:formData, headers:headers

an

}

ti

}, function(err, result, body) { if(err) return reject(err); console.log(body) var bodyObj = JSON.parse(body); resolve(bodyObj.token); }) })

llo n

var headers = { 'Content-Type' : 'application/x-www-form-urlencoded', 'Authorization' : 'Bearer ' + accessToken };

Sinon pour ceux qui utilisent Java (bonne chance…!):

É

ch

https://github.com/AzureAD/azure-activedirectory-library-for-java

Microsoft Power BI / Microsoft Excel BI

932/950

Vincent ISOZ

Administration

ch

an

ti

llo n

Dans le About de Power BI Services on peut extraire la version de Power BI Services:

É

Sinon on a au niveau de l'administration:

Microsoft Power BI / Microsoft Excel BI

933/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

934/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

935/950

Vincent ISOZ

É

ch

an

ti

llo n

Monitorer les coûts

Microsoft Power BI / Microsoft Excel BI

936/950

llo n

Vincent ISOZ

On peut obtenir ce numéro ici: https://ea.azure.com/

ch

an

ti

Ici:

É

Ensuite on doit mettre la clé de l'API:

Microsoft Power BI / Microsoft Excel BI

937/950

llo n

Vincent ISOZ

ch

an

ti

Clé qui peut être trouvée ici:

É

On a ensuite accès à de nombreuses tables:

Microsoft Power BI / Microsoft Excel BI

938/950

an

ti

llo n

Vincent ISOZ

É

ch

Et ensuite y'a plus qu'à…

Microsoft Power BI / Microsoft Excel BI

939/950

Vincent ISOZ

É

ch

an

ti

llo n

21. Report Builder

Microsoft Power BI / Microsoft Excel BI

940/950

Vincent ISOZ

Data Munging

É

ch

an

ti

llo n

Microsoft SQL Server Express

Microsoft Power BI / Microsoft Excel BI

941/950

Vincent ISOZ

Microsoft Access

ti

llo n

Une fois Report Builder ouvert, pour se connecter par exemple à une base Microsoft Access, on ira:

É

ch

an

Ensuite, une fois le choix validé, on aura:

Microsoft Power BI / Microsoft Excel BI

942/950

an

ti

llo n

Vincent ISOZ

É

ch

Et on peut au besoin tester la connexion:

Microsoft Power BI / Microsoft Excel BI

943/950

É

ch

an

ti

llo n

Vincent ISOZ

Microsoft Power BI / Microsoft Excel BI

944/950

Vincent ISOZ

22. Intelligence Artificielle et Analyse avancée avec R et Python

llo n

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 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:

É

ch

an

ti

https://archive.org/details/Livre_R

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

É

ch

an

ti

llo n

23. FAQ (Frequently Asked Questions)

Microsoft Power BI / Microsoft Excel BI

946/950

Vincent ISOZ

24. Assessment (questions de révision)

É

ch

an

ti

llo n

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)!

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

llo n

Tableau 3Tableau opérateurs DAX ............................................................................................ 403

Figure 1Vue d'ensemble de Power Query ..................................................................................... 26 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

ti

Figure 5Vue d'ensemble de Power Map ....................................................................................... 30 Figure 6Vue d'ensemble de Power BI........................................................................................... 31

an

Figure 7Vue d'ensemble de R Shiny ............................................................................................. 33 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

É

ch

Figure 11 Requête DAX dans Power BI avec commentaires ..................................................... 395

Microsoft Power BI / Microsoft Excel BI

948/950

Vincent ISOZ

26. Index

llo n

FIRSTNONBLANK( ) .......................................... 663 FORMAT( ) ................................................... 361, 690 FOUND( ) .............................................................. 428 GENERATE( ) ...................................................... 332 GENERATEALL( ) ............................................... 336 GENERATESERIES( ) ................................. 374, 386 GROUPBY( ) ........................................................ 319 HASONEFILTER( ) .............................................. 459 HASONEVALUE( ) ...................... 455, 459, 518, 657 IF( ) ................................................................ 408, 410 IFERROR( )........................................................... 811 IGNORE( ) ............................................................ 321 IN 403, 423 INT( ) ..................................................................... 585 INTERSECT( ) ...................................................... 476 INTERSECTION ( ) .............................................. 380 ISBLANK( ) .......................................................... 661 ISFILTERED ( ) .................................................... 459 ISINSCOPE ( ) ...................................................... 485 ISONORAFTER( ) ................................................ 446 ISSUBTOTAL( ) ................................................... 355 LASTDATE( ) ............................................... 631, 817 LASTNONBLANK( ) ........................................... 665 LEFT( ) .................................................................. 428 LOOKUPVALUE( ) .............................. 677, 682, 686 MAX( ) .................................................................. 525 MAXX( ) ....................................................... 527, 811 MEDIAN( ) ........................................................... 823 MIN( ).................................................................... 520 MINX( ) ......................................... 523, 811, 820, 824 MONTH( ) ............................................................. 578 NATURALINNERJOIN( ) .................................... 339 NATURALLEFTOUTERJOIN( ) ......................... 344 NEXTDAY( ) ................................................ 589, 660 NEXTMONTH( ) .......................................... 593, 660 NEXTQUARTER( ) .............................................. 597 NEXTYEAR( ) .............................................. 601, 660 NORM.INV( ) ....................................................... 388 NORM.S.INV( ) .................................................... 388 NOT ....................................................................... 403 NOW( ) .................................................................. 574 OR( ) .............................................................. 410, 502 PARALLELPERIOD( ) ......................................... 610 PATH( ) ................................................................. 684 PATHITME( ) ....................................................... 686 PERCENTILE.INC( ) ............................................ 555 PERCENTILEX.EXC( ) ........................................ 552 PERCENTILEX.INC( ) ......................................... 551 PREVIOUSDAY( ) ....................................... 589, 660

É

ch

an

ti

ADDCOLUMNS( ) ............... 328, 350, 368, 690, 820 ALL( ).................................... 293, 294, 311, 431, 434 ALLEXCEPT( )..................................................... 453 ALLNOBLANKROW ( ) ...................................... 466 ALLSELECTED( ) ................ 436, 438, 440, 443, 446 AND( ) ........................................... 412, 421, 497, 501 AVERAGE( ) ................................................ 326, 506 AVERAGEX( ) ..................................................... 514 BLANK( ) .............................................................. 657 CALCULATE ( ) ........................................... 476, 480 CALCULATE( ) ............ 419, 535, 581, 811, 820, 824 CALCULATETABLE( ) ............................... 306, 333 CALENDAR( ) ...................................................... 359 CALENDARAUTO( ) .. 363, 589, 593, 598, 601, 607, 610, 620, 626, 632, 640 CLOSINGBLANCEMONTH( ) ............................ 639 CONCATENATEX( ) ........................................... 701 CONTAINSROW( ) .............................................. 423 COUNT( ) .............................................. 533, 820, 824 COUNTA( ) ........................................................... 541 COUNTAX( ) ........................................................ 543 COUNTBLANK ( ) ............................................... 547 COUNTROWS( ) .......................................... 325, 545 COUNTX( ) ........................................................... 539 CROSSJOIN( ) ...................................................... 382 CURRENTGROUP( ) ........................................... 319 DATATABLE( ).................................................... 377 DATE( ) ......................................................... 361, 581 DATEADD( ) ........................................................ 616 DATEDIFF( ) ........................................................ 587 DATESBETWEEN( )............................................ 650 DATESINPERIOD( ) .................................... 654, 817 DATESMTD( ) ...................................................... 626 DATESYTD( ) ...................................................... 626 DAY( ) ........................................................... 580, 690 DISTINCT( ) ......................................... 302, 371, 451 DISTINCTCOUNT( )............................................ 549 DIVIDE( )...................................................... 432, 811 EARLIER( )................................... 667, 671, 679, 824 ENDOFMONTH( )........................................ 639, 654 ENDOFYEAR( ) ................................... 652, 653, 661 EOMONTH( ) ............................................... 361, 579 EVALUATE .......................................................... 284 EXCEPT( ) ............................................................ 443 FILTER( ) ..... 309, 421, 423, 428, 430, 497, 679, 811, 824 FIND( ) .................................................................. 697 FIRSTDATE( ) ...................................................... 631 FIRSTNONBLANK( ) .......................................... 699

Microsoft Power BI / Microsoft Excel BI

949/950

Vincent ISOZ

llo n

SUMMARIZECOLUMNS ( ) ............................... 320 SUMMARIZECOLUMNS( ) ................................ 321 SUMX( ) ........................................................ 493, 497 SWITCH( ) ............................................................ 413 TODAY( ) ..................................................... 574, 585 TOPN( ) ......................... 322, 557, 559, 561, 564, 820 TOTALMTD( ) ............................................. 643, 647 TOTALQTD( ) .............................................. 643, 647 TOTALYTD( ) .............................................. 643, 647 TREATAS ( ) ........................................................ 480 UNICHAR( ) ......................................................... 694 UNION( )............................................... 370, 372, 374 UPPER( ) ............................................................... 697 USERCULTURE( ) ............................................... 406 USERELATIONSHIP( ) ............................... 469, 535 USERNAME( ) ..................................................... 404 USERPRINCIPALNAME( ) ................................. 405 UTCNOW( ) .......................................................... 575 VALUE( ) .............................................. 408, 410, 693 VALUES( ) ............................ 299, 518, 699, 820, 824 VAR............................................................... 694, 811 WEEKDAY( ) ....................................... 361, 576, 690 WEEKNUM( )....................................................... 361 XIRR( ) .................................................................. 703 XNPV( )................................................................. 706 YEAR( )................................................. 361, 577, 690 YEARFRAC( ) ...................................................... 585

É

ch

an

ti

PREVIOUSMONTH( ) ......................... 593, 660, 661 PREVIOUSQUARTER( ) ..................................... 597 PREVIOUSYEAR( ) ..................................... 601, 660 RAND( ) ................................................................ 388 RANDBETWEEN( ) ............................................. 388 RANK.EQ ( ) ......................................................... 324 RANK.EQ( ) .......................................................... 570 RANKX( ) ............................................................. 565 RELATED( ) ................................. 328, 415, 493, 811 RELATEDTABLE( ) .................................... 332, 336 REMOVEFILTER( ) ............................................. 434 RIGHT( ) ............................................................... 429 ROLLUP( ) ............................................................ 352 ROLLUPADDISSUBTOTAL( ) ........................... 357 ROLLUPGROUP( ) .............................................. 353 ROUND( ) ............................................................. 326 ROW( ) .......................................................... 325, 372 SAMEPERIODLASTYEAR( ) ............................. 607 SAMPLE( ) ............................................................ 310 SEARCH( ) ............................................................ 699 SELECTCOLUMNS( ) ................................. 297, 315 SELECTEDVALUE( ) .................................. 473, 683 STARTOFMONTH( ) ........................................... 657 STARTOFYEAR( ) ............................... 652, 653, 661 STDEVX.P( ) ........................................................ 811 SUM( ) ........................... 326, 476, 480, 489, 535, 581 SUMMARIZE( ).................................................... 366

Microsoft Power BI / Microsoft Excel BI

950/950

Related Documents


More Documents from "Mike"

Formation Latex 2e
January 2021 1
Microsoft Power Bi
January 2021 1
Action Script
January 2021 0
Cryptographie
January 2021 0
Maple
January 2021 4