Blog ENI : Toute la veille numérique !
🎃 Jusqu'à -30% sur les livres en ligne, vidéos et e-formations.
Code : GHOST30.
Cliquez ici !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Le langage DAX
  3. Les fonctions de manipulation du modèle physique
Extrait - Le langage DAX Maîtrisez l'analyse et la modélisation de données dans Power BI et Excel
Extraits du livre
Le langage DAX Maîtrisez l'analyse et la modélisation de données dans Power BI et Excel
11 avis
Revenir à la page d'achat du livre

Les fonctions de manipulation du modèle physique

Introduction

Cela doit maintenant paraître plus évident : utiliser le DAX, c’est pour une large part percevoir et modifier le contexte de filtre. D’où, par exemple, l’importance de la fonction CALCULATE. C’est seulement une fois que le nouveau contexte a été évalué, que le calcul lui-même a lieu (somme, moyenne, etc.). Nous avons vu également que le filtre, c’est une table, et inversement, que la table, c’est un filtre.

C’est la raison pour laquelle, dans la formule ci-dessous, la référence à une table dans la fonction SUMX est remplacée par le résultat de la fonction FILTER :

montant petites qtés = 
VAR TableFiltree = 
    FILTER( 
        transactions , 
        [qté] <= 2 
    ) 
RETURN 
SUMX( 
    TableFiltree, 
    [qté] * RELATED(produits[prix unitaire]) 
) 

Utiliser le DAX revient donc essentiellement à manipuler des tables qui sont rarement directement les tables physiques du modèle, mais le plus souvent des versions filtrées ou améliorées de ces tables. J’utilise le terme de « vue » pour décrire ce phénomène. Une vue est une table virtuelle créée temporairement pour les besoins d’un calcul. Et souvent, résoudre une situation de calcul complexe repose sur une bonne génération de cette vue.

Attention : il ne faut pas confondre avec le terme « vue » utilisé notamment dans les bases de données pour désigner une entité qui peut être stockée physiquement.

Il y a en fait trois raisons majeures pour...

Les fonctions de table

Commençons par les fonctions de table. L’ensemble des fonctions listées ci-dessous retournent une table :

  • FILTER

  • ALL

  • CALCULATETABLE

  • VALUES

  • DISTINCT

  • ADDCOLUMNS

  • SUMMARIZE

  • SELECTCOLUMNS

  • CROSSJOIN

  • UNION / INTERSECT / EXCEPT

  • GENERATESERIES*

* GENERATESERIES est la seule fonction dans cette liste qui n’est pas disponible dans Excel.

Notons au passage que certaines de ces fonctions ne retournent qu’une seule colonne (VALUES, DISTINCT, GENERATESERIES) mais, le résultat est cependant bien considéré comme une table.

À propos des exercices, je vous recommande de lire la section Les fonctions de table dans son intégralité avant de faire les exercices, car ces fonctions sont le plus souvent utilisées ensemble.

FILTER, ALL

Nous avons déjà largement étudié ces deux fonctions : elles sont évoquées pour la simple raison qu’elles retournent une table.

Pour simple rappel, la syntaxe la plus souple de FILTER consiste à relier les arguments de filtres par l’opérateur && (pour être en mesure de poser autant de filtres que requis) :

produits rouges + de 50 € = 
FILTER( 
    produits, 
    produits[couleur]="Rouge" && 
    produits[prix unitaire]>50 
) 

Vous pouvez utiliser une autre technique d’écriture qui consiste à mettre l’opérateur en début de ligne plutôt qu’à la fin de la ligne précédente : c’est beaucoup plus simple pour mettre une ligne en commentaire et tester les filtres :

