Install any skill in seconds. Free to start, no credit card required.
Get Started Free →data-goblin/dax
DAX performance optimization for semantic models. Automatically invoke when the user asks to "optimize DAX", "fix slow DAX", "DAX performance", "tune a measure", "debug a measure", "DAX anti-patterns", or mentions slow queries, server timings, or DAX authoring.
Passed 21 of 22 test cases with the skill, and 10 of 22 without it.
and 12 more in the full report
11 fixed10 passed either way1 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
This benchmark measured an earlier version of the skill.
A newer attempt on gemini-3.8-flash on 10/20/2026 did not produce a publishable comparison (not comparable). The snapshot above is the previously measured run.
One of 11 test cases the skill fixed. Same model, same prompt, with and without the skill.
Which reference file contains detailed documentation for Tier 1 DAX patterns DAX001-DAX021 and Tier 2 query structures QRY001-QRY004?
| Checked | Without skill | With skill |
|---|---|---|
| Identifies references/dax-patterns.md | Missed | Passed |
The instructions your model reads when the skill loads.
Skills and references for writing, debugging, and optimizing DAX in semantic models.
Write column references as 'Table'[Column]: the table name is always present and always in single quotes. Write measure references as [Measure], never prefixed with a table. This applies everywhere DAX or model metadata names an object: measure, calculated column and calculation item expressions, RLS filters, format string expressions, DAX queries (te query, pbir model -q), and descriptions or annotations that mention an object.
Why: a measure belongs to the model rather than to its home table, so moving it between tables must not change any expression that uses it; a bare [Measure] also tells the reader at a glance that it is a measure and not a column. An unqualified column is ambiguous as soon as two tables share a column name, and quoting every table name keeps one consistent form whether or not the name needs quotes.
For systematic DAX query performance optimization, read the workflow reference first:
references/dax-performance-optimization.md — Tiered framework (4 tiers), phased workflow, decision guide, and error handling.
Detailed reference files (progressive disclosure — consult as directed by the workflow):
references/engine-internals.md — FE/SE architecture, xmSQL, compression/segments, SE fusion, trace diagnosticsreferences/dax-patterns.md — Tier 1 DAX patterns (DAX001–DAX021) + Tier 2 query structure (QRY001–QRY004)references/model-optimization.md — Tier 3 model patterns (MDL001–MDL009) + Tier 4 Direct Lake (DL001–DL002)Trace capture and performance profiling:
te query (see the te-cli skill) first; as an alternative, the connect-pbid skill covers FE/SE timing (performance-profiling.md) and intermediate result inspection (evaluateandlog-debugging.md).te query (-s <workspace> -d <model>) against the workspace XMLA endpoint; see the te-cli skill (tabular-editor plugin).semantic-model — Model design, build, and auditing including DAX anti-patterns and best practicesconnect-pbid (pbi-desktop plugin) — Trace capture, performance profiling, EVALUATEANDLOG debugginglineage-analysis — Impact analysis before model changestest cases passed, vs 10 / 22 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.