Reverse-Engineer Any DAX Measure in Plain English
March 23, 2026
By Tony Thomas
TL;DR: You inherit a Power BI report with 50 measures and no documentation. You need to understand what each one calculates before you can modify anything. Reading complex DAX line by line takes 10 to 20 minutes per measure, and general AI tools guess at your schema. Model Studio uses your actual TMDL to give plain-English explanations grounded in your real tables, columns, and relationships. Paste a measure, read the explanation, make your edit, move on.
The Measure You Didn't Write
You open a Power BI report someone else built. The report has 50 measures. You need to modify one, but first you need to understand what it does.
The measure is a CALCULATE wrapped in FILTER wrapped in ALL, with a variable pattern and a SWITCH statement. No comments. No documentation.
You start reading it top to bottom. Twenty minutes later you have traced the filter context through three layers and you still aren't sure about the edge case behavior.
This is not a knowledge gap. Experienced DAX developers hit this wall too. Complex measures are just hard to read without context. The person who wrote it understood the business logic at the time. That context left when they did.
Why DAX Measures Are Hard to Read
DAX is a functional language that evaluates context, not rows. That makes it powerful. It also makes it hard to trace mentally.
CALCULATE modifies filter context in ways that are not visible in the code itself. You have to hold the filter context model in your head while reading every line. Which filters are active? Which ones did CALCULATE just override? The answers depend on where the measure is used, not just what the code says.
Variables create intermediate states. VAR/RETURN patterns help readability, but each variable captures the evaluation context at the point it was defined. Change the order and you change the result. Tracking which context each variable captured requires careful attention.
Nested iterators multiply complexity. SUMX inside FILTER inside ADDCOLUMNS produces multiple evaluation contexts simultaneously. The row context from the iterator interacts with the filter context from CALCULATE. Even experienced developers pause to untangle these.
Time intelligence functions interact with the date table. SAMEPERIODLASTYEAR, DATEADD, and PARALLELPERIOD all depend on how your date table is configured. A continuous date range, the right data category marking, and proper relationships all affect behavior. None of that is visible in the measure code itself.
The result: even a 15-line measure can take 10 to 20 minutes to fully understand if you didn't write it.
The Manual Approach (And Why It Breaks Down)
The typical workflow: read the measure line by line, trace which tables each function references, check the relationships in the model view, test with sample data in Power BI Desktop.
This works for simple measures. It does not scale.
When you inherit a report with 50 measures, some referencing others, the dependency chain alone can take an hour to map. Which measure calls which? What happens when you change the filter context on one that three others depend on?
You could paste the measure into a general AI tool. That works sometimes. But without schema context (which tables exist, what columns they contain, how the relationships are configured), the explanation is often wrong or generic. The AI guesses at table names. It assumes standard patterns that may not match your model.
The key problem: general tools guess at your schema. A purpose-built tool should know it.
A Better Way: Paste, Explain, Understand
Model Studio's Explain and Edit feature closes that gap. Paste any DAX measure. Get a breakdown in plain English.
The explanation covers:
- What the measure calculates in business terms, not code terms
- Which tables and columns it references from your actual model
- A step-by-step walkthrough of the evaluation logic, including filter context transitions
- A complexity rating so you know what you're dealing with before diving in
- Notes on unusual patterns or potential issues (bidirectional relationships affecting results, missing date table configurations, circular dependencies)
Because you already provided your TMDL schema (by pasting or uploading it), the explanation is grounded in your actual model. It knows your table names, your column types, your relationships. It does not guess.
Here is what that looks like in practice:
Take a YTD Sales measure:
YTD Sales =
VAR CurrentSales =
CALCULATE(
SUM(Sales[Amount]),
DATESYTD(DateTable[Date])
)
VAR PriorYearSales =
CALCULATE(
SUM(Sales[Amount]),
DATESYTD(SAMEPERIODLASTYEAR(DateTable[Date]))
)
RETURN
CurrentSales
Model Studio explains this as: "This measure calculates year-to-date sales by summing the Amount column from your Sales table, filtered to all dates from January 1 through the current date in your DateTable. The PriorYearSales variable calculates the same YTD sum for the previous year but is defined and never used in the RETURN statement, which may indicate an incomplete implementation or leftover code from a previous version."
That last sentence is the kind of insight that saves you 15 minutes of staring at the code wondering why PriorYearSales exists but isn't returned. A human reviewer would catch it eventually. The explanation catches it immediately.
The explanation is not a replacement for understanding DAX. It is a starting point. You read the explanation, then go back to the code with context. The twenty-minute puzzling session becomes a two-minute read followed by a focused review.
Try it yourself. Paste your TMDL into Model Studio and then paste any measure. The explanation takes seconds.
Beyond Explanation: Edit Through Conversation
Once you understand what a measure does, the next step is often modifying it. "This calculates YTD sales, but I need it to exclude returns." Or: "Can you add a comparison to the same period last year?"
Model Studio lets you describe the change in plain English. It modifies the DAX and shows you the updated measure.
You can also generate entirely new measures from a description if you're building from scratch.
The key difference from starting over: the AI understands the existing measure, your schema context, and the specific change you want. It produces a targeted edit, not a rewrite.
This closes the loop. Understand the measure, then modify it, all in the same conversation. Copy the result into Power BI Desktop when you're satisfied.
Works with any Power BI license. No Premium capacity required. No Fabric subscription needed. If you can export your model's TMDL (or copy it from source control), you can use Model Studio to audit your model, explain your measures, and edit them.
When This Matters Most
Onboarding to a new client or team. You inherit 30 reports with hundreds of measures. You need to get productive in days, not spend a week reading DAX. Run every measure through Explain and Edit and you have a working understanding of the entire calculation layer in an afternoon.
Preparing for a model migration. Moving from Import to Direct Lake, or consolidating workspaces. You need to understand every measure to know what will break. Plain-English explanations make the impact assessment concrete.
Code review. A colleague wrote 15 new measures. You need to review them before they go to production. Reading plain-English summaries first, then reviewing the actual DAX, is faster than reading raw DAX cold for each one.
Documentation. Your team wants measure documentation but nobody wants to write it. The explanations from Model Studio become your first draft. Edit them for accuracy and publish to your team wiki.
The Measure Is Not the Problem
Complex DAX is not bad DAX. Sometimes the business logic genuinely requires nested iterators, multi-step calculations, and intricate filter context manipulation. The complexity is earned.
The problem is the gap between what the code says and what it means. That gap costs time every time someone new reads the measure, every time you revisit code you wrote six months ago, every time a colleague asks "what does this one do?"
Model Studio bridges that gap. Paste a measure, get an explanation, make your edit, move on.
Paste any DAX measure into Model Studio and get an explanation in seconds. Try it free.

Founder of Draft BI, building the design-first companion for Power BI report development. Writing about PBIR, WCAG accessibility, DAX measures, and the workflows that help Power BI developers and analysts deliver better reports faster.