produits rouges + de 50 € = 
FILTER( 
    produits, 
    produits[couleur]="Rouge" 
    && produits[prix unitaire]>50 ...

Les fonctions de relation

Si les fonctions de table permettent de créer des tables physiques ou virtuelles, les fonctions de relation permettent elles d’activer ou de créer des relations entre tables.

Les types de relations

Il existe trois types de relations :

  • La relation physique active : elle est visible sous forme d’une ligne continue dans la vue Modèle de Power BI ou dans la vue Diagramme de Power Pivot ; elle a le plus souvent une cardinalité de 1-à-N (voir ci-dessous), elle a un sens, et c’est la relation utilisée par défaut lors de la propagation du filtre.

  • La relation physique inactive : elle est visible sous forme d’une ligne pointillée dans la vue Modèle ou dans la vue Diagramme ; elle a le plus souvent une cardinalité de 1-à-N et elle a un sens. Il peut y avoir plusieurs relations inactives entre deux tables mais une seule relation active.

  • La relation virtuelle : elle n’est pas visible dans la vue Modèle ; elle est créée par formule, avec la fonction TREATAS, et n’existe que le temps d’un calcul. Cette relation est uniquement disponible avec Power BI.

La cardinalité indique le nombre de valeurs possibles pour un élément de part et d’autre de la relation. Le plus souvent, un identifiant est unique du côté 1, et multiple du côté N. C’est le cas de la relation entre la table catégories et la table produits : une catégorie est présente une seule fois dans la première table, mais son identifiant se retrouve plusieurs fois dans la table des produits. Dit autrement, un produit a une seule catégorie, mais plusieurs produits partagent la même catégorie.

Cette cardinalité, notée 1-à-N (ou N-à-1), caractérise la relation...

Les fonctions de conversion

Pour terminer sur les fonctions de modification du modèle, et après avoir vu le travail sur les tables, puis le travail sur les relations, cette section est consacrée au travail sur le type de la donnée.

Vous aurez en effet parfois à convertir un texte en nombre, ou en date, ou encore en heures/minutes/secondes. Les fonctions présentées ici permettent toutes les configurations. A l’exception de la première, elles sont disponibles pour Excel et Power BI.

CONVERT

Cette fonction, du moins au moment de l’écriture de ce livre, n’est disponible que dans Power BI.

CONVERT est une fonction tout-en-un, qui permet de convertir une expression (à savoir, une constante, une colonne ou le résultat d’un calcul), en tout type de données :

CONVERT(<Expression>, <Type de la donnée>) 

Le type de la donnée peut être INTEGER (nombre entier), DOUBLE (nombre décimal), STRING (texte), BOOLEAN (True/False), CURRENCY (nombre décimal fixe), DATETIME (date, heure, etc.).

Des exemples de transformations incluent : des dates en nombre entier (pour effectuer facilement des calculs), des décimaux en nombre entier, des décimaux en texte, ou encore du texte en date :

CONVERT('Convert'[date en texte], DATETIME) 

Dans cette formule, la colonne [date en texte] de la table Convert a été convertie au format DATETIME.

À titre de rappel, le type nombre décimal fixe est le format recommandé pour les données monétaires.

FORMAT

FORMAT convertit un nombre ou une expression (le résultat d’un calcul) en texte :

FORMAT(123.4 , "0000.00")

retourne 0123,40 (affichage forcé des zéros).

FORMAT(0123.40 , "#,#")

retourne 123,4 (disparition des zéros).

FORMAT(1.23 , "#...

Exercices

Les fonctions de table

Dans cette première série d’exercices, vous allez créer des tables en vous servant de l’ensemble des fonctions de table. Nous partons du fichier chap8_librairie.pbix que vous trouverez dans le dossier correspondant des fichiers exemples.

Dans les différents exercices que je vous propose, il s’agit de s’entraîner à créer une table (c’est-à-dire une entité physiquement stockée dans le fichier), à ne pas confondre avec la création d’un tableau (un visuel dans le rapport), bien que dans la plupart des cas le résultat puisse être obtenu de cette seconde manière. Gardez en tête que le DAX est avant tout un langage qui manipule en permanence des « vues » : c’est ceci que vous allez pouvoir travailler dans les exercices qui suivent.

Table des livres de littérature

Commencez par construire à l’aide de CALCULATETABLE une table où ne figurent que les livres de littérature d’un prix supérieur à 15 € en ajoutant une colonne indiquant le montant total et une colonne avec les quantités vendues :

images/07sob44.png

Utilisez la fonctionnalité Nouvelle table de Power BI et visualisez le résultat dans la vue Données.

Modifiez maintenant votre formule pour n’afficher que les colonnes numéro du livre, titre, quantité et montant :

images/07sob45.png

Table des villes et quantité

Il s’agit cette fois de créer une table présentant la liste des villes pour lesquelles les commandes ont dépassé 25 unités :

images/07sob46.png

Utilisez la fonctionnalité Nouvelle table de Power BI et visualisez le résultat dans la vue Données.

Table des combinaisons ville-genre et montant

Cette fois, vous allez créer une table où figurent toutes...

Corrigés

Les fonctions de table

Table des livres de littérature

Pour répondre à la question, nous allons utiliser CALCULATETABLE, qui va nous permettre de filtrer la table des livres, puis ADDCOLUMNS qui permet d’ajouter des colonnes. 

 Dans l’onglet Modélisation - groupe Calculs, cliquez sur le bouton Nouvelle table.

 Saisissez la formule suivante :

Littérature prix élevés = 
ADDCOLUMNS( 
    CALCULATETABLE( 
        Livres, 
        Livres[Prix catalogue] > 15 , 
        'Catégories'[Signification] = "Littérature" 
    ) , 
    "montant" , [qté] * Livres[Prix catalogue] 
    "qté vendues", [qté] , 
) 

La nouvelle table Littérature prix élévés est créée.

 Affichez-la dans la vue Données.

Le résultat présente toutes les colonnes de la table Livres, plus les deux nouvelles colonnes. Pour être sélectif dans les colonnes composant la nouvelle table, il faut utiliser SELECTCOLUMNS.

images/07sob44.png

 Procédez comme précédemment pour créer la table suivante :

Littérature prix élevés 2 = 
SELECTCOLUMNS( 
    CALCULATETABLE( 
        Livres, 
        Livres[Prix catalogue] > 15 , 
        'Catégories'[Signification] = "Littérature" 
    ) , 
    "id", Livres[Numéro livre] , 
    "titre"...