Courseiva
PL-300Chapter 6 of 18Objective 1.6

Data Loading and Storage Modes

Data Loading and Storage Modes decide how Power BI retrieves and keeps your data—whether it copies everything first, asks for data live each time, or does a bit of both. For the PL-300 exam, understanding this choice is critical because it affects report speed, data freshness, and whether you can use certain features like large datasets or real-time dashboards. Master this concept and you will be able to design reports that are both fast and accurate.

12 min read
Intermediate
Updated Jul 23, 2026
Reviewed by Johnson Ajibi· Senior Network & Security Engineer · MSc IT Security

A simple way to picture Data Loading and Storage Modes

The Kitchen Pantry Analogy

When you decide to cook a complicated meal, your immediate problem is getting all the ingredients you need. This leads to a choice about how you store and access them. You could stock every spice, vegetable, and sauce in your own pantry at home, meaning you can grab them instantly whenever you want, but you need a huge kitchen and you have to remember to restock anything that expires or runs out. That is the Import storage mode: you pull all the data into Power BI's own memory, making reports lightning-fast, but you must refresh that local copy when the source data changes.

Alternatively, you could keep most ingredients at the supermarket and, when you need a specific herb for a recipe, run to the store and fetch it in real time. Every time you cook, you dash to the shop. Your home stays tidy, but every meal takes longer to prepare and you are completely dependent on the store being open and having the item in stock. That is DirectQuery: Power BI sends a live query to the source database each time you interact with a report.

Finally, you might pre-store the heavy staples like flour and oil in your pantry (Import for frequently used data) while fetching the fresh basil from the shop on demand (DirectQuery for dynamic data). This hybrid approach is Dual storage mode: the best of both worlds, balancing speed with freshness.

How It Actually Works

Data Loading and Storage Modes define the relationship between Power BI and your underlying data source. They control whether Power BI stores a snapshot of your data inside its own engine, queries the source live every time someone clicks a visual, or uses a combination of the two. There are exactly three modes: Import, DirectQuery, and Dual (also called Composite).

In Import mode, Power BI takes a complete copy of your data from the source (a SQL database, a CSV file, a web service, or any other supported connector) and compresses it into a highly optimised in-memory columnar store. This means all your data lives inside the Power BI file (or service). When a user interacts with a report—filtering, slicing, drilling down—the response is virtually instant because Power BI does not need to go back to the original source. Every calculation happens locally. However, because it is a copy, it can become stale. To keep it fresh, you must set up scheduled refreshes or use an on-premises data gateway to periodically pull new data. Import mode works best for data that does not change every second and where you want maximum performance. It also supports features that other modes do not, such as calculated tables, all DAX functions, and large dataset sizes (with Power BI Premium).

DirectQuery mode takes the opposite approach. Instead of storing a copy, Power BI leaves the data where it is and sends queries directly to the source every time a visual is rendered, a filter is applied, or a calculation is needed. This is like a constant conversation: Power BI says "give me the sales for 2023 by region," the source computes it and sends back the result, and Power BI draws the chart. Because no copy exists in Power BI, the data is always up-to-date—any change in the source is instantly reflected. But the cost is performance: every interaction becomes a round-trip to the source, which could be slow if the source is under heavy load, far away over a network, or not optimised for fast queries. Moreover, DirectQuery has limitations: you cannot use Power Query transformations that require row-by-row processing, and some DAX functions (like time intelligence) behave differently or are restricted. DirectQuery is ideal for very large datasets that would be impractical to import, or when you need real-time data (such as stock prices or live manufacturing metrics).

Dual storage mode is the hybrid that lets you have your cake and eat it too. A table set to Dual mode acts as Import mode when the source can be cached locally, but falls back to DirectQuery when Power BI determines that the query cannot be fully satisfied from the cache. In practice, you use Dual mode for smaller tables that serve as lookups or dimensions (like a date table or a product category table). These tables are small enough to import quickly and benefit from fast filtering. But they also point back to the source so that when they are used alongside large fact tables (which might be in DirectQuery), Power BI can optimise the query plan by pushing as much work as possible to the source. The result is a report that feels snappy for common filters while staying fresh for critical measures.

