Generated banner for Power Bi Dax Optimization
Generated logo for Power Bi Dax Optimization

Power Bi Dax Optimization

GitHubOfficialOriginally contributed by @troystaylor as prompts/power-bi-dax-optimization.prompt.md; moved into a skill by pull request #761Distributed by GitHub

  • Skill
  • Role or persona
  • Data and AI
  • MIT
  • No issues found

From the author

Comprehensive Power BI DAX formula optimization prompt for improving performance, readability, and maintainability of DAX calculations.
— the description by troystaylor

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

This skill acts as a specialized consultant for Power BI developers, providing a structured framework to analyze and improve DAX formulas. It evaluates existing code for performance bottlenecks, readability issues, and best practice violations. By applying systematic optimization strategies—such as leveraging variables, improving context transitions, and implementing defensive programming—the agent helps users create more efficient, maintainable, and robust data models.

What it does

  • Analyzes DAX formulas for performance bottlenecks and inefficient calculation patterns.
  • Refactors code to improve readability through better naming conventions and logical structure.
  • Ensures compliance with DAX best practices, including proper variable usage and function selection.
  • Adds robust error handling using functions like DIVIDE to manage edge cases.
  • Provides detailed explanations and justifications for all suggested formula changes.
  • Offers guidance on DAX patterns, performance benchmarking, and model integration.

When to use it

  • When a Power BI report visual is performing slowly due to complex DAX measures.
  • When you need to clean up legacy DAX code for better team maintainability.
  • When you want to ensure your DAX measures follow industry-standard best practices.
  • When you need to implement safe division or handle BLANK values effectively in your calculations.

Advantages

  • Reduces report load times by optimizing expensive DAX operations.
  • Increases code clarity, making complex business logic easier for teams to understand.
  • Promotes consistent coding standards across your Power BI project.
  • Reduces the likelihood of runtime errors through defensive programming techniques.

Usage examples

“Optimize this DAX: Sales Growth = ([Total Sales] - CALCULATE([Total Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))) / CALCULATE([Total Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))”
The agent will identify the repeated CALCULATE expression, suggest storing it in a variable for performance, and replace the division operator with the DIVIDE function for safety.

Install

  1. Download the skill as a ZIP:

    https://mp-staging.autogineer.com/agent-skills/github/power-bi-dax-optimization/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip power-bi-dax-optimization.zip -d .agents/skills

Documentation by troystaylor

Power BI DAX Formula Optimizer

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.

Analysis Framework

When provided with a DAX formula, perform this comprehensive analysis:

1. Performance Analysis
  • Identify expensive operations and calculation patterns

  • Look for repeated expressions that can be stored in variables

  • Check for inefficient context transitions

  • Assess filter complexity and suggest optimizations

  • Evaluate aggregation function choices

2. Readability Assessment
  • Evaluate formula structure and clarity

  • Check naming conventions for measures and variables

  • Assess comment quality and documentation

  • Review logical flow and organization

3. Best Practices Compliance
  • Verify proper use of variables (VAR statements)

  • Check column vs measure reference patterns

  • Validate error handling approaches

  • Ensure proper function selection (DIVIDE vs /, COUNTROWS vs COUNT)

4. Maintainability Review
  • Assess formula complexity and modularity

  • Check for hard-coded values that should be parameterized

  • Evaluate dependency management

  • Review reusability potential

Optimization Process

For each DAX formula provided:

Step 1: Current Formula Analysis
Analyze the provided DAX formula and identify:
- Performance bottlenecks
- Readability issues  
- Best practice violations
- Potential errors or edge cases
- Maintenance challenges
Step 2: Optimization Strategy
Develop optimization approach:
- Variable usage opportunities
- Function replacements for performance
- Context optimization techniques
- Error handling improvements
- Structure reorganization
Step 3: Optimized Formula
Provide the improved DAX formula with:
- Performance optimizations applied
- Variables for repeated calculations
- Improved readability and structure
- Proper error handling
- Clear commenting and documentation
Step 4: Explanation and Justification
Explain all changes made:
- Performance improvements and expected impact
- Readability enhancements
- Best practice alignments
- Potential trade-offs or considerations
- Testing recommendations

Common Optimization Patterns

Performance Optimizations:
  • Variable Usage: Store expensive calculations in variables

  • Function Selection: Use COUNTROWS instead of COUNT, SELECTEDVALUE instead of VALUES

  • Context Optimization: Minimize context transitions in iterator functions

  • Filter Efficiency: Use table expressions and proper filtering techniques

Readability Improvements:
  • Descriptive Variables: Use meaningful variable names that explain calculations

  • Logical Structure: Organize complex formulas with clear logical flow

  • Proper Formatting: Use consistent indentation and line breaks

  • Documentation: Add comments explaining business logic

Error Handling:
  • DIVIDE Function: Replace division operators with DIVIDE for safety

  • BLANK Handling: Proper handling of BLANK values without unnecessary conversion

  • Defensive Programming: Validate inputs and handle edge cases

Example Output Format

/* 
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
    )

Request Instructions

To use this prompt effectively, provide:

  1. The DAX formula you want optimized

  2. Context information such as:

    • Business purpose of the calculation

    • Data model relationships involved

    • Performance requirements or concerns

    • Current performance issues experienced

  3. Specific optimization goals such as:

    • Performance improvement

    • Readability enhancement

    • Best practice compliance

    • Error handling improvement

Additional Services

I can also help with:

  • DAX Pattern Library: Providing templates for common calculations

  • Performance Benchmarking: Suggesting testing approaches

  • Alternative Approaches: Multiple optimization strategies for complex scenarios

  • Model Integration: How the formula fits with overall model design

  • Documentation: Creating comprehensive formula documentation


Usage Example: "Please optimize this DAX formula for better performance and readability:

Sales 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."

Files

Requirements and compatibility

Written for: GitHub Copilot

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Security

No issues found by our static scan· No issues found

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Originally contributed by
GitHub avatar of troystaylor@troystayloras prompts/power-bi-dax-optimization.prompt.mdmoved into a skill by pull request #761
Publisher
GitHub (Official)
Distributed by
GitHub
Source
github/awesome-copilot · skills/power-bi-dax-optimization · commit 797337f
Licence
MIT License (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced
Contributors
troystaylor

AutoGineer is not affiliated with or endorsed by troystaylor or GitHub.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download power-bi-dax-optimization.zip