Skip to content
Module 10 of 1255 min readMixed

Performance — model size, query folding, aggregations

DAX Studio, the storage engine vs the formula engine, query folding in Power Query, aggregations for large fact tables. The seven causes of slow Power BI.

83%

Listen along

Read “Performance — model size, query folding, aggregations” aloud

Plays in your browser using on-device text-to-speech — nothing leaves the page.

Learning objectives

By the end of this module, you should be able to:

  • 01Diagnose Power BI performance issues with Performance Analyzer and DAX Studio
  • 02Apply the seven most-effective performance fixes
  • 03Recognise the trade-off between Import, DirectQuery, and Composite models

A slow Power BI report has a small set of causes. The diagnostic tools — Performance Analyzer in Desktop and DAX Studio as a separate free download — make every cause visible. Without them you'll fix things at random. With them, optimisation becomes mechanical.

Performance Analyzer

View → Performance Analyzer → Start Recording → interact with the report → Stop. Each visual shows three times: DAX query time, visual display time, and others. Sort by total time. The slowest visual gets investigated first. Click 'Copy query' next to a slow visual to capture its DAX for further analysis in DAX Studio.

The seven most-effective fixes

  • Star schema, not flat table — Performance gains 5-10x.
  • Disable Auto Date/Time (Options → Data Load → uncheck Auto Date/Time) — this auto-generated date hierarchy bloats models massively.
  • Use measures, not calculated columns, wherever possible — calculated columns persist in memory; measures don't.
  • Single-direction relationships unless you need bi-directional — fewer hidden filter paths to traverse.
  • Remove unused columns from imported tables — every column eats memory.
  • Aggregations on top of large fact tables — Power BI auto-routes visuals to the aggregation when possible (Premium feature).
  • Variables in DAX — capture once, reuse many times; reduces query plan complexity.

Import vs DirectQuery vs Composite

  • Import: data loaded into Power BI's columnar engine (Vertipaq). Fastest queries. Refreshed on schedule. Most analyst reports.
  • DirectQuery: every visual interaction issues a live query to the source database. Always fresh, slow on each interaction. Used when data must be real-time or the dataset is too big to import.
  • Composite: some tables Import, others DirectQuery. Aggregations on top of DirectQuery tables. Power BI Premium feature for large enterprise scenarios.

DAX Studio is essential

Free download from daxstudio.org. Connects to your local .pbix or to Service models. Run any DAX measure, see execution time broken down by Storage Engine vs Formula Engine, capture server timings, profile query plans. Every serious Power BI engineer knows it. If you're optimising and you don't have DAX Studio installed, you're flying blind.

Exercise

On any moderately complex Power BI report, run Performance Analyzer. Identify the three slowest visuals. For each, copy the DAX into DAX Studio and run it. Where does the time go — Storage Engine (memory scan) or Formula Engine (DAX logic)? What does that imply for the fix?

Key takeaways

  • Performance is mostly about the data model and DAX, not the visuals.
  • DAX Studio is the diagnostic tool. Learn it.
  • Import is fastest for analysis; DirectQuery is freshest; Composite is the middle path.
Loading progress…
LeadAfrikPublic Economics Hub