CALCULATETABLE

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

Notes

Vous avez également la fonction CALCULATE. Elle opère exactement de la même façon, sauf qu’elle 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, etc. (Facultatif) Expressions booléennes ou de table qui définissent des filtres ou des fonctions de modification de filtre.

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

Exemples de filtres :

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

Si vous avez plusieurs filtres, ils sont évalués à l’aide de l’opérateur logique AND. Cela signifie que toutes les conditions doivent avoir la valeur TRUE en même temps.

Expressions de filtre booléennes

Un filtre d’expression booléenne est une expression qui prend la valeur TRUE ou FALSE. Ces filtres doivent respecter plusieurs règles :

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

Depuis la version de septembre 2021 de Power BI Desktop, les conditions suivantes s’appliquent également :

  • Ils ne peuvent pas utiliser les fonctions qui analysent ou retournent une table, sauf s’ils sont passés 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 de table en tant que filtre. Vous pouvez avoir une référence à une table de modèle, mais il s’agit plus vraisemblablement d’une fonction qui retourne un objet de table. Vous pouvez utiliser la fonction FILTER pour appliquer des conditions de filtre complexes, comme celles qui ne peuvent pas être définies par une expression de filtre booléenne.

Fonctions de modification de filtre

Les fonctions de modification de filtre vous permettent d’effectuer des actions qui vont au-delà du simple ajout de filtres. Elles vous offrent davantage de contrôle lors de la modification du contexte de filtre.

Fonction Objectif
REMOVEFILTERS Supprimer tous les filtres ou ceux d’une ou plusieurs colonnes d’une table ou de toutes les colonnes d’une seule table.
ALL1, ALLEXCEPT, ALLNOBLANKROW Supprimer les filtres d’une ou plusieurs colonnes ou de toutes les colonnes d’une seule table.
KEEPFILTERS Ajouter un filtre sans supprimer les filtres existants sur les mêmes colonnes.
USERELATIONSHIP Engager une relation inactive entre des colonnes associées, auquel cas la relation active devient automatiquement inactive.
CROSSFILTER Modifier la direction du filtre (des deux directions à une direction ou vice-versa) ou désactiver une relation.

1 La fonction ALL et ses variantes se comportent à la fois comme des modificateurs de filtre et comme des 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 renvoyée

Table de valeurs.

Notes

  • Quand 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 quand l’expression de filtre n’est pas wrappée dans la fonction KEEPFILTERS :

    • Si les colonnes (ou tables) ne sont pas dans le contexte du filtre, de nouveaux filtres sont ajoutés au contexte de filtre pour évaluer l’expression.
    • Si les colonnes (ou tables) sont déjà dans le contexte du 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 quand elle est utilisée dans des colonnes calculées ou des 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 sera utilisée ultérieurement pour calculer le rapport entre les ventes Internet et l’ensemble des ventes sur l’année 2006.

La formule suivante :

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

Le tableau suivant est obtenu :

Étiquettes de ligne Montant des ventes Internet (USD) CalculateTable - Ventes Internet en 2006 Rapport entre les ventes Internet et les ventes sur 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