# Dax

DAX performance optimization for semantic models.

- Repository: https://github.com/data-goblin/power-bi-agentic-development (1079 stars)
- Category: Testing
- License: GPL-3.0
- Last updated: 2026-10-30
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add data-goblin/power-bi-agentic-development --skill dax -g -a claude-code -y`
Codex: `npx skills add data-goblin/power-bi-agentic-development --skill dax -g -a codex -y`
Cursor: `npx skills add data-goblin/power-bi-agentic-development --skill dax -g -a cursor -y`
Gemini CLI: `npx skills add data-goblin/power-bi-agentic-development --skill dax -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add data-goblin/power-bi-agentic-development`

## Description

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.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# DAX

Skills and references for writing, debugging, and optimizing DAX in semantic models.

## Object references

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.

## Optimization

For systematic DAX query performance optimization, read the workflow reference first:

**[`references/dax-performance-optimization.md`](./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`](./references/engine-internals.md)**, FE/SE architecture, xmSQL, compression/segments, SE fusion, trace diagnostics
- **[`references/dax-patterns.md`](./references/dax-patterns.md)**, Tier 1 DAX patterns (DAX001, DAX021) + Tier 2 query structure (QRY001, QRY004)
- **[`references/model-optimization.md`](./references/model-optimization.md)**, Tier 3 model patterns (MDL001, MDL009) + Tier 4 Direct Lake (DL001, DL002)

Trace capture and performance profiling:

The rest: https://github.com/data-goblin/power-bi-agentic-development/blob/HEAD/plugins/semantic-models/skills/dax/SKILL.md
