Expressions DAX de table

Effectué

La plupart du temps, dans Power BI, vous créez des tables en important des données dans votre modèle à partir d’une source de données externe. Avec les fonctions de table, à la place, vous ajoutez de nouvelles tables en fonction des données que vous avez déjà chargées dans le modèle.

Vue d’ensemble

Les fonctions de table permettent aux utilisateurs Power BI de créer une table intermédiaire, qui est affichée dans le modèle de données et qui peut être utilisée dans d’autres expressions DAX. Les fonctions de table sont des tables temporaires que vous pouvez utiliser, mais elles ne sont pas visibles, car elles ne sont pas émises.

FILTER, VALUES et ALL sont des tables intermédiaires courantes souvent utilisées dans les mesures DAX.

Appliquer la fonction FILTER

La fonction FILTER définit le filtre pour une table spécifique, puis utilise une version condensée d’une table dans un calcul. En d’autres termes, elle retourne une table qui représente un sous-ensemble d’une autre table ou expression.

Par exemple, imaginons que vous disposiez de la table de données suivante :

Table de données qui sera référencée dans l’exemple de fonction FILTER.

Dans le tableau précédent, vous avez des lignes qui mettent en évidence les ventes de Seattle. Le total des ventes pour Seattle en 2018 est de 30.13 (20.46 + 9.67). Pour obtenir ce résultat avec la fonction FILTER :

2018 Sales = SUMX(
  FILTER(
    Sales,
    YEAR( Sales[SalesDate] ) = 2018
  ),
  [Price]*[Quantity]
)

Conseil

CORRÉLATION AVEC TABLEAU : Pour créer le même calcul dans Tableau, utilisez la syntaxe IF/THEN : 2018 Sales = IF YEAR([SalesDate]) = 2018 THEN SUM([Price]*[Quantity]) END

Dans l’extrait de code précédent, vous avez d’abord récupéré les données du contexte de filtre, qui est la table Sales Fact :

Aperçu des données de la table Sales Fact.

Ensuite, vous avez filtré les données de ventes pour inclure uniquement les ventes de 2018.

Aperçu des données de la table Sales Fact mettant en évidence les ventes de 2018.

Enfin, vous avez évalué l’expression, mais uniquement pour les enregistrements de la table temporaire.

Aperçu des données de la table Sales Fact filtrée pour afficher les ventes de 2018.

Appliquer la fonction VALUES

VALUES retourne une table à une colonne qui contient les valeurs distinctes de la table ou de la colonne spécifiée. les valeurs dupliquées sont supprimées et seules les valeurs uniques sont retournées.

Par exemple, supposons que vous devez indiquer quel joueur d’une équipe sportive a la dernière amende en suspens qui doit être payée.

Voici la table de données (appelée Team Fine Details) que vous utiliserez :

Table de données qui sera référencée dans l’exemple de fonction VALUES.

Ce que vous devez faire, c’est tester s’il reste un seul joueur ayant une amende à payer. Si c’est le cas, affichez leur nom. Sinon, affichez le message « more than one player ».

Pour ce faire, vous pouvez utiliser la fonction VALUES :

LastPlayer = IF(
  COUNTROWS( VALUES( 'Team Fine Details'[SportsTeam] ) ) = 1,
  VALUES( 'Team Fine Details'[PlayerName] ),
  "More than one player"
)

Conseil

CORRÉLATION AVEC TABLEAU : Voici comment effectuer le même calcul dans Tableau : LastPlayer = IF COUNTD([SportsTeam]) = 1 THEN [PlayerName] ELSE "More than one player" END

Cette mesure ressemble au rapport/à la visualisation ci-dessous :

Exemple de rapport avec le calcul LastPlayer inclus.

Appliquer la fonction ALL

La fonction ALL indique à Power BI d’examiner une table spécifique, de prendre toutes les valeurs de celle-ci (sans filtrer la table) et d’utiliser ce sous-ensemble de valeurs dans une expression.

Une utilisation courante de la fonction ALL est lorsque vous souhaitez connaître le pourcentage du total d’une mesure agrégée.

Par exemple, considérez le scénario de l’équipe sportive. Votre patron est satisfait de vos résultats de la tâche précédente, mais il souhaite savoir quelle équipe a le pourcentage le plus élevé d’amendes.

Dernier rapport avec le calcul LastPlayer inclus.

La première étape consiste à créer une mesure pour le total général des amendes en suspens :

TotalAllFineAmount = CALCULATE( [TotalFineAmount], ALL( 'Team Fine Details'[SportsTeam] ) )

Conseil

CORRÉLATION AVEC TABLEAU : C’est comme cela que vous feriez le même calcul dans Tableau, à l’aide de l’expression FIXED LOD. Vous regroupez le total de TotalFineAmount au niveau de la table : TotalAllFineAmount = { FIXED : SUM([TotalFineAmount]) }

La seconde étape consiste à créer le pourcentage de la mesure totale à l’aide de la fonction DIVIDE :

FineAmountPercentOfTotal = DIVIDE( [TotalFineAmount], [TotalAllFineAmount] )

Conseil

CORRÉLATION AVEC TABLEAU : Voici comment effectuer le même calcul dans Tableau : FineAmountPercentOfTotal = SUM([TotalFineAmount]) / SUM([TotalAllFineAmount])