Insight · Microsoft Power BI

    What Is DAX? Power BI's Formula Language, Explained Without the Fear

    DAX is the language behind every Power BI measure: powerful, compact, famous for humbling Excel experts. Why filter context is the whole game, and how to learn it without pain.

    Nick de Vrye, CTOPublished 7 September 20266 min read read
    Navy Solv Systems title card reading 'What Is DAX?' with a spark burst motif.

    In Short: A Small Language With One Big Idea

    DAX (Data Analysis Expressions) is the formula language of Power BI: every measure on every report - total revenue, margin percentage, growth versus last year - is DAX. It looks like Excel formulas, which lures spreadsheet experts in, and then behaves nothing like them, which is where the famous frustration begins.

    The whole difficulty, and the whole power, is one idea: filter context. Master it and DAX becomes compact and elegant; skip it and every second measure is a mystery. This guide explains the idea properly, because it is the difference between copying formulas from forums and actually writing them.

    The One Big Idea: Filter Context

    A DAX measure is a definition, not a value. Total Sales = SUM of the amount column - defined once, evaluated everywhere, and its result depends entirely on the filters in force at each evaluation. In a matrix by product and month, every cell evaluates the same measure under different filters (that product, that month); a slicer set to Germany filters every evaluation on the page.

    This is why one measure replaces a thousand spreadsheet formulas: the semantic model's relationships propagate filters through the tables, and the measure recalculates correctly for every context a user can create. It is also why the star schema matters so much - filter propagation is only predictable when the model structure is right. Most "DAX problems" we are called to fix are model problems wearing a DAX costume.

    And it is why CALCULATE is the most important function in the language: it is the one that changes filter context - sales for all countries regardless of the slicer, sales for the same period last year. Every intermediate DAX skill is some variation of deliberately manipulating context.

    What You Actually Write

    • Measures - the core: aggregations and business logic evaluated under filter context at query time
    • Calculated columns - row-level values computed at refresh; useful occasionally, overused chronically (they bloat models and dodge the lesson)
    • Time intelligence - year-to-date, prior period, moving averages: built-in patterns over a proper date table
    • Variables - VAR/RETURN for readable, debuggable measures; the single best habit for beginners

    A useful discipline from day one: name measures in business language and format them properly, because Copilot and every AI feature now read your measure names and descriptions as meaning.

    Learning It Without the Pain

    The route we teach, in order: understand the star schema first; write ten basic aggregation measures; then spend real time on CALCULATE and filter context before touching anything clever; add time intelligence; and only then meet the advanced iterators. Two accelerants make 2026 easier than the folklore suggests: Copilot drafts and explains measures - superb for decoding an inherited model - and performance tooling tells you when elegance is expensive, a topic our report performance guide covers.

    The honest framing for managers: DAX fluency is a modelling skill, not a syntax skill, and it concentrates in the semantic model layer where one good author serves hundreds of report consumers. Train accordingly.

    Sources and Further Reading

    Frequently asked

    Data Analysis Expressions: the formula language of Power BI (and Analysis Services and Power Pivot). It is how you define measures - calculations like total sales, margin percentage or year-on-year growth - that recalculate correctly under every filter a user applies.

    It borrows Excel's syntax style, which is exactly why Excel experts get ambushed: the resemblance is superficial. Excel formulas compute over cells you point at; DAX computes over tables under a filter context that changes with every visual, slicer and click. The mental model, not the syntax, is the learning curve.

    The set of filters in force when a measure evaluates: the visual's row, the slicers, the page filters, everything. One measure returns different values in every cell of a matrix because each cell evaluates under different filters. Understanding this - and how CALCULATE changes it - is 80% of understanding DAX.

    A calculated column computes once per row at refresh and stores the result; a measure computes at query time under the current filters. Prefer measures for aggregations and business logic; use calculated columns sparingly, for things that genuinely belong on a row.

    Copilot in Power BI drafts and explains measures credibly, which lowers the syntax barrier. It does not remove the need to understand filter context: you still have to judge whether the generated measure means what the business asked, which is precisely the skill worth learning.