Study guide
1.2 Storage Modes: Import, DirectQuery, and Direct Lake
Microsoft Power BI Data Analyst PL-300
Track your progress as you read
Finished sections get a check mark.
1 Introduction
About the PL-300 Exam The Power BI Ecosystem
2 Chapter 1: Get or Connect to Data
1.1 Data Source Types and Connections 1.2 Storage Modes: Import, DirectQuery, and Direct Lake 1.3 Data Source Settings and Parameters
3 Chapter 2: Profile and Clean the Data
2.1 Data Profiling in Power Query 2.2 Resolving Errors, Nulls, and Data Quality Issues 2.3 Data Types and Type Detection
4 Chapter 3: Transform and Load the Data
3.1 Column Transformations and Data Types 3.2 Grouping, Aggregating, Pivoting, and Unpivoting 3.3 Merge Queries, Append Queries, and Relationship Keys 3.4 Query Folding and Load Performance
5 Chapter 4: Design and Implement a Data Model
4.1 Star Schema Design 4.2 Relationships, Cardinality, and Cross-Filter Direction 4.3 Table and Column Properties 4.4 Calculated Columns and Calculated Tables
6 Chapter 5: Create Model Calculations with DAX
5.1 DAX Fundamentals and Measures 5.2 The CALCULATE Function 5.3 Time Intelligence Measures 5.4 Statistical Functions, Semi-Additive Measures, and Calculation Groups 5.5 Essential DAX Patterns and Functions Reference
7 Chapter 6: Optimize Model Performance
6.1 Performance Analyzer and DAX Query View 6.2 Model Size Reduction and Cardinality Management 6.3 DAX Optimization Patterns
8 Chapter 7: Create Reports
7.1 Visual Types and Selection 7.2 Visual Formatting and Conditional Formatting 7.3 Copilot in Power BI Reports 7.4 Report Page Configuration and Slicers
9 Chapter 8: Enhance Reports for Usability and Storytelling
8.1 Bookmarks, Navigation, and Drillthrough 8.2 Sorting, Selection Pane, Mobile Layout, and Accessibility 8.3 Export Settings and Automatic Page Refresh
10 Chapter 9: Identify Patterns and Trends
9.1 The Analyze Feature and AI Visuals 9.2 Using Copilot to Summarize the Semantic Model 9.3 Advanced Analytics Patterns
11 Chapter 10: Create and Manage Workspaces and Assets
10.1 Workspaces, Apps, and Content Distribution 10.2 Subscriptions, Alerts, and Semantic Model Refresh 10.3 Dashboards and Advanced Distribution
12 Chapter 11: Secure and Govern Power BI Items
11.1 Row-Level Security (RLS) 11.2 Sensitivity Labels, Item Access, and Governance 11.3 Deployment Pipelines and Content Lifecycle
1.2 Storage Modes: Import, DirectQuery, and Direct Lake
Key Takeaways Explain This Topic AI
Import mode copies data into the Power BI model for fastest query performance but requires scheduled refreshes.
DirectQuery sends queries to the source at report time for real-time data but depends on source performance.
Direct Lake reads directly from OneLake Parquet files, combining Import speed with DirectQuery freshness.
Composite models allow mixing Import and DirectQuery tables in a single model.
The storage mode choice impacts model size limits, refresh requirements, DAX functionality, and licensing needs.
Last updated: June 2026
Quick Answer: Import copies data into the model (fastest but needs refresh). DirectQuery queries the source live (real-time but slower). Direct Lake reads from OneLake files (near-Import speed, no refresh needed, Fabric only). Composite models mix Import and DirectQuery in one model for flexibility.
Choosing the right storage mode is one of the most critical decisions in Power BI development. The PL-300 tests this topic extensively because it impacts performance, data freshness, model size, and licensing.
Import Mode (In-Memory)
Import mode is the default and most common storage mode. Data is copied from the source into the Power BI model's in-memory columnar engine (VertiPaq).
- How Import Works
- Power BI connects to the data source
- Data is loaded and compressed into the VertiPaq engine
- The connection to the source is closed
- All queries are resolved from the in-memory cache
- Data must be refreshed to pick up changes at the source
- Import Mode Advantages
- Fastest query performance — all data is in memory
- Full DAX functionality — all DAX functions are supported
- Offline capability — reports work without source connectivity
- Query folding — transformations can be pushed to the source during load
- Compression — VertiPaq typically achieves 10:1 compression
- Import Mode Limitations
- Limitation Details
- Model size 1 GB (Pro/PPU shared), 10 GB (Premium default), up to 400 GB (Premium large)
- Data freshness Only as current as the last refresh
- Refresh limits 8/day (Pro), 48/day (Premium)
- Refresh duration Maximum 2 hours (Pro), 5 hours (Premium)
- Memory pressure Large models consume significant capacity resources
- When to Use Import
- Datasets under 1 GB (compressed)
- Data that changes on a predictable schedule (daily, hourly)
- Reports requiring complex DAX calculations
- Scenarios where query performance is the top priority
- Data sources with slow query performance
- DirectQuery Mode
DirectQuery sends queries to the underlying data source every time a user interacts with a report. No data is stored in the Power BI model.
- How DirectQuery Works
- User interacts with a report visual
- Power BI translates the visual's data requirements into a source query (SQL, etc.)
- The query is sent to the data source
- Results are returned and rendered in the visual
- No data is cached (each interaction generates new queries)
- DirectQuery Advantages
- Real-time data — always shows current data from the source
- No model size limits — data stays at the source
- No refresh needed — eliminates refresh scheduling and failures
- Suitable for large datasets — works with multi-terabyte sources
- DirectQuery Limitations
- Limitation Details
- Performance Depends entirely on source query speed
- DAX restrictions Some DAX functions not supported or perform poorly
- Query limits Maximum 1 million rows per query
- Source load Heavy report usage can overwhelm the source
- Transformation limits Limited Power Query transformations available
- No calculated tables Cannot create calculated tables with DirectQuery
- When to Use DirectQuery
- Data changes frequently and near-real-time visibility is required
- Datasets are too large to import (multi-terabyte)
- Corporate policies prevent data duplication
- The source database is well-optimized for analytical queries
- Row-level security must be enforced at the source level
- Direct Lake Mode
Direct Lake is the newest storage mode, available exclusively with Microsoft Fabric (F or P SKUs). It reads data directly from Parquet/Delta files in OneLake.
- How Direct Lake Works
- Data is stored as Parquet/Delta files in a Fabric Lakehouse or Warehouse
- Power BI reads the data directly from OneLake (no copy, no query translation)
- Data is loaded into memory on-demand, similar to Import
- If data exceeds available memory, the engine falls back to DirectQuery
- Data freshness is automatic when source files are updated
- Direct Lake Advantages
- Near-Import performance without copying data
- Automatic data freshness — no scheduled refresh needed
- Large dataset support — handles much larger datasets than Import
- Reduced storage costs — data stays in OneLake (one copy)
- Full DAX support — same capabilities as Import mode
- Direct Lake Limitations
- Limitation Details
- Fabric required Only available with Fabric capacity
- Data format Must be Parquet/Delta in OneLake
- Fallback behavior Falls back to DirectQuery if memory limits are exceeded
- Guardrails Row count and column limits based on SKU size
- New technology Fewer community resources and best practices
- When to Use Direct Lake
- Organization uses Microsoft Fabric
- Data is already in a Fabric Lakehouse or Warehouse
- Need Import-like performance without refresh overhead
- Dataset is too large for Import but too demanding for DirectQuery
- Composite Models
Composite models allow mixing Import and DirectQuery tables in a single model:
- Import small dimension tables for fast filtering
- Use DirectQuery for large fact tables that change frequently
- Create aggregation tables (imported) that speed up high-level queries
- DirectQuery tables handle detail-level drill-through
- Dual Storage Mode
Tables set to Dual mode can function as either Import or DirectQuery depending on the query context:
- When joined with Import tables → acts as Import
- When joined with DirectQuery tables → acts as DirectQuery
- Automatically optimized by the engine
Decision Framework Storage Mode = f ( Data Size , Freshness Needs , Source Performance , Licensing ) \text{Storage Mode} = f(\text{Data Size}, \text{Freshness Needs}, \text{Source Performance}, \text{Licensing}) Storage Mode = f ( Data Size , Freshness Needs , Source Performance , Licensing )
- Criteria Import DirectQuery Direct Lake
- Data < 1 GB, daily refresh OK Best OK OK
- Data > 10 GB, real-time needed Poor Best Best
- Fabric environment, any size OK OK Best
- Slow source, complex DAX Best Poor Good
- Strict no-copy data policy No Best Best
- On the Exam
The PL-300 frequently tests:
- Choosing the correct storage mode for a given scenario
- Understanding the performance implications of each mode
- Knowing the limitations of DirectQuery (DAX restrictions, no calculated tables)
- Recognizing when Direct Lake is the appropriate choice
- Understanding composite model architecture and dual storage mode