Why does this exist? In the past, business intelligence tools forced you to choose: either load everything (slow refresh, fast queries) or leave it all in the source (live data, laggy interaction). The three modes give you flexibility. As a Power BI analyst, you will pick the mode based on the size of your data, how often it changes, the performance you need from your reports, and what your data source supports.

Here is a quick summary of when to use each:

Import mode: Use when your data fits within Power BI's data size limits (or you have Premium), you need fast report performance, and you can schedule refreshes.

DirectQuery mode: Use when you have very large datasets that would be too slow to import, or you need real-time data and cannot wait for scheduled refreshes.

Dual mode: Use when you have a mix of small reference tables and large transactional tables, and you want to optimise for both speed and freshness.

All three modes are configured in Power BI Desktop when you connect to a data source. During the 'Get Data' process, you see a dialog asking whether you want to Import or use DirectQuery. After loading, you can change a table's storage mode in the Model View under the 'Properties' pane. Changing mode after loading can break existing visuals or calculations, so it is best to decide early.

A final important detail: the storage mode you choose affects the entire Power BI service when you publish your report. Import datasets must be refreshed, DirectQuery datasets stay connected live, and Dual datasets behave like Import until a query forces a live connection. The service also checks credentials and gateway requirements based on the mode. If you use DirectQuery with an on-premises database, you will need an on-premises data gateway installed and configured. For Import, the gateway is only needed during the refresh.

This flowchart shows how data from a source can be directed into one of three storage modes—Import, DirectQuery, or Dual—each with distinct trade-offs for performance and freshness.

Walk-Through

1

Connect to Data Source

In Power BI Desktop, click 'Get Data' and choose your source (e.g., SQL Server, Excel, Web). At the connection screen, you will see a dialog asking 'Choose how to connect to this data: Import or DirectQuery.' This is your first decision point. Select the mode that matches your data freshness and size requirements.

2

Load Data into the Model

After selecting the mode, Power BI loads the data. In Import mode, it pulls all rows and columns from the source into memory. In DirectQuery, it builds metadata about the source but does not copy data. During this step, you can also apply Power Query transformations—but remember that some transformations are not supported in DirectQuery (like merging tables that require data movement).

3

Configure Storage Mode per Table (Optional)

After loading, go to the Model View (the third icon on the left pane). Click on a table, then in the Properties pane, find 'Storage mode'. Here you can switch a table between Import, DirectQuery, or Dual. This is crucial when you have multiple data sources and want to optimise performance. For example, change a small lookup table to Dual to benefit from caching while keeping a fact table in DirectQuery.

4

Test Report Performance and Freshness

Build a few visuals (charts, tables) on a report page. Interact with them—apply filters, slice by dates. Note the response time. Import mode visuals should appear nearly instantly. DirectQuery visuals will have a delay. Check that the data matches the source. If using DirectQuery, ensure the source is not overloaded. If using Import, verify the last refresh timestamp.

5

Publish to Power BI Service and Set Up Gateway

Publish your report to the Power BI service. For Import mode tables, you must configure a scheduled refresh (or use on-premises data gateway if the source is on-premises). For DirectQuery tables, you must set up a gateway if the source is on-premises, and the service will test the connection. For Dual tables, they follow the same gateway logic as Import for cached queries, but also need the source accessible for live queries.

6

Monitor and Optimise

In the Power BI service, check the 'Datasets' tab for refresh history and error logs. If DirectQuery visuals are slow, consider creating an aggregated table or moving to Import with incremental refresh if the data is not truly real-time. If Import refreshes take too long, optimise the source query or reduce data volume with filters. You may also convert a table from Import to DirectQuery if real-time becomes necessary.

What This Looks Like on the Job

Let us walk through a real scenario at a mid-sized retail company called 'ShopRight'. They sell clothing online and in physical stores. The business intelligence team needs to build a Power BI report showing daily sales, inventory levels, and customer feedback. The data comes from three sources: a cloud-based sales database (SQL Server in Azure), an on-premises inventory system (an old SQL Server in the warehouse), and a web API that pulls customer reviews from their e-commerce platform.

