Excel DAX - Exécution de calculs complexes

Les formules DAX peuvent effectuer des calculs complexes qui impliquent des agrégations personnalisées, un filtrage et l'utilisation de valeurs conditionnelles. Vous pouvez effectuer les opérations suivantes avec DAX -

  • Créez des calculs personnalisés pour un tableau croisé dynamique.
  • Appliquez un filtre à une formule DAX.
  • Supprimez les filtres de manière sélective pour créer un rapport dynamique.
  • Utilisez une valeur provenant d'une boucle externe.

Création de calculs personnalisés pour un tableau croisé dynamique

Les fonctions DAX CALCULATE et CALCULATETABLE sont puissantes et flexibles. Ils sont utiles pour définir les champs calculés. Ces fonctions DAX vous permettent de modifier le contexte dans lequel le calcul sera effectué. Vous pouvez également personnaliser le type d'agrégation ou d'opération mathématique à effectuer.

Fonction CALCULATE

CALCULER (<expression>, [<filter1>], [<filter2>]…)

La fonction CALCULATE évalue l'expression donnée dans un contexte modifié par zéro ou plusieurs filtres spécifiés.

Si vos données ont été filtrées, la fonction CALCULATE modifie le contexte dans lequel les données sont filtrées et évalue l'expression dans le nouveau contexte que vous spécifiez par les filtres. Cela signifie que tous les filtres existants sur la colonne spécifiée sont supprimés et le filtre utilisé dans l'argument de filtre est appliqué à la place.

Exemple

Supposons que vous souhaitiez afficher le pourcentage de médailles filtré par pays par nom de pays. Votre calcul doit obtenir la valeur de pourcentage remplaçant le filtre que vous appliquez sur le pays dans le tableau croisé dynamique.

  • Définissez un champ calculé - Pourcentage du nombre de médailles, comme illustré dans la capture d'écran suivante.

Avec cette formule DAX, toutes les lignes de la table Results sont prises en compte dans la fonction CALCULATE avec le filtre contenant la fonction ALL. De cette façon, vous avez le nombre total dans le dénominateur.

Votre tableau croisé dynamique sera comme indiqué dans la capture d'écran suivante.

Dans la capture d'écran ci-dessus, le pays est filtré sur les États-Unis et les 18 premières valeurs sont affichées dans le tableau croisé dynamique. Ensuite, vous pouvez filtrer dynamiquement les valeurs dans le tableau croisé dynamique. Toutefois, les calculs seront corrects par la formule DAX personnalisée que vous avez utilisée.

La fonction CALCULATETABLE prend une table de valeurs et effectue la même action que celle de la fonction CALCULATE.

Filtrage des données dans des formules

Vous pouvez créer des filtres dans les formules DAX, pour sélectionner les valeurs des données source à utiliser dans les calculs. Vous pouvez le faire en définissant une expression de filtre et en l'utilisant avec la table qui est une entrée de la formule DAX.

L'expression de filtre vous permet d'obtenir un sous-ensemble des données source. Le filtre est appliqué de manière dynamique chaque fois que vous mettez à jour les résultats de la formule DAX, en fonction du contexte actuel de vos données et vous pouvez être assuré de résultats précis et attendus.

L'expression de filtre contient généralement une fonction de filtre DAX qui renvoie uniquement les lignes sélectionnées de la table, qui peut ensuite être utilisée comme argument pour une autre fonction DAX que vous utilisez pour l'agrégation de données.

Exemple

La capture d'écran suivante montre la définition d'un champ calculé qui donne le nombre de médailles uniquement pour les sports d'été.

Avec ce champ calculé, le tableau croisé dynamique ressemble à celui illustré dans la capture d'écran suivante.

Comme vous pouvez le constater, les valeurs du tableau croisé dynamique sur le côté droit avec le nouveau champ calculé correspondent à celles qui se trouvent dans le tableau croisé dynamique sur le côté gauche avec le filtre sur le champ Saison appliqué explicitement.

Note - Les fonctions de filtre et de valeur DAX renvoient une table, mais ne renvoient jamais la table ou les lignes directement au modèle de données et sont donc toujours incorporées dans une autre fonction DAX.

Pour plus de détails sur ces fonctions DAX, reportez-vous au chapitre - Fonctions de filtre DAX.

Ajouter et supprimer des filtres dynamiquement

Les formules DAX que vous utilisez dans un tableau croisé dynamique peuvent être affectées par le contexte de tableau croisé dynamique. Cependant, vous pouvez modifier le contexte de manière sélective en ajoutant ou en supprimant des filtres. Vous pouvez utiliser les fonctions DAX ALL et ALLEXCEPT pour sélectionner dynamiquement les lignes indépendamment du contexte du tableau croisé dynamique.

En outre, vous pouvez utiliser les fonctions DAX DISTINCT et VALUES pour renvoyer des valeurs distinctes.

Utilisation d'une valeur d'une boucle externe

Vous pouvez utiliser une valeur d'une boucle précédente pour créer un ensemble de calculs associés avec la fonction DAX EARLIER. Cette fonction DAX prend en charge jusqu'à deux niveaux de boucles imbriquées.