🔥 Don’t miss the best offers of the year!
Get VIP Access Now
Featured-Image-PBI-Performance-Optimization-Checklist-2000x760
By Nina Franceskin • Last updated

Power BI Performance Optimization Checklist

Share this

PRO Trial

Available for Free!
Join over 1,500,000 Zebra BI users who can produce insightful reports every time.
Try Zebra BI for free



Time is money – we know it all too well. Well-designed dashboards are only useful if they’re fast. Long load times frustrate users, reduce adoption, and cost resources. This checklist merges insights from Zebra BI’s latest Power BI Performance Optimization Checklist with proven best practices to help you build reports that load quickly, scale well, and deliver value. Use it while designing, reviewing, or optimizing Power BI reports and make them run up to 10x faster.


How to Use This Checklist

  • Measure after changes to validate improvements.
  • Baseline current performance using tools like Performance Analyzer.
  • Prioritize items based on your performance pain points.
  • Apply in order (data model → visuals → query tuning) for maximum impact.

1. Analyze your performance

What to do

  • Aim for 0.5–1s total page load time.
  • Run Performance Analyzer in Power BI Desktop to measure how individual visuals render.
  • Use DAX Studio for deeper query-level analysis.
  • Export the Performance Analyzer logs (JSON) to review detailed load times.

How to implement

  • In Power BI Desktop → open Performance Analyzer: record a page load, note which visuals/measures take too long.
  • Copy queries from Performance Analyzer to DAX Studio to analyze query plans or database issues.
  • Export the analyzer results as JSON for further offline (or team) review, especially for repeated bottlenecks.
Performance analyzer pane showing the load time for each element
Performance analyzer pane showing load times for individual elements

2. Speed up your data model

What to do

  • Use clean star schema: fact + dimension tables (not flat wide tables).
  • Transform in Power Query or data source rather than in DAX.
  • Remove or hide unused columns and foreign keys.
  • Reduce precision of measures (e.g. limit decimals).
  • Use Import mode preferentially; minimize use of Composite or DirectQuery.
  • Simplify row-level security (RLS) rules.

How to implement

  • Combine/append fact tables when it makes sense; split dimension tables for hierarchies/attributes.
  • Turn off auto-date tables and split Date/Time into separate fields.
  • Hide ID (foreign key) fields from report view so only explicit measures are shown.
  • In modeling, choose Import over DirectQuery, reserve DirectQuery only for real-time data needs.
  • If using RLS, apply on dimensions with simple rules; avoid lookups or complex joins.

Here's a quick break-down of what you can do.

Fact Table:

  1. Measures
    • Implicit (hide)
    • Explicit (use only these)
    • Reduce precision (no more than 2 decimals)
  2. Foreign keys
    • Integer only!
    • As short as possible
    • Hide foreign keys from report view – so the fact table shows only the explicit measures for the users
  3. Reduce granularity

Dimensions:

  • Hide foreign keys (IDs)
  • Only necessary columns (use lean fact tables – long, not wide)
  • Calendar key: Date
  • Split Date/Time into Date and Time columns
  • Avoid calculated columns (if you absolutely need them, add them in Power Query)
  • Turn off Power BI’s auto-date table
  • Relationships to fact table: 1-to-many
An-overview-of-connection-modes
An overview of connection modes

3. Speed up your reports and visuals through design

What to do

  • Reduce the number of visuals per page.
  • Use multi-card visuals (or combined visuals) to present KPIs without many separate visuals.
  • Organize layout from high-level overview → detail (top to bottom).
  • Lazy-load visuals using bookmarks/hidden visuals.

How to implement

  • Use bookmarks and visibility controls so non-critical visuals are only loaded/displayed when requested.
  • Limit to 7-8 visuals per page or fewer. Prioritize key visuals first.
  • Use visuals that combine multiple metrics (e.g. Zebra BI visuals) instead of many individual charts.
  • Build pages so that summary comes first; details load later or are hidden until needed.
Efficient-Power-BI-report-design
Efficient Power BI report design

4. DAX & Calculations

What to do

  • Simplify DAX formulas (avoid nested FILTER/CALCULATE where possible).
  • Use measures over calculated columns especially in fact and dimension tables.
  • Use VAR to reuse intermediate computations.
  • Use efficient functions for non-additive operations (e.g. DIVIDE).

How to implement

  • Avoid manually built IF/SWITCH that can be replaced by DIVIDE or other optimized functions.
  • Audit measures: refactor ones that have many nested context filters.
  • Move complex calculations into Power Query or upstream in the data source.
  • Use VAR blocks in measures to compute once instead of repeating logic.

5. Query Performance & Data Connection

What to do

  • Ensure Query Folding in Power Query steps.
  • Simplify joins and transformations.
  • Cache expensive operations where possible.
  • Choose optimal connection type: Import > Live > Composite > DirectQuery.

How to implement

  • In Power Query, monitor folding by right-clicking applied steps → “View Native Query.”
  • Reduce merges/unions or perform them upstream.
  • Use buffer or staging tables for heavy computations.
  • Review each dataset’s connection type; move to more efficient modes where possible.

6. Optimizing with Foreign Keys, Granularity & Precision

What to do

  • Use integer foreign keys and hide them in the UI.
  • Reduce granularity (e.g. aggregate lower-level data where possible).
  • Limit measure precision (e.g. decimals) to what’s needed.

How to implement

  • In the fact table, ensure foreign keys are integer types and hide them from report view.
  • Filter or group data upstream to reduce unnecessary detail.
  • Round or truncate decimals where high precision isn’t meaningful.

7. Power BI Service, RLS & Other Settings

What to do

  • Keep RLS definitions simple.
  • Turn off features that cause unnecessary load.
  • Optimize service-side settings, refresh schedules.

How to implement

  • If RLS is needed, apply at dimension level, avoid complex filters.
  • In service settings, enable any caching, schedule refresh during lower usage.
  • Clean up unnecessary datasets, split reports/workspaces if needed.

8. Best Practices for Ongoing Optimization

What to do

  • Reuse base measures.
  • Use realistic, production-scale data volumes for testing.
  • Regularly audit and clean up models.
  • Maintain performance standards (e.g. max visuals/page, target page load times).

How to implement

  • Build a library of standard reusable measures.
  • Before publishing, test reports with data volumes similar to production.
  • Quarterly review of unused tables/fields; archive or remove.
  • Document in team guidelines: acceptable limits on visuals, acceptable load times, etc.

Additional materials & information

If you're as fascinated as we are by Power BI performance optimization possibilities, we've got great news – there's always more to learn! Feel free to check out the links below to dive deeper into this.


Leave a Comment

Want to join the discussion? Feel free to contribute!

Try Zebra BI for free
close icon