⚡ The storage mode you choose defines everything about your Power BI report. This complete 2026 guide breaks down Import, DirectQuery, and Direct Lake — how each works, where each wins, and exactly which one to use for your data size, freshness requirements, and Fabric licensing situation.
Last Updated: October 19, 2026
If you’ve ever asked “Power BI Import vs DirectQuery vs Direct Lake — which storage mode should I use?” you’re asking the most consequential architectural question in Power BI. The answer shapes your report performance, your data freshness, your licensing costs, your modeling flexibility, and whether your semantic model survives at enterprise scale. Getting it wrong doesn’t just slow down a dashboard — it can sink an entire BI deployment. In 2026, with Microsoft Fabric’s Direct Lake mode now generally available, this three-way decision has become the central question every Power BI architect, BI developer, and data leader must get right.
This guide covers all three storage modes in full: how Import, DirectQuery, and Direct Lake actually work under the hood; their real-world performance characteristics supported by benchmark data; the specific modeling limitations of each; the licensing requirements that constrain your choices; and the advanced scenarios — Composite Models, Row-Level Security, and the Direct Lake fallback problem — that catch teams off guard in production. According to Microsoft, Power BI now holds nearly 30% of the global BI market, meaning the storage mode decision affects hundreds of thousands of organizations worldwide.
By the end of this guide, you will have a clear decision framework that maps your specific scenario to the right storage mode — whether you’re a solo analyst building your first semantic model, an architect designing a Fabric-based enterprise lakehouse, or a data leader trying to understand why your executive dashboard is timing out. The 2026 consensus is clear: there is no universally “best” storage mode. There is only the right mode for your architecture, your data volume, your freshness requirements, and your capacity budget.
📘 New to Power BI terminology? Before diving into storage modes, bookmark the AI Buzz Glossary — it covers 100+ essential AI terms including semantic models, data lakes, VertiPaq, and Delta tables in plain English.
🗄️ 1. What Is a Power BI Storage Mode? (The Three-Way Decision Explained)
A Power BI storage mode determines three things simultaneously: where your data physically lives, how queries are executed when a user interacts with a report visual, and which modeling features remain available to the developer. It is not simply a performance dial you can turn up or down — it is an architectural commitment that affects the entire lifecycle of a semantic model, from development and testing through production operation and governance.
Before 2023, Power BI developers had two options: Import or DirectQuery. Import loaded a compressed copy of data into Power BI’s in-memory VertiPaq engine at refresh time. DirectQuery sent live queries to the source system at report interaction time. Both remained valid choices, but both forced a compromise: Import was fast but stale; DirectQuery was fresh but slow. The introduction of Microsoft Fabric’s Direct Lake mode changed this equation fundamentally — not by eliminating the trade-offs, but by introducing a third architectural path that sidesteps the most painful limitations of both predecessors.
Understanding the three-way decision requires understanding what each mode fundamentally optimises for. SQLBI, the leading independent Power BI technical authority, frames it clearly: Direct Lake is not a replacement for Import or DirectQuery — it is a distinct option that suits specific scenarios, is not universally faster than Import, and does not replace DirectQuery’s real-time capability. Each mode has a different architecture, a different cost profile, and a different set of conditions under which it is the right answer.
The 2026 Storage Mode Reality: Import remains the correct default for most organisations. DirectQuery earns its place only where genuine real-time requirements exist. Direct Lake is the strategic choice for Microsoft Fabric deployments with large datasets already in OneLake — but it requires careful SKU sizing and upstream data engineering discipline to perform reliably.
Before choosing any storage mode, you need honest answers to four questions: How large is your dataset? How fresh does the data need to be? Are you operating inside Microsoft Fabric? And what modeling flexibility do your DAX developers need? These four questions are the foundation of the decision framework in Section 6 of this guide. Each storage mode is examined in full in the sections that follow.
📥 2. Power BI Import Mode Explained: Speed, Simplicity, and the Trade-Offs
Import mode is the default storage mode in Power BI and the starting point for most new semantic models. When you import data, Power BI extracts it from the source system, compresses it using the VertiPaq columnar in-memory engine, and stores it inside the semantic model file. From that point forward, all report queries run against in-memory data — not against the source system. The result is fast, predictable, consistent query performance that has made Import the dominant choice for enterprise reporting for years.
How Import Mode Works
At refresh time, Power BI connects to your source system — a SQL database, a cloud data warehouse, a flat file, or any supported connector — and loads a full or incremental copy of the data into the VertiPaq engine. VertiPaq applies aggressive column-store compression, often achieving compression ratios of 10:1 or better on well-structured, highly-repetitive business data. Once loaded, the data is held in memory and all subsequent queries execute entirely in-memory, with no round-trips to the source system until the next scheduled refresh.
This architecture produces the fastest possible query performance. Benchmark testing across production datasets consistently confirms this advantage. Metrica Software published benchmarks comparing identical datasets across modes, finding that Import mode returned visuals in 1 to 4 seconds while DirectQuery took 15 to 89 seconds on the same queries. A 4-minute hard timeout exists in the Power BI service for DirectQuery, which Import mode never triggers. For most business reporting scenarios — daily operational dashboards, finance reports, executive scorecards — that performance gap is decisive.
Import Mode: Strengths
- Fastest query performance: All data is in memory; no source-system round-trips at query time.
- Full DAX support: Calculated columns, calculated tables, all time intelligence functions, complex measures — all fully supported.
- Source system isolation: Refreshes happen on a schedule; heavy transformations at refresh time do not impact source system performance during business hours.
- Broadest connector support: Connects to any Power BI-supported data source — SQL, Excel, APIs, cloud warehouses, and hundreds more.
- Simplest developer experience: The full Power BI Desktop modeling toolset is available with no restrictions.
- Incremental refresh available: Large datasets can be refreshed partition by partition, dramatically reducing refresh windows — the EPC Group’s implementation data across 150+ organisations shows incremental refresh reducing refresh times from 35 minutes to 4 minutes, an 88% reduction.
Import Mode: Limitations
- Data staleness: Data is only as fresh as the last completed refresh. In Power BI Pro and Premium Per User, you can schedule up to 8 refreshes per day. Power BI Premium capacity supports up to 48 refreshes per day.
- Dataset size limits: Import models have a maximum size of 1 GB in shared capacity. In Power BI Premium, the limit extends to 400 GB with large dataset storage enabled.
- Refresh windows and failures: Large Import models can have refresh windows of 30 minutes to several hours. A failed refresh leaves the model serving stale data.
- Memory pressure: Large datasets with many tables place pressure on capacity memory, especially when multiple models compete for the same resources.
- Data duplication: A copy of the data exists inside the semantic model separately from the source — creating governance and consistency challenges if source data changes between refreshes.
Import Mode in one line: The right default for most organisations with structured data under 400 GB, daily refresh tolerance, and teams that need the full DAX and modeling toolkit — but not the right choice when data must be live or when datasets have outgrown refresh window constraints.
When to Use Import Mode
Import mode is the right choice when your dataset fits within capacity limits, when scheduled refresh meets your business freshness requirements (hourly or daily is typically sufficient for finance, HR, and operational reporting), when your DAX developers need the full modeling toolkit, and when you are not yet operating inside Microsoft Fabric. It is also the right choice when your source system cannot handle concurrent query load from live report interactions — a common constraint with legacy databases and on-premises SQL servers.
🔄 3. Power BI DirectQuery Explained: Real-Time Data at a Performance Cost
DirectQuery mode sends a query directly to your data source every time a user interacts with a report visual. There is no data copy inside the semantic model. When a user clicks a slicer, changes a filter, or loads a page, Power BI translates the DAX measure into a native query (SQL, for most relational sources), sends it to the source system, waits for a response, and renders the result. The data displayed in the report is always as fresh as the source system — but the user experience is constrained by the latency of every round-trip.
How DirectQuery Mode Works
In DirectQuery, the semantic model acts as a translation and governance layer rather than a data store. The model holds the metadata — table relationships, measure definitions, column names, security rules — but holds no data. Every visual query generates a native query to the source. For a single report page with six visuals, a page load can generate six or more simultaneous queries to the source system. Under heavy concurrent user load, this places significant and sustained pressure on source-system performance — a consideration that is frequently underestimated during initial deployment planning.
DirectQuery: Strengths
- Always-current data: Every visual interaction queries the source in real time. There is no refresh schedule and no staleness — the data shown is the data in the source at the moment of query.
- No dataset size limit from the model side: DirectQuery does not have the 1 GB model size limitation of Import mode. You can connect to multi-terabyte source tables — provided the source can handle the query load.
- Source-enforced security: Because queries run against the source system, source-level permissions and row-level security defined in the database are enforced at query time. This is a meaningful governance advantage in highly regulated environments.
- No data duplication: No copy of the data exists in Power BI. For organisations with strict data residency requirements, this eliminates a compliance risk.
- No refresh failures: There is nothing to refresh. If the source system is available, the data is available.
DirectQuery: Limitations
- Performance penalty: Every visual interaction incurs source-system query latency. Benchmarks show DirectQuery responses 4x to 22x slower than equivalent Import queries. Complex queries against large tables can breach the Power BI service’s 4-minute hard timeout.
- Reduced DAX support: Calculated columns in DirectQuery can only reference columns from the same table and must fold to the source’s native query language. Calculated tables are not available in pure DirectQuery models. Time intelligence functions like DATEADD and DATESYTD are restricted.
- Source system load: Every report interaction generates live database queries. Under concurrent user load, DirectQuery can degrade source system performance for operational systems — a common production failure mode.
- Limited connector support: Not all Power BI connectors support DirectQuery. SharePoint lists, some Excel connections, and several SaaS APIs are Import-only.
- 1 million row return limit: A single query cannot return more than 1 million rows to a visual. This limits the viability of certain detailed data exploration scenarios.
DirectQuery in one line: The right choice when data must be live and the source system can absorb concurrent report query load — but a poor choice for large, complex models, time intelligence-heavy DAX, or any scenario where report performance under load has been measured and found inadequate.
When to Use DirectQuery Mode
DirectQuery is appropriate in a narrow but important set of scenarios: operational dashboards where data changes minute-by-minute and business decisions depend on real-time visibility; environments where data governance or regulatory policy prohibits copying data outside the source system; and architectures where a well-optimised, high-performance database (Azure Synapse, Databricks, Snowflake) can absorb report query load without degrading operational workloads. DirectQuery is also the right choice when source-enforced row-level security is a hard requirement that cannot be replicated at the model level.
🌊 4. Direct Lake Mode Explained: The Microsoft Fabric Game-Changer for 2026
Direct Lake is the storage mode introduced with Microsoft Fabric that attempts to address the core trade-off between Import and DirectQuery. Rather than loading a copy of data into Power BI’s VertiPaq engine (Import) or querying the source system at runtime (DirectQuery), Direct Lake reads Delta table column segments directly from OneLake — Microsoft Fabric’s unified storage layer — loading only the columns needed for each specific query, on demand, into the VertiPaq analysis engine. Microsoft’s Direct Lake documentation describes this as achieving near-import query performance without duplicating data into a separate model refresh cycle.
Direct Lake on OneLake reached general availability in March 2026, representing a significant maturity milestone for the architecture. This is the mode that most Fabric-based Power BI deployments in 2026 should target — and it behaves differently in important ways from the original Direct Lake on SQL endpoint variant that has been available since November 2023.
How Direct Lake Mode Works: The Framing Process
When a Direct Lake semantic model is published or refreshed, it undergoes a process called framing. Framing reads the metadata of the Delta tables in OneLake — column names, data types, row counts, file statistics — and registers them with the semantic model. This metadata operation takes seconds rather than the minutes or hours of a full Import refresh. No data is copied into the model during framing. Instead, when a user interacts with a report visual, Direct Lake reads the specific Parquet column files from OneLake that are needed to answer that query, loads them into VertiPaq memory on demand, and executes the query in-memory.
The result is a report that feels like Import mode in terms of query performance — because the final query execution is happening in VertiPaq, in memory — but with data freshness that approaches DirectQuery, because the Delta tables in OneLake are updated continuously by upstream Fabric workloads (Spark notebooks, Dataflows Gen2, pipelines) and framing captures those updates almost immediately. A refresh in Direct Lake involves only a new framing operation — typically completing in seconds — rather than a full data reload.
Direct Lake: Two Variants in 2026
Understanding Direct Lake in 2026 requires understanding that there are now two distinct variants, with meaningfully different behaviour when things go wrong:
- Direct Lake on SQL endpoint (legacy, GA November 2023): Routes queries through the SQL analytics endpoint of a Fabric Lakehouse or Warehouse. When SKU guardrails are exceeded, or when SQL-layer row-level security is applied, the model automatically falls back to DirectQuery mode. This fallback is silent — users see slower results but no error message. The fallback behaviour is controllable via the
DirectLakeBehaviorproperty on the semantic model. - Direct Lake on OneLake (newer, GA March 2026): Reads Delta tables directly via OneLake APIs, bypassing the SQL endpoint entirely. There is no DirectQuery fallback — if guardrails are exceeded or a query cannot be served in Direct Lake mode, it fails. This stricter behaviour eliminates silent performance degradation and forces proper SKU sizing and table optimisation upstream.
Direct Lake: The Fallback Problem — The Most Important Thing to Understand
The most critical production risk with Direct Lake on SQL endpoint is the silent fallback to DirectQuery. When a Direct Lake model falls back, users experience DirectQuery-level latency — responses 4x to 22x slower than expected — with no warning and no error. The fallback is triggered by four primary causes: Delta tables with too many Parquet files or row groups exceeding per-SKU framing thresholds; the model exceeding memory guardrails for the assigned Fabric capacity SKU; use of unsupported features such as calculated columns or SQL-layer row-level security; and tables that have never completed framing after a Delta write.
In a documented real-world client engagement, a production Direct Lake model was experiencing a 40% fallback rate across queries. After optimising the Delta tables with V-Order and running the OPTIMIZE command to compact Parquet files, the fallback rate was reduced to under 3%. V-Order — a Microsoft-specific optimisation that reorders rows within Parquet column segments for maximum compression and VertiPaq compatibility — is the single most important Delta table configuration for Direct Lake performance. Delta tables not written with V-Order will trigger fallback on the SQL endpoint variant, or fail entirely on the OneLake variant.
Direct Lake: F-SKU Guardrails
Every Fabric capacity SKU enforces hard limits on Direct Lake models. Understanding these guardrails is essential before committing to Direct Lake architecture. The guardrails cover rows per table, Parquet files per table, and maximum model memory. Based on confirmed Microsoft published limits:
| Fabric SKU | Max Rows / Table | Parquet Files / Table | Max Memory | Monthly Cost |
|---|---|---|---|---|
| F2 | 300M | 1,000 | 3 GB | $262.80 |
| F8 | 300M | 1,000 | 3 GB | $1,051.20 |
| F16 | 300M | 1,000 | 5 GB | $2,102.40 |
| F32 | 300M | 1,000 | 10 GB | $4,204.80 |
| F64 | 1.5B | 5,000 | 25 GB | ~$8,409.60 |
| F128 | 3B | 5,000 | 50 GB | ~$16,819.20 |
| F256 | 6B | 5,000 | 100 GB | ~$33,638.40 |
F2 monthly cost confirmed at $262.80 (minimum for Direct Lake). Higher SKU costs are approximate based on Microsoft’s per-CU pricing as of October 2026. Always verify current pricing at Microsoft Fabric pricing.
A critical and frequently missed point for teams on F2 through F32: the 300 million row limit and 1,000 Parquet file limit per table apply equally to all four lower SKUs. For organisations with large transactional fact tables — retail transaction history, IoT sensor readings, call detail records — these limits are hit well before the memory ceiling. Direct Lake on F2 through F32 is appropriate for mid-size datasets; for genuinely large enterprise fact tables, F64 is the practical minimum. A model that fits comfortably on F64 may trigger constant fallback on F8.
Direct Lake: Modeling Limitations
- No calculated columns on Direct Lake tables: Calculated columns that reference Direct Lake table data are not supported. Column-level calculations must be performed upstream in the Lakehouse using SQL or Spark before the data reaches the semantic model.
- No calculated tables (in pure Direct Lake models): Calculated tables are not available when all tables use Direct Lake. They can be added as Import-mode tables in a Composite Model.
- No MDX user hierarchies: This affects Excel users consuming the semantic model via Analyse in Excel or external OLAP connections.
- OneLake Delta tables only: Direct Lake connects exclusively to Delta tables in a Fabric Lakehouse or Warehouse. Any data source outside OneLake requires a different approach — Import, DirectQuery, or a Dataflow to land the data in OneLake first.
- Fabric capacity required: Direct Lake requires a Microsoft Fabric capacity (minimum F2 at $262.80/month as of October 2026). Power BI Pro or Premium Per User licences alone are insufficient.
📊 Explore the full Power BI learning hub: From star schemas and DAX to Dataflows and Fabric licensing, the AI Buzz Power BI & Data Analytics Hub covers everything Power BI professionals need in 2026.
⚖️ 5. Import vs DirectQuery vs Direct Lake: Full Head-to-Head Comparison
Having examined each storage mode individually, the following comparison table brings the critical dimensions together in one place. This is the reference you should bookmark when you are evaluating options for a new semantic model or troubleshooting an existing one that is not performing as expected.
| Dimension | Import | DirectQuery | Direct Lake |
|---|---|---|---|
| Data location | Copied into VertiPaq in-memory engine | Remains in source system | Delta tables in OneLake; loaded to memory on demand |
| Query performance | Fastest (all in memory) | Slowest (source round-trip every interaction) | Near-Import (when no fallback occurs) |
| Data freshness | Stale until refresh (up to 48x/day on Premium) | Real-time (every visual is live) | Near-real-time (framing takes seconds) |
| Data duplication | Yes — full copy in model | None | None — reads from OneLake |
| Dataset size limit | 400 GB (Premium large dataset storage) | Source-limited (no model size cap) | SKU-limited (300M rows on F2–F32; 1.5B on F64) |
| DAX support | Full | Limited (no calc tables; some TI functions restricted) | Most (no calc columns on DL tables; some trigger fallback) |
| Refresh required | Yes — scheduled or on-demand | No | Framing only (seconds) |
| Fabric capacity needed | No (works with Pro and PPU) | No (works with Pro and PPU) | Yes — minimum F2 ($262.80/month as of Oct 2026) |
| Source data required | Any supported connector | SQL / AS sources (not all connectors) | OneLake Delta tables only |
| Fallback risk | None | None (it is always DirectQuery) | High if tables not optimised (SQL endpoint variant) |
| Best for | Most reporting; structured data; full DAX needed | Real-time operational dashboards; strict data residency | Large Fabric deployments; lakehouse-first architectures |
One critical nuance the comparison table cannot fully capture: these modes are not mutually exclusive. The Composite Model architecture, covered in Section 7, allows you to combine Import and DirectQuery tables in a single semantic model — and in some Fabric scenarios, Direct Lake tables alongside Import-mode calculated tables. Understanding where to deploy Composite Models is one of the most valuable skills a Power BI architect can develop in 2026.
🎯 6. Which Storage Mode Should You Choose? A Decision Framework
The storage mode decision is not a single question — it is a sequence of five qualifying questions that progressively narrow the field. Work through them in order. If you answer yes to a qualifying question, follow its branch. If you reach the end of a branch, that is your recommended storage mode.
Question 1: Are you operating inside Microsoft Fabric with data in OneLake?
If NO → Proceed to Question 2. Direct Lake is not available to you. Your choice is between Import and DirectQuery.
If YES → Proceed to Question 3. Direct Lake is your primary candidate, but must be validated against Questions 3 and 4.
Question 2: Does your use case require real-time data (data changing every minute, not every hour)?
If NO → Use Import Mode. Scheduled refresh meets your freshness requirement, and Import delivers faster query performance, full DAX support, and a simpler development experience. For most finance, HR, operations, and executive reporting, this is the correct answer. Consider Incremental Refresh if your dataset is large — EPC Group data across 150+ organisations confirms incremental refresh reduces refresh windows by 88% on average.
If YES → Use DirectQuery — but validate first. Run a proof of concept with your actual query patterns. Confirm that your source system can absorb concurrent report query load during peak usage hours. If the source system cannot handle the load, or if DAX complexity requirements exceed DirectQuery’s limitations, reconsider whether the freshness requirement is genuinely minute-level — most use cases that claim to require real-time data are satisfied by near-real-time (framing in seconds) or hourly refresh.
Question 3 (Fabric path): Does your data already reside in a Fabric Lakehouse or Warehouse as properly maintained Delta tables?
If NO → Your data must first be landed in OneLake via Dataflows Gen2, Pipelines, or Spark before Direct Lake can be used. If landing data in OneLake is on your roadmap but not yet complete, use Import in the interim. Do not architect around Direct Lake until the upstream Lakehouse layer is production-ready.
If YES → Proceed to Question 4.
Question 4 (Fabric path): Does your fact table fit within the Direct Lake guardrails for your assigned Fabric SKU?
If on F2–F32: Your per-table row limit is 300 million rows and your Parquet file limit is 1,000 per table. If your largest fact table exceeds either limit — or if you have not run OPTIMIZE to compact your Delta files — Direct Lake will either fall back to DirectQuery silently (SQL endpoint variant) or fail (OneLake variant). Validate this before committing to Direct Lake architecture.
If on F64 or above: Your guardrails are substantially higher (1.5B rows at F64; 3B at F128). Most enterprise fact tables fit within F64 limits with proper partitioning. Proceed to Question 5.
If guardrails are exceeded: Use Import mode within Fabric with Incremental Refresh, or consider a Composite Model where large fact tables use DirectQuery against a well-optimised Fabric Warehouse while dimension tables use Import. EPC Group data confirms that writing to Fabric Lakehouse via Direct Lake versus Import mode reduces capacity consumption 50–70% when the architecture is correctly implemented.
Question 5 (Fabric path): Do your DAX developers need calculated columns on the fact table?
If YES → You cannot use pure Direct Lake for those tables. Either perform the column calculations upstream in the Lakehouse layer (the recommended Fabric-native approach), or use a Composite Model with the calculated column tables in Import mode and the large tables in Direct Lake.
If NO → Use Direct Lake. Ensure V-Order is applied to your Delta tables, run OPTIMIZE regularly, monitor for fallback events in Fabric Monitoring Hub, and benchmark your query performance against an equivalent Import model. Target within 20% of Import performance — a larger gap indicates fallback or optimisation issues to address.
| Your Scenario | Recommended Mode | Key Condition |
|---|---|---|
| Standard business reporting (finance, HR, ops) | Import | Daily or hourly refresh acceptable |
| Large dataset, outgrowing refresh window | Import + Incremental Refresh | Premium capacity required for full incremental refresh |
| Live operational dashboard (data changes per minute) | DirectQuery | Source system must handle concurrent report query load |
| Strict data residency — no copy of data permitted | DirectQuery | Data never leaves the source system |
| Fabric deployment, data already in OneLake Lakehouse | Direct Lake | Delta tables V-Ordered; fact table within SKU guardrails |
| Fabric deployment, dataset exceeds guardrails or needs calc columns | Composite Model | Combine Direct Lake + Import or DQ tables in one model |
| Billions of rows; repeating report patterns; aggregation strategy | Composite Model + Aggregations | Microsoft’s June/July 2026 benchmark confirms sub-100ms on well-matched aggregations |
🔧 7. Advanced Considerations: Composite Models, RLS, and Licensing
For most Power BI deployments, the five-question decision framework in Section 6 is sufficient. But there are three advanced scenarios that require additional understanding before committing to a storage mode architecture: Composite Models (mixing modes in a single semantic model), Row-Level Security (which behaves differently across modes), and the licensing realities that constrain which options are actually available to your organisation.
Composite Models: Combining Storage Modes
A Composite Model is a single Power BI semantic model that contains tables in more than one storage mode. The most common patterns are Import tables combined with DirectQuery tables, and — in Fabric deployments — Direct Lake tables alongside Import-mode dimension or calculated tables. Composite Models exist because real-world data architectures rarely fit neatly into a single storage mode. A transactional fact table may require DirectQuery for freshness, while a slowly-changing product dimension is better served by Import for performance and full DAX support.
Microsoft’s June/July 2026 benchmark of Power BI architecture choices for Azure Databricks deployments found that for workloads with billions of rows, a Composite Model with aggregations was “the fastest and most consistent pattern,” staying sub-100ms on queries that the aggregation tables could resolve. The caveat confirmed in that benchmark is equally important: that advantage does not extend to queries that fall through to the underlying DirectQuery source. The payoff of a Composite Model with aggregations depends entirely on how well the aggregation tables match real user behaviour. If a significant proportion of user queries bypass the aggregation layer, DirectQuery performance applies to those queries — and the expected performance gains disappear.
For Power BI developers building their first Composite Model, the key rule is to keep dimension tables in Import mode and restrict DirectQuery or Direct Lake to fact tables. This preserves full DAX support for the calculations that run on dimensions — time intelligence, hierarchy traversal, text formatting — while allowing the large fact tables to use the appropriate live or lakehouse-based mode.
Row-Level Security Across Storage Modes
Row-Level Security (RLS) behaves differently across storage modes, and the differences have material security implications that must be understood before deployment. In Import mode, RLS is defined and enforced entirely at the Power BI semantic model layer. Filter expressions evaluate against in-memory data and restrict what each user sees. This is the most flexible and fully supported RLS implementation.
In DirectQuery mode, RLS can be defined at the Power BI model level, at the source database level, or both. Source-level RLS is often the preferred choice in regulated environments because it ensures database-level access controls are enforced regardless of how a user accesses the data. The Power BI Row-Level Security complete implementation guide covers both approaches in detail.
In Direct Lake mode, the RLS situation requires careful attention. For Direct Lake on SQL endpoint, if RLS is defined at the SQL analytics endpoint layer, this triggers a DirectQuery fallback — the entire security check bypasses Direct Lake and queries the source, with the full DirectQuery performance penalty. For Direct Lake on OneLake, SQL-endpoint RLS does not apply at all — RLS must be defined at the semantic model level. This is actually the cleaner approach from a performance perspective, but it requires the Power BI security model to be the authoritative access control layer, which may not align with governance policies in all organisations. Teams implementing RLS on Direct Lake models should always define security rules at the semantic model level, not the SQL layer, to avoid fallback-triggered performance degradation.
Licensing Realities: What You Can Actually Use
Storage mode choice is constrained by licensing in ways that are not always obvious from the Power BI documentation. The key licensing boundaries are:
- Power BI Pro or Premium Per User: Import and DirectQuery are fully available. No access to Direct Lake. Incremental Refresh is available in Pro but with limitations — the detect data changes option requires Premium. Import model size limited to 1 GB without large dataset storage.
- Power BI Premium Per Capacity (P-SKUs): Import and DirectQuery available. No Direct Lake. Large dataset storage enabled — Import model size up to 400 GB. Up to 48 scheduled refreshes per day. Note: P-SKUs are being retired in favour of F-SKUs — check current Microsoft Fabric licensing guidance before purchasing new P-SKU capacity.
- Microsoft Fabric Capacity (F-SKUs, minimum F2 at $262.80/month): All three modes available. Direct Lake requires F-SKU. Dataflows Gen2, which is the recommended ETL layer for landing data into OneLake for Direct Lake, also requires Fabric capacity. F-SKU capacity consumption for Direct Lake writing to Fabric Lakehouse is 50–70% lower than equivalent Import mode at scale — a meaningful long-term cost advantage for large Fabric deployments.
Licensing Reality Check: Direct Lake is not free because it eliminates refresh operations. It requires Fabric capacity (minimum F2 at $262.80/month as of October 2026). For small organisations with modest datasets and existing Power BI Pro licences, Import mode with a well-tuned Incremental Refresh policy is almost always the more economical and simpler path — and it delivers excellent performance for the vast majority of business reporting use cases.
The October 2026 Breaking Change: Power BI Desktop Deprecation
One important operational consideration for all storage mode decisions in October 2026: Microsoft has confirmed that Power BI Desktop versions from March 2026 or earlier can no longer save or share files to OneDrive and SharePoint as of October 2026. Teams still running older Desktop versions must upgrade before storage mode migration work can proceed — particularly for Direct Lake migrations that rely on Fabric workspace integration. Audit your organisation’s Desktop version before committing to a storage mode migration timeline.
🏁 8. Conclusion: The Storage Mode Decision Is an Architecture Decision
The power of understanding Import vs DirectQuery vs Direct Lake is not just picking the right mode for today’s dataset — it is building a BI architecture that scales gracefully as your data volumes grow, your freshness requirements tighten, and your organisation’s Fabric adoption deepens. The wrong storage mode choice is not a configuration setting you can easily change after a semantic model has been in production for six months — it is an architectural commitment that affects data pipelines, refresh schedules, DAX patterns, RLS implementations, and capacity costs simultaneously.
The 2026 guidance is clear. For organisations not yet on Microsoft Fabric: Import is the right default for the vast majority of reporting use cases, with DirectQuery reserved for the narrow set of scenarios where real-time data is genuinely required and the source system is designed to handle concurrent report query load. For organisations building on Microsoft Fabric with data in OneLake: Direct Lake is the strategic target mode for large datasets, provided Delta tables are properly optimised with V-Order, Parquet file counts are within SKU guardrails, and fallback monitoring is in place from day one. The full storage mode comparison and the Microsoft Fabric guide provide further architectural context for organisations navigating this transition.
📌 Key Takeaways
| ✅ | Takeaway |
|---|---|
| ✅ | Import mode delivers the fastest query performance — benchmarks confirm 1 to 4 second visual load times vs 15 to 89 seconds for DirectQuery on identical datasets — and remains the correct default for most business reporting use cases. |
| ✅ | DirectQuery should be used only when data genuinely changes every minute and the source system is architected to absorb concurrent Power BI report query load without degrading operational performance. |
| ✅ | Direct Lake on OneLake reached general availability in March 2026 and is the strategic storage mode for Microsoft Fabric deployments — but it requires Fabric capacity (minimum F2 at $262.80/month) and is not available with Power BI Pro or Premium Per User licences. |
| ✅ | Direct Lake fallback to DirectQuery is the most critical production risk — a real-world client case saw 40% of queries falling back, causing silent performance degradation; after V-Order and OPTIMIZE optimisation, the fallback rate dropped below 3%. |
| ✅ | F-SKU guardrails for Direct Lake are hard limits: F2 through F32 support a maximum of 300 million rows per table and 1,000 Parquet files per table; F64 supports 1.5 billion rows per table — meaning most enterprise fact tables require F64 or above. |
| ✅ | Composite Models — combining Import and DirectQuery or Direct Lake tables in a single semantic model — allow organisations to optimise each table individually, and Microsoft’s June/July 2026 benchmarks confirm sub-100ms performance on aggregation-backed Composite Models at billion-row scale. |
| ✅ | Row-Level Security must be defined at the semantic model level in Direct Lake deployments — not at the SQL analytics endpoint layer — because SQL-layer RLS triggers a DirectQuery fallback, eliminating the performance advantage of Direct Lake entirely. |
| ✅ | Power BI Desktop versions from March 2026 or earlier can no longer save or share files to OneDrive and SharePoint as of October 2026 — organisations must upgrade Desktop before beginning any Direct Lake or Fabric storage mode migration. |
🔗 Related Articles
- 📖 Power BI Dataflows Explained: What They Are and When to Use Them (2026)
- 📖 Power BI Star Schema Explained: How to Build a Fast, Correct Data Model (2026)
- 📖 What Is Microsoft Fabric? How It Changes Power BI for Business Teams (2026)
- 📖 Power BI Premium vs Pro: Which Plan Does Your Business Need in 2026?
- 📖 Power BI Row-Level Security (RLS) Explained: A Step-by-Step Admin Guide (2026)
🗄️ Frequently Asked Questions: Power BI Import vs DirectQuery vs Direct Lake
1. Is Direct Lake faster than Import mode in Power BI?
Not always. Direct Lake delivers near-Import performance when Delta tables are properly optimised with V-Order and Parquet files are within SKU guardrails. If fallback to DirectQuery occurs — due to unoptimised tables, excessive file counts, or guardrail breaches — Direct Lake performance drops significantly. Import mode remains the fastest option in the best-case scenario because all data is already in VertiPaq memory.
2. Can I use Direct Lake without a Microsoft Fabric licence?
No. Direct Lake requires a Microsoft Fabric capacity licence — minimum F2 at $262.80 per month as of October 2026. Power BI Pro and Premium Per User licences do not provide access to Direct Lake. Import and DirectQuery are both available on Pro, PPU, and Premium Per Capacity licences. See our Power BI Premium vs Pro guide for a full licensing comparison.
3. What is the Direct Lake fallback to DirectQuery and how do I prevent it?
Direct Lake on SQL endpoint automatically falls back to DirectQuery — silently — when SKU guardrails are exceeded, when Parquet files are not V-Ordered, or when SQL-layer row-level security is applied. To prevent fallback: run OPTIMIZE on your Delta tables regularly, ensure V-Order is applied during writes, define RLS at the semantic model level rather than the SQL layer, and size your Fabric capacity SKU to fit your largest fact table within the row and file guardrails. Our Power BI Star Schema guide covers upstream data model practices that reduce fallback risk.
4. When should I use a Composite Model instead of choosing one storage mode?
Use a Composite Model when no single storage mode satisfies all your requirements simultaneously. Common scenarios include a large DirectQuery fact table combined with Import-mode dimensions for full DAX support, or a Direct Lake fact table with Import-mode calculated tables for columns that cannot be created on Direct Lake tables. Microsoft’s 2026 benchmarks confirm that Composite Models with aggregations achieve sub-100ms performance at billion-row scale when aggregation tables closely match real user query patterns. Our Power BI Dataflows guide covers how Dataflows support Composite Model staging architectures.
5. Does row-level security work differently across storage modes?
Yes, significantly. In Import mode, RLS is fully defined and enforced at the semantic model layer with no restrictions. In DirectQuery, RLS can be enforced at either the semantic model level or the source database level — source-level enforcement is common in regulated environments. In Direct Lake, you must define RLS at the semantic model level only — SQL-layer RLS triggers a DirectQuery fallback, eliminating Direct Lake’s performance advantage. For a full implementation guide covering all three modes, see our Power BI Row-Level Security step-by-step guide.
📧 Get the AI Buzz Weekly Digest
Weekly AI insights, tools, and strategies — delivered every Monday. Free.





Leave a Reply