Power BI · Copilot DAX · Verified June 2026

Power BI DAX with AI – Write DAX with Copilot

A practitioner reference for report authors and model owners — what Copilot actually does, what prompts work, where it breaks, and what changed in 2025–2026. Verified against Microsoft Learn and the Power BI June 2026 feature release.

DAX query view · Copilot (Ctrl + I)
Your prompt

“YoY Sales Growth % for the current selection, blank-safe, formatted as percentage”

Copilot output
— Returns BLANK() for new products or periods with no prior-year data. — Avoids the silent 0% that DIVIDE gives when PriorSales is genuinely missing. YoY Sales Growth % = VAR CurrentSales = [Total Sales] VAR PriorSales = CALCULATE( [Total Sales], DATEADD( ‘Date'[Date], -1, YEAR ) ) RETURN IF( ISBLANK( PriorSales ) || PriorSales = 0, BLANK(), DIVIDE( CurrentSalesPriorSales, PriorSales ) )
Requirements: Fabric capacity (F64+) or PPU with Fabric trial · Copilot enabled in tenant admin · Workspace assigned to that capacity · Not available in sovereign clouds. See Copilot requirements.
Verified: June 2026 By A.J., UIG Data Lab Write DAX with Copilot docs
What changed in 2025–2026

Feature updates worth knowing

A lot of Copilot coverage still describes the 2024 launch state. Here’s what’s actually different now.

GA · 2025

DAX query view Copilot

Inline Copilot in DAX query view (Ctrl + I) lets you write, explain, and refactor queries conversationally. Copilot sees your full model metadata — tables, columns, measures, relationships — and generates DAX that fits your specific model rather than generic templates.

GA · 2025

Suggested measures

Copilot proactively suggests a set of measures based on your model structure — things like Sales = Quantity × Price. Review and add to your model with one click. Always check column references before committing; Copilot matches by name, not business intent.

GA · 2025

Measure description generation

In Model view, select any measure and click Create with Copilot under the Description field. Copilot reads the DAX formula and writes a plain-language explanation. Saves significant documentation time on large models; re-run it after each formula change.

GA · 2025

Verified answers in reports

Workspace admins can designate specific measures as “trusted.” Copilot prefers these when answering related questions, and surfaces them with an audit trail. Gives regulated environments a governed path to Copilot-generated answers without losing control of the underlying logic.

Preview · Mar 2026

DAX User-Defined Functions (UDFs)

Define reusable DAX logic as named, callable functions across measures and calculated columns — the same idea as a helper function in any programming language. Reduces formula duplication in large models and makes logic easier to audit. Copilot can generate UDF bodies from a prompt.

Preview · Jun 2026

Copilot in web modeling

Copilot can now review and improve your semantic model directly in the Power BI service — no Desktop required. Give it a plain-language instruction: “Improve table relationships” or “Rename columns to title case” and it acts on the model, including generating DAX measures.

Preview · Jun 2026

Report authoring agent skills

Through Microsoft’s Skills for Fabric catalogue, agentic report-building takes a vague brief like “I need an executive dashboard” through requirements, design, build, and publish stages in natural language. Copilot reloads Desktop to capture live screenshots as it builds. The clearest signal yet that report creation is becoming agent-driven.

Deprecated

Q&A visual retired

The old Q&A visual that handled natural language inside reports has been phased out. The same functionality now lives in Copilot, with better accuracy and model context. If you have reports using Q&A, plan migration to Copilot-based interactions.

Finding it in the product

How to access DAX Copilot

There are three distinct surfaces. They’re not interchangeable — each has a different scope.

1. DAX query view (the main one for formula work)

In Power BI Desktop, switch to the DAX query view using the icon on the left rail. Press Ctrl + I or click the Copilot button to open inline Copilot. This is where you write and refine measures conversationally. It operates on the current semantic model only — Copilot sees your model’s metadata but nothing outside it.

2. Model view — measure descriptions

Select any measure in the Data pane, find the Description field in Model view properties, and click Create with Copilot. This generates a documentation string rather than a new formula. Run it after every formula edit to keep documentation accurate.

3. Web modeling in the Power BI service (June 2026, Preview)

Open a semantic model in the Power BI service and use the Copilot assistant to analyze and modify the model without opening Desktop. Currently covers schema improvements, relationship creation, and DAX measure generation. The desktop model and the service model stay in sync.

Common setup mistake

The tenant admin setting and the workspace capacity assignment are both required. Enabling the tenant setting alone without assigning the workspace to a Fabric capacity produces no Copilot pane, no error message. Check both before troubleshooting anything else.

Prompt library

Prompts that reliably work — with their output

These are the prompt patterns that produce clean, useful DAX. The model still needs correct table and column names to match your semantic model; if Copilot guesses wrong, follow up with a correction prompt rather than starting over.

Prompt
“YoY Sales Growth %, blank-safe, formatted as percentage”
Generated DAX
VAR Curr = [Total Sales]
VAR Prior = CALCULATE([Total Sales],
    DATEADD('Date'[Date],-1,YEAR))
RETURN
    IF(ISBLANK(Prior)||Prior=0,
        BLANK(),
        DIVIDE(Curr-Prior,Prior))
Tip: Specify “blank-safe” in every time-intelligence prompt or Copilot omits the guard.
Prompt
“Rank top 5 customers by lifetime revenue, ties included”
Generated DAX
Top 5 Customers = 
RANKX(
    ALL(Customer[CustomerName]),
    [Total Revenue],
    ,DESC,Dense
) <= 5
Works well as a measure filter. Ask for “Dense” ranking explicitly if ties matter.
Prompt
“Rolling 3-month average of [Sales] using the date table”
Generated DAX
3M Avg Sales =
AVERAGEX(
    DATESINPERIOD(
        'Date'[Date],
        LASTDATE('Date'[Date]),
        -3, MONTH
    ),
    [Total Sales]
)
Reference your actual date table name in the prompt for cleaner output.
Prompt
“Refactor this measure for performance and add comments explaining each step”
What Copilot does
-- Paste your measure in the query
-- window, then send this prompt.
-- Copilot rewrites it using VAR/RETURN
-- pattern, removes redundant CALCULATE
-- wrappers, and adds inline comments.
// Review the diff before accepting —
// Copilot may rename variables.
Most useful for legacy measures without VAR declarations or with nested CALCULATE chains.
Prompt
“Explain ALL, ALLSELECTED, and ALLEXCEPT with a visual example for each”
What Copilot does
-- Copilot returns a natural language
-- explanation with one concrete DAX
-- example per function showing how
-- the filter context changes.
-- No generated measure to add —
-- this is a learning interaction.
Use Copilot as a tutor. It explains any DAX function on request with context from your model.
Prompt
“% of total sales for each product, respecting active filters”
Generated DAX
% of Total Sales =
DIVIDE(
    [Total Sales],
    CALCULATE(
        [Total Sales],
        ALLSELECTED(Product[ProductName])
    )
)
“Respecting active filters” is the key phrase that leads Copilot to ALLSELECTED over ALL.
Hard limits & scale constraints

What Copilot won’t handle, and where it degrades

Copilot works from model metadata alone. It doesn’t scan your actual data rows (except a min/max sample in Import mode). If your model is too large, or your metadata is thin, results degrade before they fail.

ConstraintLimitWhat happens when exceeded
Tables in model500Copilot may disable or give degraded results
Total columns across all tables10,000Copilot drops awareness of columns beyond this
Total measures5,000Some measures fall out of Copilot’s context window
Measures per table3,000Copilot loses track of measures in overloaded tables
DAX expression length5,000 charactersCopilot cannot generate expressions beyond this length
Column / measure name length256 charactersNames are truncated in Copilot’s context
Description field used by CopilotFirst 200 charactersAnything after 200 chars in descriptions is ignored
Prompt length10,000 charactersHard cap across all Copilot surfaces

Source: Power BI Copilot community documentation and Microsoft Learn.

New DAX functions

Very recently released DAX functions may not be recognized by Copilot, and explanations of them can be wrong. Always cross-reference the DAX function reference for any function released in the last 3–6 months before trusting Copilot’s explanation of it.

Getting better results

Model quality determines Copilot quality

Copilot uses your model’s metadata as its entire context — there is no external knowledge base it falls back on for your data. That means the naming conventions and descriptions you put into the model directly control how accurate the output is.

  • Name columns and tables for humans, not for databases. CustomerName and OrderDate produce better results than cust_nm or ord_dt.
  • Write descriptions for every measure. Only the first 200 characters are used. Start with what the measure does, not what it’s called. Use the Copilot description-generation feature to build this library faster.
  • Mark trusted measures in workspace settings so Copilot knows which implementations to prefer when multiple measures calculate similar things.
  • Keep relationships clean and explicit. Ambiguous or missing relationships produce ambiguous DAX. Copilot in web modeling can now flag these and suggest fixes from the service without opening Desktop.
  • Use star schemas. Complex snowflakes and many-to-many relationships produce more errors. Copilot behaves predictably on well-modeled data.
  • Always review before publishing. Copilot generates from metadata, not from running your data. A formula can be syntactically correct and logically wrong for your specific context.
Import mode caveat

In Import storage mode, Copilot can only see sample min/max values per column, not the full distribution. For measures where boundary values matter (thresholds, conditional logic), test the generated DAX against real data rather than trusting the sample.

Common questions

FAQ – Power BI DAX with AI

Is Copilot DAX available in Power BI Desktop or only the service?
Both, but they’re different surfaces. DAX query view Copilot is available in Power BI Desktop (since late 2024, now GA). The newer web modeling Copilot (June 2026, Preview) runs in the Power BI service without opening Desktop. Both require the workspace to be on a Fabric capacity.
Can I use Copilot to learn DAX, not just generate it?
Yes, and this is one of its more reliable uses. Ask Copilot to explain any DAX function (“explain CALCULATE with a filter context example”), describe what an existing measure does, or compare two functions. The explanations are grounded in your model’s context, which makes them more relevant than generic documentation. That said, cross-check explanations of very new functions against Microsoft Learn — Copilot can lag a release cycle on recently added functions.
Does Copilot write calculated columns, or only measures?
It can generate both. As of March 2026, Direct Lake semantic models support calculated columns in Preview — previously, calculated columns forced a switch to Import mode, which ruled out Direct Lake. The distinction still matters for performance: measures calculate at query time and are generally preferred; calculated columns materialize at refresh time and expand your model’s memory footprint.
Does my data leave Microsoft when I use Copilot?
Microsoft sends your prompt text and semantic model metadata (table names, column names, measure definitions, relationships) to Azure OpenAI Service for processing. Your actual data rows are not sent, except for min/max sample values in Import mode. Microsoft states that this data is not used to train foundation models and is not shared with OpenAI. Processing stays within your geographic region if you have data residency commitments. Sovereign clouds are not supported as of June 2026.
What happens to the Q&A visual I have in existing reports?
The Q&A visual is deprecated and phased out. Microsoft has merged that functionality into Copilot, which provides better accuracy and context. If you have reports with Q&A visuals, plan to replace them with Copilot-based interactions. There is no automatic migration; you’ll need to update each report manually.
Can Copilot generate DAX User-Defined Functions?
Yes. DAX UDFs entered preview in March 2026 and Copilot can generate function bodies from a prompt describing the logic. This is especially useful for shared calculation patterns you want to reuse across measures — define the function once with Copilot’s help, then reference it by name wherever needed. UDFs make large models easier to audit and maintain.
Official sources

Documentation & learning

Accuracy note: Feature availability (GA vs Preview) is verified against the Power BI June 2026 Feature Summary and Microsoft Learn as of June 2026. Scale limits are sourced from the Power BI community documentation and Microsoft’s Copilot introduction article. Preview features may change before reaching general availability. UIG Data Lab is independent and not affiliated with Microsoft Corporation.

AJ
A.J. Data Engineering Researcher & Technical Writer · UIG Data Lab

A.J. covers Microsoft Fabric, Power BI, DAX, and cloud data platforms for UIG Data Lab. Writing focuses on practitioner-level content — verified against official documentation, not reconstructed from summaries.

Power BI DAX Microsoft Copilot Microsoft Fabric Semantic Models Data Modeling

Scroll to Top