Partager via


CALCULATETABLE

s’applique à :colonne calculéetable calculéemesurecalcul visuel

Évalue une expression de table dans un contexte de filtre modifié.

Note

Il existe également la fonction CALCULATE. Il effectue exactement la même fonctionnalité, sauf qu’il modifie le contexte de filtre appliqué à une expression qui retourne une valeur scalaire .

Syntaxe

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

Paramètres

Terme Définition
expression Expression de table à évaluer.
filter1, filter2,… (Facultatif) Expressions booléennes ou expressions de table qui définissent des filtres ou des fonctions de modificateur de filtre.

L’expression utilisée comme premier paramètre doit être une table de modèle ou une fonction qui retourne une table.

Les filtres peuvent être les suivants :

  • Expressions de filtre booléennes
  • Expressions de filtre de table
  • Fonctions de modification de filtre

Lorsqu’il existe plusieurs filtres, ils sont évalués à l’aide de l’opérateur logique AND. Cela signifie que toutes les conditions doivent être TRUE en même temps.

Expressions de filtre booléennes

Un filtre d’expression booléen est une expression qui prend la valeur TRUE ou FALSE. Il existe plusieurs règles qu’elles doivent respecter :

  • Ils ne peuvent référencer qu’une seule colonne.
  • Ils ne peuvent pas référencer des mesures.
  • Ils ne peuvent pas utiliser une fonction CALCULATE imbriquée.

À compter de la version de septembre 2021 de Power BI Desktop, les éléments suivants s’appliquent également :

  • Ils ne peuvent pas utiliser des fonctions qui analysent ou retournent une table, sauf si elles sont passées en tant qu’arguments aux fonctions d’agrégation.
  • Ils peuvent contenir une fonction d’agrégation qui retourne une valeur scalaire.

Expression de filtre de table

Un filtre d’expression de table applique un objet table en tant que filtre. Il peut s’agir d’une référence à une table de modèles, mais il est plus probable qu’il s’agit d’une fonction qui retourne un objet table. Vous pouvez utiliser la fonction FILTER pour appliquer des conditions de filtre complexes, y compris celles qui ne peuvent pas être définies par une expression de filtre booléenne.

Fonctions de modificateur de filtre

Les fonctions de modificateur de filtre vous permettent d’ajouter plus que simplement des filtres. Ils vous fournissent un contrôle supplémentaire lors de la modification du contexte de filtre.

Fonction But
REMOVEFILTERS Supprimez tous les filtres ou filtres d’une ou plusieurs colonnes d’une table ou de toutes les colonnes d’une seule table.
ALL 1, ALLEXCEPT, ALLNOBLANKROW Supprimez les filtres d’une ou plusieurs colonnes ou de toutes les colonnes d’une seule table.
KEEPFILTERS Ajoutez un filtre sans supprimer les filtres existants sur les mêmes colonnes.
USERELATIONSHIP Engagez une relation inactive entre les colonnes associées, auquel cas la relation active deviendra automatiquement inactive.
CROSSFILTER Modifiez la direction du filtre (des deux à un, ou d’un seul à la fois) ou désactivez une relation.

1 La fonction ALL et ses variantes se comportent en tant que modificateurs de filtre et en tant que fonctions qui retournent des objets de table. Si la fonction REMOVEFILTERS est prise en charge par votre outil, il est préférable de l’utiliser pour supprimer des filtres.

Valeur de retour

Table des valeurs.

Remarques

  • Lorsque des expressions de filtre sont fournies, la fonction CALCULATETABLE modifie le contexte de filtre pour évaluer l’expression. Pour chaque expression de filtre, il existe deux résultats standard possibles lorsque l’expression de filtre n’est pas encapsulée dans la fonction KEEPFILTERS :

    • Si les colonnes (ou tables) ne sont pas dans le contexte de filtre, les nouveaux filtres sont ajoutés au contexte de filtre pour évaluer l’expression.
    • Si les colonnes (ou tables) se trouvent déjà dans le contexte de filtre, les filtres existants sont remplacés par les nouveaux filtres pour évaluer l’expression CALCULATETABLE.
  • Cette fonction n’est pas prise en charge pour une utilisation en mode DirectQuery lorsqu’elle est utilisée dans les colonnes calculées ou les règles de sécurité au niveau des lignes (RLS).

Exemple

L’exemple suivant utilise la fonction CALCULATETABLE pour obtenir la somme des ventes Internet pour 2006. Cette valeur est ensuite utilisée pour calculer le ratio des ventes Internet par rapport à toutes les ventes pour l’année 2006.

La formule suivante :

= SUMX(
    CALCULATETABLE(
        'InternetSales_USD',
        'DateTime'[CalendarYear] = 2006
    ),
    [SalesAmount_USD]
)

Le tableau suivant s’affiche :

Étiquettes de ligne Internet SalesAmount_USD CalculateTable 2006 Internet Sales Ratio Ventes Internet à 2006
2005 2 627 031,40 $ 5 681 440,58 $ 0.46
2006 5 681 440,58 $ 5 681 440,58 $ 1.00
2007 8 705 066,67 $ 5 681 440,58 $ 1.53
2008 9 041 288,80 $ 5 681 440,58 $ 1.59
Total général 26 054 827,45 $ 5 681 440,58 $ 4.59