CALCULATETABLE
S’applique à :Colonne calculéeTable calculéeMesureCalcul de visuel
É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 |