pbPassingBI
/
Foundations intermediate 9 min

Import, DirectQuery and composite models

The storage mode decision, and what each mode costs you.

What you'll be able to do
  • Choose a storage mode for a given requirement
  • List what DirectQuery restricts
  • Explain dual storage mode in a composite model

Import

Import loads a compressed copy of the data into VertiPaq. It's the default and almost always the fastest — queries never leave Power BI.

Costs: data is only as fresh as the last refresh, and the model is subject to size limits (1 GB compressed per dataset on Pro; much larger on Premium/Fabric capacity).

DirectQuery

DirectQuery leaves data in the source and issues a query per visual interaction. Data is always current and there's no size ceiling.

Costs are real: every slicer click is a round trip, so performance depends entirely on the source. Many DAX functions are unavailable or slow, calculated columns are limited, and some Power Query transformations can't fold into the source query and are therefore blocked.

Use it when data must be real-time, or when the volume genuinely can't be imported.

Composite models and dual mode

A composite model mixes both — large fact tables in DirectQuery, small dimensions in Import.

That combination creates a problem: a slicer built on an Import dimension would need a DirectQuery join anyway. Dual storage mode solves it. A dual table is stored both ways, and the engine picks per query — served from memory when the query is Import-only, queried at source when it must join to a DirectQuery fact.

The standard pattern is: fact tables DirectQuery, dimension tables Dual.

Live connection

A live connection to an Analysis Services model or a published Power BI dataset is different again. You're not building a model at all — you're reporting on someone else's. No Power Query, no relationships, no calculated columns; you can add report-level measures only.

This is the right choice for enterprise setups where a central team owns the model.

Key points
  • Import = fastest, but bounded by size and refresh cadence
  • DirectQuery = current data, but every interaction hits the source
  • Dual mode on dimensions is the standard composite-model pattern
Check yourself