Step 1: The team assesses data volume and freshness needs. The sales database is 500 GB and updates continuously as new orders come in. The inventory system is 2 GB and updates hourly. The reviews API returns about 10 MB of text data per day. The report must show sales numbers in real time because store managers use it to make pricing decisions. Inventory can be up to an hour old. Reviews are analysed weekly, so freshness is not critical.

Step 2: They open Power BI Desktop and connect to the Azure sales database. For this source, they choose DirectQuery mode. The data is huge (500 GB) and needs to be current—importing it would take hours and require multiple daily refreshes, and even then it would never be truly real-time. With DirectQuery, every time a manager filters by store or date, Power BI sends a live SQL query to Azure, which returns only the aggregated results needed for that visual. The report is slower than an import-based report (especially if many people use it simultaneously), but the data is always accurate to the second.

Step 3: They connect to the on-premises inventory system. The data is small (2 GB) and only needs to be hourly accurate. The team chooses Import mode. They install a data gateway on a server in the warehouse, and Power BI pulls a full copy of the inventory data every hour via a scheduled refresh. The gateway authenticates using Windows credentials. Because the table is small, the refresh finishes in under a minute. Inside the report, inventory visuals respond instantly because they are querying Power BI's in-memory cache, not the warehouse server.

Step 4: They connect to the reviews API. The data is tiny (10 MB per day). They also choose Import mode. They load all historical reviews and schedule a nightly refresh. There is no need for a gateway because the API is accessible over the internet. The reviews table becomes a dimension table in the model.

Step 5: Now they have a problem: the sales table is in DirectQuery, and the inventory and reviews tables are in Import. When a manager wants to analyse sales by inventory level (e.g., "which products are selling fast but have low stock"), Power BI must combine data from two different storage modes. This is where Dual mode helps. They convert the inventory table to Dual mode. Now Power BI tries to satisfy the join from its local cache (fast). If the query also requires live sales data, Power BI pushes the filtering to the source. The report feels responsive for inventory filtering, but still fetches sales numbers live.

Step 6: The team publishes the report to the Power BI service. They set up the data gateway for the DirectQuery connection to the on-premises inventory system (even though inventory is imported, the gateway is needed for the refresh). They configure scheduled refreshes for the imported tables. They test the report with a store manager, who notices that sales visuals take about 3 seconds to load versus the inventory visuals that appear in under a second. The team decides that this performance trade-off is acceptable given the need for real-time sales.

In this workflow, the IT professional (or Power BI analyst) did not write any code. They used Power BI Desktop's graphical interface to choose storage modes per table, configured a gateway, and validated performance. The key skill was understanding the trade-offs: freshness versus speed, size versus agility. A real IT professional also monitors gateway usage, checks refresh logs, and plans for scale—maybe moving the DirectQuery source to a dedicated read replica to avoid locking the production database.

How PL-300 Actually Tests This

The PL-300 exam will test your understanding of Data Loading and Storage Modes in several ways. Expect scenario-based multiple-choice questions where you must recommend the best storage mode for a given business requirement. The exam loves to force you to choose between Import, DirectQuery, and Dual based on data size, freshness needs, and performance.

Here are the exact concepts you must memorise and understand:

-Import mode characteristics: Data is copied, compressed, and stored in memory. Report performance is very fast. You must schedule refreshes to update data. Supports all DAX functions and calculated tables. Best for data under 1 GB (or larger with Premium). Requires a gateway if the source is on-premises.

-DirectQuery mode characteristics: Data stays in the source. Each visual interaction sends a query. Data is always current, up to the second. Performance depends on the source's speed and network latency. Limited DAX (no time intelligence, no calculated tables). Cannot use Power Query transformations that depend on folding (like merging tables). Best for very large sources or real-time needs.

-Dual mode characteristics: Acts as Import for local queries and DirectQuery for queries that need fresh data. Used for smaller dimension tables in mixed-mode models. Optimises query performance by leveraging the cache when possible.

