The request

From Hannah Reyes, Chief Financial Officer
Your goal
Pick the storage set-up that gives Hannah both near-real-time orders for today and fast slicing over three years of history.
What Hannah gets, and why
The lesson
Every table in a Power BI model has a storage mode, and it decides where the data lives when someone clicks a slicer: in Power BI’s memory, or in the source database.
What you are working in
This is a quiz. In Power BI Desktop, a table’s storage mode is set in Model view: select the table and look at Properties → Advanced → Storage mode. You choose Import or DirectQuery when you connect (Home → Get data → SQL Server, the Data Connectivity mode option).
Import
The data is copied into the model and compressed by VertiPaq. Every visual is answered from memory: the fastest option, with all of DAX and Power Query available. The price is freshness (data is as old as the last refresh: 8 a day on Pro, 48 on Premium) and size (1 GB per model on shared capacity, more on Premium). Import is the default for good reasons.
DirectQuery
Nothing is copied. Each visual sends a query to the source every time it is drawn or filtered, so the data is always current and can be huge. But every click waits for the source, the source carries the load of every report reader, some DAX functions and Power Query steps are limited, and a single query can’t return more than a million rows to Power BI. It suits data that must be current or must stay at the source.
Composite models and Dual
A composite model mixes modes: for example, a huge fact table in DirectQuery and small dimension tables imported. Dual is a mode for dimensions in such a model: the table is imported and can also act as DirectQuery, so Power BI answers from memory when it can and joins at the source when the query needs the DirectQuery fact table. A composite model can also add your own imported table, such as targets, to a published model through DirectQuery for Power BI semantic models.
Hybrid tables
With incremental refresh (right-click a table → Incremental refresh), a big fact table is split into partitions by date, and each refresh reloads only the recent ones. On Premium capacity, Premium Per User or Fabric, ticking Get the latest data in real time with DirectQuery adds a live partition for the newest period: history comes from memory, today from the source. That is a hybrid table.
Live connection
If the company already publishes a certified semantic model, a new report can connect live to it (Home → Get data → Power BI semantic models). No data is copied and no model is rebuilt; the report reuses the measures, relationships and security everyone else uses.
Choosing
- Fast and interactive, data a few hours old is fine: Import.
- Must be current to the minute, or too big or too sensitive to copy: DirectQuery.
- One big live table, everything else small: composite with Dual dimensions.
- Long history plus live today: hybrid table.
- A governed model already exists: live connection.
Common mistakes
- DirectQuery by default. Every reader’s click becomes a database query.
- Full refreshes of years of history. Use incremental refresh.
- Many visuals on a DirectQuery page. Each one is a separate query to the source.
Lantern lit!
Practised: storage modeimportdirectquerycomposite modelhybrid tableduallive connection
- Solved
- No hints
- First run
