Back to Resources
Technical Guide

DAX vs LOD Expressions: A Translation Guide

Moving from Tableau to Power BI? Here is how to translate your favorite Level of Detail expressions into DAX.

The biggest hurdle for Tableau developers moving to Power BI is usually the shift from LOD Expressions (Level of Detail) to DAX Filter Context. While they achieve similar results, the mental model is inverted.

The "FIXED" Pattern

Goal: Calculate a value at a specific dimension level, ignoring the view's granularity.

Tableau
{FIXED [Region] : SUM([Sales])}
Power BI (DAX)
CALCULATE( SUM(Sales[Amount]), ALLEXCEPT(Sales, Sales[Region]) )
The "EXCLUDE" Pattern

Goal: Calculate a value removing a specific dimension from the current view.

Tableau
{EXCLUDE [Category] : SUM([Sales])}
Power BI (DAX)
CALCULATE( SUM(Sales[Amount]), ALL(Sales[Category]) )
The "INCLUDE" Pattern

Goal: Calculate at a lower level of granularity than the view, then aggregate up.

Tableau
AVG( {INCLUDE [Order ID] : SUM([Sales])} )
Power BI (DAX)
AVERAGEX( VALUES(Sales[Order ID]), CALCULATE(SUM(Sales[Amount])) )

Note: DAX Iterators (AVERAGEX, SUMX) are the closest equivalent to INCLUDE logic.

Struggling with Complex Calculations?

Our migration team includes DAX Masters who can optimize even the craziest nested LODs.

Get Expert Help