-Common exam trap: 'A report must use real-time data and the source is a 10 TB SQL database.' Many beginners choose DirectQuery correctly. But the exam might add a twist: the database is under heavy transactional load and cannot handle many concurrent queries. Then the correct answer might be to use Import with frequent incremental refreshes if allowed, or to create a read replica and use DirectQuery on that replica. The exam tests your ability to recognise constraints beyond the obvious.

-Another trap: 'A small lookup table (e.g., a Date table) is used with a large DirectQuery fact table.' The correct pattern is to set the lookup table to Dual mode, enabling Power BI to cache it while still allowing joins to live data. A beginner might set it to Import, not realising that then the join between Import and DirectQuery is possible but suboptimal. The exam explicitly tests the benefits of Dual mode in composite models.

-They also love to ask about limitations: Which DAX functions are not available in DirectQuery? Answer: Many time intelligence functions like TOTALYTD, SAMEPERIODLASTYEAR, and PREVIOUSMONTH behave differently (they are evaluated as query-time calculations, not stored measures). Also, calculated tables are not allowed in DirectQuery.

-Exam topics to study: - The three storage modes and their definitions. - When to use each mode (data size, freshness, performance). - Limitations of DirectQuery (DAX functions, Power Query, relationships). - How Dual mode works in composite models. - Gateway requirements for Import vs DirectQuery. - How to change storage mode in Power BI Desktop. - The impact of storage mode on the Power BI service (refresh scheduling, live connections).

-Exact definitions to memorise: - Import: A copy of data is stored in Power BI's engine. - DirectQuery: No copy is stored; queries go directly to the source. - Dual: Stores a local copy but also references the source for live queries. - Composite model: A data model that uses tables from multiple storage modes. - On-premises data gateway: Software that enables Power BI to connect to data sources that are not on the public internet.

Finally, the exam may present a scenario with a question like 'Which storage mode would you recommend for this dataset?' The correct answer pattern is: if the requirement mentions 'real-time' or 'live' and the data is huge, pick DirectQuery. If the requirement mentions 'fast performance' and data is moderate-sized, pick Import. If the mention involves 'a small reference table alongside a large live table', pick Dual. Watch out for the word 'always'—no single mode is always correct; it depends on trade-offs.

Key Takeaways

Import mode copies data into Power BI's memory, giving the fastest report performance but requiring scheduled refreshes to keep data fresh.

DirectQuery mode leaves data in the source and sends live queries, ensuring real-time data at the cost of slower interactions and limited DAX functions.

Dual mode acts as Import for local cache lookups and DirectQuery for live queries, making it ideal for dimension tables in mixed-mode models.

Composite models allow you to combine Import, DirectQuery, and Dual tables in a single report, giving you flexibility to balance freshness and speed.

DirectQuery cannot use calculated tables, time intelligence DAX functions (like TOTALYTD), or many Power Query transformations that break query folding.

On-premises data sources require a data gateway for both Import (scheduled refresh) and DirectQuery (live connection) modes.

Changing storage mode after building a report can break visuals that rely on features exclusive to the original mode, so choose carefully early on.

Easy to Mix Up

These come up on the exam all the time. Here's how to tell them apart.

Import Mode

Data is copied into Power BI's in-memory engine.

Report responses are near-instant due to local cache.

Supports all DAX functions, including time intelligence.

DirectQuery Mode

Data stays in the source; no copy is stored.

Each visual interaction queries the source live, adding latency.

Limited DAX; time intelligence functions behave differently.

Import Mode

Always uses a full copy of the data in memory.

Does not fallback to DirectQuery even if needed.

Best for standalone datasets that do not need live data.

Dual Mode

Uses a local cache but can query live when necessary.

Automatically switches between cache and live based on query needs.

Ideal for dimension tables in composite models with DirectQuery facts.

DirectQuery Mode

All tables in the model are live, no cache.

Every query goes to the source, no local storage.

Cannot combine with Import tables without a composite model limitation.

Dual Mode

Some tables are cached locally for speed.

Can work alongside Import or DirectQuery tables seamlessly.

Used specifically to optimise performance in mixed-mode models.

Composite Model (Dual + DirectQuery)

Mixes storage modes across tables for flexibility.

