Power BI

Import vs. DirectQuery

Also called: Storage mode, DirectQuery, Import mode, Composite model

Import and DirectQuery are Power BI storage modes. Import copies data into the semantic model for fast visuals; DirectQuery leaves it in the source and queries it each time a visual loads.

Two lanes. Import: a scheduled refresh copies data from a SQL database into a compressed in-memory copy in the model, and the report answers from memory, fast but only as fresh as the last refresh. DirectQuery: the model holds only metadata and each visual sends a live query to the SQL database, always current but waiting on the source.

How they differ

Every table in a semantic model has a storage mode. It decides where the data lives when someone opens a report.

  • Import loads a compressed copy of the data into the model. Visuals read from that copy in memory, which makes them fast. The copy is only as fresh as the last refresh, which you run on a schedule in the Power BI service.
  • DirectQuery stores no data, only the table definitions. When a reader opens a page or changes a slicer, Power BI sends queries to the source database and draws the visuals from the results. The numbers are current, but every interaction waits on the source.
ImportDirectQuery
Where data livesIn the semantic modelIn the source database
FreshnessAs of the last refreshCurrent at query time
Visual speedFast, from memoryDepends on the source
Power Query and DAXFull supportSome transformations and functions are limited
Load on the sourceOnly during refreshEvery time a visual loads

Tableau makes the same trade-off with extracts and live connections.

Mixing them: composite models

A composite model with storage mode set per table. The large Sales fact table uses DirectQuery; the Date, Region and Product dimension tables use Dual; a small Targets table from Excel uses Import

You don’t have to pick one mode for the whole model. In a composite model, each table gets its own mode. A common pattern:

  • The large fact table in DirectQuery, so it doesn’t have to be copied and stays current.
  • Dimension tables in Dual, so Power BI can read them from memory for slicers and labels, or query them live alongside the fact table.
  • Small extra tables in Import, such as a targets sheet from Excel that isn’t in the database at all.

In Microsoft Fabric there’s also Direct Lake mode, which reads Delta tables in OneLake directly instead of importing or querying a database.

Choosing one

  • Default to Import. It’s faster, supports every feature, and most reports are fine with data that refreshes daily or a few times a day.
  • Use DirectQuery when freshness is the requirement, such as an operations screen that has to reflect the last few minutes.
  • Check the source can take it. DirectQuery turns every reader’s click into database queries. Talk to whoever runs the database first.
  • Keep DirectQuery pages lean. Fewer visuals per page means fewer queries per click.

Mocking up for Import or DirectQuery

How fresh each number must be is a requirement you can capture on the mockup: label the visuals that need live data, and the storage mode decision usually follows. See why to mock up Power BI reports before you build.

See it in a real layout

These free Mockko templates use it. Open one and edit it in your browser.

Related terms

Common questions

Is Import or DirectQuery faster in Power BI?
Import is usually faster, because visuals read a compressed copy held in memory. DirectQuery speed depends on the source database, since every visual sends it a query, so a busy or slow source means slow visuals.
When should I use DirectQuery?
When the data must be close to real time, when it's too large to import, or when rules say it must stay in the source system. Otherwise Import is the simpler, faster default.
Can a Power BI model use both Import and DirectQuery?
Yes. A composite model sets the storage mode per table, for example a large fact table in DirectQuery with smaller dimension tables in Import or Dual mode.

Mock it up before you build it

Lay out your Power BI or Tableau dashboard in Mockko, get sign-off, then build. Free to start.

Try Mockko free