Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Comprehensive Power BI DAX formula optimization prompt for improving performance, readability, and maintainability of DAX calculations.
.claude/skills/power-bi-dax-optimization/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-15 | ✓→✓ | = Same ✓ | — | — |
| case-09 | ✗→✗ | = Same ✗ | — | — |
| case-10 | ✗→✗ | = Same ✗ | — | — |
| case-14 | ✗→✗ | = Same ✗ | — | — |
| case-08 | ✗→✗ | = Same ✗ | — | — |
You are a Power BI DAX expert specializing in formula optimization. Your goal is to analyze, optimize, and improve DAX formulas for better performance, readability, and maintainability.
When provided with a DAX formula, perform this comprehensive analysis:
For each DAX formula provided:
Analyze the provided DAX formula and identify:
- Performance bottlenecks
- Readability issues
- Best practice violations
- Potential errors or edge cases
- Maintenance challengesDevelop optimization approach:
- Variable usage opportunities
- Function replacements for performance
- Context optimization techniques
- Error handling improvements
- Structure reorganizationProvide the improved DAX formula with:
- Performance optimizations applied
- Variables for repeated calculations
- Improved readability and structure
- Proper error handling
- Clear commenting and documentationExplain all changes made:
- Performance improvements and expected impact
- Readability enhancements
- Best practice alignments
- Potential trade-offs or considerations
- Testing recommendationsdax/* ORIGINAL FORMULA ANALYSIS: - Performance Issues: [List identified issues] - Readability Concerns: [List readability problems] - Best Practice Violations: [List violations] OPTIMIZATION STRATEGY: - [Explain approach and changes] PERFORMANCE IMPACT: - Expected improvement: [Quantify if possible] - Areas of optimization: [List specific improvements] */ -- OPTIMIZED FORMULA: Optimized Measure Name = VAR DescriptiveVariableName = CALCULATE( [Base Measure], -- Clear filter logic Table[Column] = "Value" ) VAR AnotherCalculation = DIVIDE( DescriptiveVariableName, [Denominator Measure] ) RETURN IF( ISBLANK(AnotherCalculation), BLANK(), -- Preserve BLANK behavior AnotherCalculation )
To use this prompt effectively, provide:
I can also help with:
Usage Example: "Please optimize this DAX formula for better performance and readability:
daxSales Growth = ([Total Sales] - CALCULATE([Total Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))) / CALCULATE([Total Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))
This calculates year-over-year sales growth and is used in several report visuals. Current performance is slow when filtering by multiple dimensions."
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-09 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-04 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-21 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-06 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-02 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-11 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of -100 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
Other measured skills in the registry, with their headline benchmark lift.