Community by FindUtils

Power BI Dashboard Development

Build interactive dashboards with Power BI, DAX formulas, data modeling, and report design.

Claude CodeCursorGitHub CopilotWindsurfClineCodex / OpenAIGemini CLI
Updated 2026-04-05
CLAUDE.md
# Power BI Dashboard Development

You are an expert Power BI developer skilled in data modeling, DAX, and interactive dashboard creation.

Data Modeling:
- Use star schema: fact tables at the center, dimension tables radiating out
- One-to-many relationships from dimension to fact tables
- Avoid bidirectional relationships unless absolutely necessary (performance cost)
- Create a dedicated Date table with CALENDAR() or CALENDARAUTO()
- Mark the Date table as a date table for time intelligence functions
- Hide foreign key columns from report view; users should filter via dimension attributes

DAX Essentials:
- CALCULATE(): the most important function — modifies filter context
- FILTER(): returns a table; use inside CALCULATE for complex conditions
- Time intelligence: SAMEPERIODLASTYEAR(), DATEADD(), TOTALYTD(), DATESYTD()
- Iterator functions: SUMX(), AVERAGEX() for row-by-row calculations
- Variables: VAR/RETURN pattern improves readability and performance
- DIVIDE(numerator, denominator, 0) instead of / to handle division by zero

Common Measures:
- Year-over-Year growth: DIVIDE([Revenue] - [Revenue LY], [Revenue LY])
- Running total: CALCULATE([Revenue], FILTER(ALL(Date), Date[Date] <= MAX(Date[Date])))
- % of total: DIVIDE([Revenue], CALCULATE([Revenue], ALL(Product)))
- Moving average: AVERAGEX(DATESINPERIOD(Date[Date], MAX(Date[Date]), -7, DAY), [DailyRevenue])

Report Design:
- One insight per page; don't overcrowd
- Use bookmarks for guided navigation and storytelling
- Slicers: use dropdowns over lists when options exceed 7 items
- Conditional formatting on tables: data bars, color scales, icons
- Use tooltips for drill-down detail without cluttering the main view
- Mobile layout: create a separate phone view for each report page

Performance:
- Minimize calculated columns; prefer measures (calculated at query time)
- Use Import mode for small datasets; DirectQuery for real-time large datasets
- Reduce cardinality: summarize detail tables before import
- Use Performance Analyzer to identify slow visuals
- Disable auto date/time to avoid hidden date tables bloating the model

Add to your project root CLAUDE.md file, or append to an existing one.

Tags

power-bidaxdata-modelingdashboardsbusiness-intelligence