Fonction CALCULATE
Évalue une expression dans un contexte modifié par les filtres spécifiés.
Syntaxe
CALCULATE(<expression>,<filter1>,<filter2>…)
Paramètres
Terme |
Définition |
---|---|
expression |
Expression à évaluer. |
filter1,filter2,… |
(facultatif) Liste d'expressions booléennes séparées par des virgules ou expression de table qui définit un filtre. |
L'expression utilisée comme premier paramètre est pour l'essentiel identique à une mesure.
Les restrictions suivantes s'appliquent aux expressions booléennes utilisées comme arguments :
L'expression ne peut pas faire référence à une mesure.
L'expression ne peut pas utiliser de fonction CALCULATE imbriquée.
L'expression ne peut pas utiliser de fonctions qui analysent ou retournent une table, notamment les fonctions d'agrégation.
Toutefois, une expression booléenne peut utiliser n'importe quelle fonction qui recherche une valeur unique ou calcule une valeur scalaire.
Valeur de retour
Valeur qui résulte de l'expression.
Notes
Si les données ont été filtrées, la fonction CALCULATE modifie le contexte dans lequel les données sont filtrées et évalue l'expression dans le nouveau contexte que vous spécifiez. Pour chaque colonne utilisée dans un argument de filtre, tout filtre existant sur cette colonne est supprimé et le filtre utilisé dans l'argument de filtre est appliqué à la place.
Exemple
Pour calculer le ratio des ventes du revendeur (Reseller Sales) actuel par rapport aux ventes de tous les revendeurs (All Reseller Sales), vous ajoutez au tableau croisé dynamique une mesure qui calcule la somme des ventes pour la cellule active (le numérateur), puis divise cette somme par le montant total des ventes pour tous les revendeurs (le dénominateur). Pour vous assurer que le dénominateur reste le même quelle que soit la façon dont le tableau croisé dynamique filtre ou regroupe les données, la partie de la formule qui représente le dénominateur doit utiliser la fonction ALL pour désactiver tous les filtres et créer le total approprié.
Le tableau suivant présente les résultats obtenus lorsque la nouvelle mesure, nommée All Reseller Sales Ratio, est créé à l'aide de la formule fournie dans la section de code.
Pour voir comment cela fonctionne, ajoutez le champ CalendarYear à la zone Étiquettes de ligne du tableau croisé dynamique et le champ ProductCategoryName à la zone Étiquettes de colonne. Ajoutez ensuite la nouvelle mesure à la zone Valeurs du tableau croisé dynamique. Pour présenter les nombres sous forme de pourcentages, appliquez la mise en forme des nombres de type pourcentage à la zone du tableau croisé dynamique qui contient la nouvelle mesure, All Reseller Sales Ratio.
All Reseller Sales |
Étiquettes de colonne |
|
|
|
|
---|---|---|---|---|---|
Étiquettes de ligne |
Accessories |
Bikes |
Clothing |
Components |
Total général |
2005 |
0.02% |
9.10% |
0.04% |
0.75% |
9.91% |
2006 |
0.11% |
24.71% |
0.60% |
4.48% |
29.90% |
2007 |
0.36% |
31.71% |
1.07% |
6.79% |
39.93% |
2008 |
0.20% |
16.95% |
0.48% |
2.63% |
20.26% |
Total général |
0.70% |
82.47% |
2.18% |
14.65% |
100.00% |
=( SUM('ResellerSales_USD'[SalesAmount_USD]))
/CALCULATE( SUM('ResellerSales_USD'[SalesAmount_USD])
,ALL('ResellerSales_USD'))
L'expression CALCULATE dans le dénominateur permet à l'expression de somme d'inclure toutes les lignes dans le calcul. Cela remplace les filtres implicites pour CalendarYear et ProductCategoryName qui existent pour la partie numérateur de l'expression.
Fonctions connexes
Si la fonction CALCULATE requiert comme premier argument une expression qui retourne une valeur individuelle, la fonction CALCULATETABLE accepte une table de valeurs.