Partager via


CALCULATE

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

Évalue une expression dans un contexte de filter modifié.

Note

Il existe également la fonction CALCULATETABLE. Il effectue exactement la même fonctionnalité, except il modifie le contexte filter appliqué à une expression qui retourne un objet table .

Syntaxe

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

Paramètres

Terme Définition
expression Expression à évaluer.
filter1, filter2,… (Facultatif) Les expressions booléennes or expressions de table qui définissent filters, orfilter fonctions de modificateur.

L’expression utilisée comme paramètre first est essentiellement la même qu’une measure.

Filters peut être :

  • Expressions de filter booléennes
  • Expressions de table filter
  • fonctions de modification Filter

Lorsqu’il existe plusieurs filters, ils peuvent être évalués à l’aide de l’opérateur logique AND (&&) , ce qui signifie que les conditions all doivent être TRUE, or par l’opérateur logique OR (||), ce qui signifie que l’une ou l’autre condition peut être true.

Expressions de filter booléennes

Une expression booléenne filter est une expression qui prend la valeur TRUEorFALSE. Il existe plusieurs règles qu’elles doivent respecter :

  • Ils peuvent référencer des colonnes à partir d’une seule table.
  • 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 or 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 un valuescalaire. Par exemple
    Total sales on the last selected date =
    CALCULATE (
        SUM ( Sales[Sales Amount] ),
        'Sales'[OrderDateKey] = MAX ( 'Sales'[OrderDateKey] )
    )
    

Expression de table filter

Une expression de table filter applique un objet table en tant que filter. 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 filter complexes, y compris celles qui ne peuvent pas être définies par une expression de filter booléenne.

fonctions de modificateur Filter

Filter fonctions de modificateur vous permettent d’effectuer plus que simplement d’ajouter filters. Ils vous fournissent un contrôle supplémentaire lors de la modification de filter contexte.

Fonction But
REMOVEFILTERS Supprimez allfilters, orfilters d’une or plus de colonnes d’une table, or de all colonnes d’une seule table.
ALL 1, ALLEXCEPT, ALLNOBLANKROW Supprimez filters d’une or plus de colonnes, or de all colonnes d’une table unique.
KEEPFILTERS Ajoutez filter sans supprimer les filters existantes sur les mêmes colonnes.
USERELATIONSHIP Engagez une relation inactive entre related colonnes, auquel cas la relation active deviendra automatiquement inactive.
CROSSFILTER Modifiez filter direction (des deux à un, or d’un seul vers les deux) or désactiver une relation.

1 La fonction ALLand ses variantes se comportent comme des modificateurs filterand en tant que fonctions qui retournent des objets de table. If la fonction REMOVEFILTERS est prise en charge par votre outil, il est préférable de l’utiliser pour supprimer filters.

Retourner value

Le value qui est le résultat de l’expression.

Remarques

  • Lorsque filter expressions sont fournies, la fonction CALCULATE modifie le contexte filter pour evaluate l’expression. Pour chaque expression filter, il existe deux résultats standard possibles lorsque l’expression filter est not encapsulée dans la fonction KEEPFILTERS :

    • If les colonnes (or tables) ne figurent pas dans le contexte filter, de nouvelles filters seront ajoutées au contexte filter pour evaluate l’expression.
    • If les colonnes (tablesor) sont déjà dans le contexte filter, le filters existant sera remplacé par le nouveau filters pour evaluate l’expression CALCULATE.
  • La fonction CALCULATE utilisée sans filters atteint une exigence spécifique. Il transfère le contexte de ligne vers filter contexte. Il est nécessaire lorsqu’une expression (not un modèle measure) qui résume les données du modèle doit être évaluée dans le contexte de ligne. Ce scénario peut se produire dans une formule de colonne calculée or lorsqu’une expression dans une fonction d’itérateur est évaluée. Notez que lorsqu’un modèle measure est utilisé dans le contexte de ligne, la transition de contexte est automatique.

  • Cette fonction est not prise en charge pour une utilisation en mode DirectQuery lorsqu’elle est utilisée dans les colonnes calculées or règles de sécurité au niveau des lignes (RLS).

Exemples

La table Sales suivante measure définit un résultat de chiffre d’affaires, mais uniquement pour les produits qui ont la couleur bleue.

Vous pouvez utiliser des exemples dans cet article avec le modèle sample Adventure Works DW 2020 Power BI Desktop. Pour obtenir le modèle, consultez DAXsample modèle.

Blue Revenue =
CALCULATE(
    SUM(Sales[Sales Amount]),
    'Product'[Color] = "Blue"
)
Catégorie Montant des ventes Blue Revenue
Accessoires 1 272 057,89 $ 165 406,62 $
Vélos 94 620 526,21 $ 8 374 313,88 $
Vêtement 2 117 613,45 $ 259 488,37 $
Composants 11 799 076,66 $ 803 642,10 $
total 109 809 274,20 $ 9 602 850,97 $

La fonction évalue la de la table Ventes colonne Sales Amount dans un contexte de modifié. Une nouvelle filter est ajoutée à la table Productcolonne Color (or), le filter remplace les filter déjà appliquées à la colonne.

La table Sales suivante measure définition produit un ratio de ventes par rapport aux ventes pour all canaux de vente.

Canal Montant des ventes Chiffre d’affaires % Canal total
Internet 29 358 677,22 $ 26.74%
Revendeur 80 450 596,98 $ 73.26%
total 109 809 274,20 $ 100.00%
Revenue % Total Channel =
DIVIDE(
    SUM(Sales[Sales Amount]),
    CALCULATE(
        SUM(Sales[Sales Amount]),
        REMOVEFILTERS('Sales Order'[Channel])
    )
)

La fonction DIVIDE divise une expression qui additionne la table SalesSales Amount colonne value (dans le contexte filter) par la même expression dans un contexte de filter modifié. Il s’agit de la fonction CALCULATE qui modifie le contexte filter à l’aide de la fonction REMOVEFILTERS, qui est une fonction de modificateur filter. Il supprime de la table commande canal colonne.

L'Customer table calculée ci-dessous classe les clients en classe de fidélité. C’est un scénario très simple : lorsque le chiffre d’affaires produit par le client est inférieur à 2500 $, il est classé comme faible; sinon, ils sont High.

Customer Segment =
IF(
    CALCULATE(SUM(Sales[Sales Amount]), ALLEXCEPT(Customer, Customer[CustomerKey])) < 2500,
    "Low",
    "High"
)

Dans cet exemple, le contexte de ligne est converti en contexte filter. Il est appelé transition de contexte. La fonction supprime des colonnes de table Customer Customer la colonne CustomerKey.

Filter contexte
contexte ligne
CALCULATETABLE fonction
fonctions Filter