Allows small dimension tables in Dual for speed, large fact tables in DirectQuery for freshness.

Requires careful design to avoid cross-mode join performance issues.

Single Mode Model (All Import or All DirectQuery)

All tables use the same storage mode: either all Import or all DirectQuery.

Simpler to manage, no risk of mixed-mode complexities.

Either all data is stale (import) or all queries are slow (DirectQuery).

Watch Out for These

Mistake

Import mode always gives you the most up-to-date data because it refreshes automatically.

Correct

Import mode only updates data when you manually refresh or schedule a refresh. The data is a snapshot and can become stale. DirectQuery always shows live data.

Beginners confuse 'copy' with 'live'—they think if Power BI has a copy, it must be constantly updated, but that is not how it works.

Mistake

You cannot use Import mode with on-premises data sources at all.

Correct

You can use Import mode with on-premises sources by installing an on-premises data gateway to enable Power BI to access the data for refresh.

The term 'on-premises' feels like a restriction, but the gateway solves this exactly.

Mistake

DirectQuery is always slower than Import mode, so you should never use it.

Correct

DirectQuery can be faster than Import for very large datasets because you avoid the long initial import and storage costs, but per-query performance is typically slower than a cached import.

People compare a single click in a cached report to a full query—they forget that importing 500 GB can take hours.

Mistake

Dual mode means the data is always stored both in Power BI and in the source, doubling the storage cost.

Correct

Dual mode only stores a copy in Power BI's cache when it benefits performance; it does not duplicate data unnecessarily. The source data remains unchanged.

The word 'dual' suggests two copies, but it is more about behaviour at query time, not persistence.

Mistake

Once you choose a storage mode for a table, you cannot change it later.

Correct

You can change the storage mode of a table after it is loaded, but it may break existing measures or visuals that rely on features not supported in the new mode.

Power BI's UI does allow the change, so beginners think it is safe—but they do not realise the downstream impact.

Mistake

You must use the same storage mode for all tables in a single Power BI report.

Correct

You can mix storage modes in a single report (composite model). For example, you can have a DirectQuery fact table and an Import dimension table. This is a key feature tested in PL-300.

Older BI tools enforced a single mode, so beginners assume Power BI works the same way.

Do You Actually Know This?

Reveal each answer, then mark whether you got it right. Score 60%+ to unlock the next chapter.

Frequently Asked Questions

What is the difference between Import and DirectQuery storage modes?

Import mode copies data into Power BI's memory for fast queries but requires refreshes to stay current. DirectQuery sends live queries to the source, showing real-time data but with slower performance and limited DAX features.

Can I mix Import and DirectQuery in the same Power BI report?

Yes, you can. This is called a composite model. You can have one table in Import and another in DirectQuery. You can even set tables to Dual mode to combine the benefits.

What storage mode should I use for real-time data?

Use DirectQuery when you need data updated in real time and the dataset is very large, or use DirectQuery with a small dataset that updates frequently. If the dataset is small and changes slowly, Import with frequent refresh might also work.

Is DirectQuery slower than Import?

Generally, yes. Import mode queries are in-memory and virtually instant. DirectQuery adds network latency and source query time. However, for huge datasets, Import can be impractically slow to refresh, so DirectQuery may be the only viable choice.

What does Dual storage mode mean in Power BI?

Dual mode stores a local cache of the data (like Import) but also allows Power BI to send live queries to the source (like DirectQuery) when needed. It is ideal for small dimension tables in composite models to balance speed and freshness.

Do I need a data gateway for DirectQuery with cloud sources?

If the cloud source is accessible over the public internet (like Azure SQL Database or Snowflake), you do not need a gateway. For on-premises sources or cloud sources behind a firewall, you need an on-premises data gateway.

Can I use calculated tables in DirectQuery?

No. Calculated tables (created with DAX) are not supported in DirectQuery mode because they require storing data in the model, which DirectQuery avoids. You must use calculated columns or measures instead.

Terms Worth Knowing

Keep going

You've finished Data Loading and Storage Modes. Continue through the PL-300 study guide to build a complete picture of the exam.

Done with this chapter?