Support Formation DAX

Optimisation


Privilégiez les filtres colonne = valeur dans CALCULATE plutôt que FILTER(table, condition) : le moteur peut “pousser” le filtre côté Storage Engine (SE) au lieu d’itérer côté Formula Engine (FE).
Sales Red 2024 :=
CALCULATE(
[Total Sales],
FILTER(ALL('Product'), 'Product'[Color] = "Red"),
FILTER(ALL('Date'), 'Date'[Year] = 2024)
)
Sales Red 2024 :=
CALCULATE(
[Total Sales],
KEEPFILTERS('Product'[Color] = "Red"),
KEEPFILTERS('Date'[Year] = 2024)
)
Réduisez la taille des tables virtuelles (préfiltrer tôt, projeter peu de colonnes).
Évitez les itérateurs inutiles (SUMX, AVERAGEX…) si un agrégat natif suffit (SUM, AVERAGE…).
Sales Qty>1 :=
SUMX(
FILTER(Sales, Sales[Quantity] > 1),
Sales[Amount]
)

Sales Qty>1 :=
CALCULATE(
SUM(Sales[Amount]),
Sales[Quantity] > 1
)

Utilisez VAR pour ne pas recalculer des expressions lourdes plusieurs fois.
Margin % :=
DIVIDE(
CALCULATE(SUM(Sales[Margin])),
CALCULATE(SUM(Sales[Amount]))
)
Margin % :=
VAR SalesAmt = CALCULATE(SUM(Sales[Amount]))
VAR SalesMrg = CALCULATE(SUM(Sales[Margin]))
RETURN DIVIDE(SalesMrg, SalesAmt)
Préférez KEEPFILTERS et IN aux FILTER génériques pour des inclusions simples.
Sales BikesAcc :=
CALCULATE(
[Total Sales],
FILTER('Product', 'Product'[Category] = "Bikes" || 'Product'[Category] = "Accessories")
)

Sales BikesAcc :=
CALCULATE(
[Total Sales],
KEEPFILTERS( 'Product'[Category] IN { "Bikes", "Accessories" } )
)

Utilisez les fonctions Time-Intelligence (DATESYTD, DATEADD…) plutôt que des filtres de date faits main.
Star schema & relations à sens unique : vos DAX seront plus simples et plus rapides.

Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.