CALCULATETABLE |
Calcule une table |
| DAX (Data Analysis Expressions) |
Syntaxe
|
CALCULATETABLE(expression[, filter1 [, filter2 [, ...]]])
|
Paramètres
| Nom |
Description |
| expression |
Ce paramètre permet de spécifier l'expression DAX qui retourne une table, comme une table existante ou une fonction de table (exemple : VALUES, FILTER, SUMMARIZE). |
| filter1, filter2, ... |
Ce paramètre permet de définir un ou plusieurs filtres à appliquer ou à modifier dans le contexte d'évaluation de l'expression de table. Ces filtres peuvent être des conditions booléennes, des fonctions de filtre, ou des expressions logiques. |
Description
Cette fonction permet d'évaluer une expression de table dans un contexte de filtre modifié.
Remarques
- CALCULATETABLE modifie le contexte de filtre pour une table, et non une valeur scalaire : Contrairement à CALCULATE, renvoyant un scalaire, CALCULATETABLE
renvoie une table. Cela signifie que l'expression fournie doit produire une table (exemple FILTER, SUMMARIZE, VALUES). L'objectif n'est donc pas de calculer une mesure, mais
de reconstruire un ensemble de lignes en fonction d'un nouveau contexte analytique.
- La fonction effectue une réécriture du contexte avant l'évaluation de la table : Le comportement principal de CALCULATETABLE est de modifier le contexte de
filtre avant d'évaluer l'expression de table. Cela implique que les filtres existants peuvent être remplacés, fusionnés ou étendus dans le but de générer une table
correspondant à des conditions spécifiques. C'est un mécanisme puissant pour créer des sous-ensembles dynamiques.
- Elle permet de créer des tables virtuelles très utilisées dans les mesures complexes : CALCULATETABLE est souvent utilisée dans des fonctions intermédiaires
servant ensuite à agrégations de haut niveau. Par exemple, on peut produire une table filtrée d'un segment client, puis appliquer SUMX dessus. L'idée
est de générer temporairement une table logique sans avoir besoin de l'entreposer dans le modèle.
- L'effet des filtres dépend de leur type (booléens, ALL, CROSSFILTER,...) : Les filtres fournis peuvent être de simples conditions comme Sales[Year] = 2024,
mais aussi des fonctions de manipulation comme ALL(Customer) ou REMOVEFILTERS(Product). Ces filtres peuvent supprimer ou forcer des contraintes de contexte. Le résultat final
de CALCULATETABLE dépend de leur combinaison et de leur ordre d'application.
- La fonction est essentielle pour l'intelligence temporelle basée sur des tables : Les fonctions temporelles, telles que DATESYTD,
DATEADD ou SAMEPERIODLASTYEAR, reposent souvent implicitement sur des tables filtrées. CALCULATETABLE permet
de reconstituer des périodes équivalentes afin d'alimenter des calculs ultérieurs (par exemple : ventes d'il y a 12 mois pour chaque ligne du calendrier). C'est l'équivalent
"table" de ce que CALCULATE fait pour les valeurs.
- Elle est particulièrement utilisée quand un filtre appliqué sur un tableau n'est pas directement exprimable par CALCULATE : Certains scénarios nécessitent des
manipulations complexes de lignes, comme des jointures virtuelles, des sous-ensembles multi-dimensionnels ou des regroupements. Dans ces cas, CALCULATETABLE permet d'appliquer
une logique de filtrage avant d'obtenir une table utilisée comme entrée d'autres fonctions. On ne pourrait pas obtenir ces résultats via CALCULATE seul.
- Le résultat peut varier selon la direction des relations du modèle : CALCULATETABLE, comme CALCULATE, respecte le schéma relationnel du modèle : sens
de propagation des filtres, cardinalités et relations actives. Si une relation est inactive ou bidirectionnelle, la table produite changera. C'est une raison majeure pour
laquelle CALCULATETABLE peut produire des résultats inattendus si le modèle n'est pas bien conçu.
- C'est une brique centrale pour construire des expressions itératives complexes : Beaucoup de formules avancées utilisent CALCULATETABLE comme "préparation
de données" avant un agrégateur comme SUMX, AVERAGEX ou MINX. La table temporaire générée devient
le domaine d'itération des fonctions X. Cela permet une logique de calcul extrêmement précise, contrôlée, et adaptée aux analyses multi-critères.
Dernière mise à jour : Vendredi, le 30 Mai 2025