Measure vs Calculated Column in Power BI
The first real decision you make in a Power BI model is where a calculation belongs.
Master the Data Analysis Expressions language.
17 tutorials in this category
DAX is where a Power BI report stops being a reshuffled spreadsheet and starts producing numbers you could not get any other way: year-to-date revenue that respects a slicer, share of total that ignores one, ranking that recalculates at whatever granularity the visual asks for. Almost all of it runs through two ideas — filter context, and the row-by-row evaluation that iterators perform — and almost all DAX bugs come from losing track of which one is in play.
If you are new to the language, start with the basics guide, then read filter context and row context before touching CALCULATE. That order matters: CALCULATE is short and simple only once you already understand what it is modifying. From there the natural progression is CALCULATE itself, then time intelligence, then the iterator functions — and only after that the optimisation material, because tuning a formula you do not understand is guesswork.
The recurring mistake at this level is reaching for nested IFs where SWITCH belongs, or rebuilding a measure in every visual instead of fixing the model underneath. Each article here states the evaluation order it relies on and links to Microsoft's reference for the function involved, so you can check the behaviour against your own build rather than trusting a screenshot.
The first real decision you make in a Power BI model is where a calculation belongs.
DAX speed is decided by what VertiPaq and the formula engine do at query time, not by how clever the formula looks.
EARLIER reaches a parent row context from inside a nested iteration. When you still need it, and the cleaner alternatives to use instead.
DAX Studio is the free tool for writing, tracing, and tuning DAX. Learn how to connect to a Power BI model, read a query plan, and find slow measures.
Percent of total with ALL, ALLEXCEPT or a ratio measure: which pattern respects slicers, which ignores them, and when each is correct.
Most slow reports are slow because of DAX. Ten patterns that fix the common cases, with Server Timings readings to prove it worked.
DAX UDFs are GA as of June 2026. Package tax, currency and margin logic once with the FUNCTION keyword, then reuse it anywhere.
RUNNINGSUM, MOVINGAVERAGE and PREVIOUS run at the visual level, replacing dozens of measures. What they can and cannot do.
VAR makes long measures readable, stops repeated evaluation and removes a class of context-transition bugs. Scope rules and patterns.
SWITCH replaces nested IFs with readable logic. Four patterns, the order-of-evaluation rule, and the mistakes that make it return blank.
RANKX ranks rows by any measure, but it is easy to get wrong. Syntax, four ranking patterns, ties handling and the usual mistakes.
Fifteen DAX errors that look cryptic, from blank results to wrong totals to circular dependencies, with the exact fix for each.
Ten errors nearly every beginner makes: data types, DAX context, dashboard layout. The fix for each, and why it happens.
SUM reads a column; SUMX evaluates a row expression. When the difference changes your totals, and when SUMX is the only correct choice.
Two evaluation contexts govern every DAX result. How they differ, how they interact, and the mental model that predicts a formula's output.
CALCULATE is the only function that changes filter context. Syntax, evaluation order and the three patterns behind advanced DAX.
What DAX is, why measures and calculated columns are not interchangeable, and the five formulas to write on your first day.