Power BI 5 min

DirectQuery vs Import Mode in Power BI: Which Should You Use?

Short answer

Import mode loads data into Power BI's in-memory engine, giving fast query performance and full DAX support, but data is only as fresh as the last scheduled refresh. DirectQuery sends queries live to the source database, so data is always current, but report interactions are slower and some DAX functions are unavailable. Use Import mode by default and switch to DirectQuery only when data freshness or dataset size requires it.

Choosing between DirectQuery and Import mode in Power BI affects report speed, data freshness, and what DAX you can write. This article explains the trade-offs and when to use each.

The Core Difference

Import mode copies data from your source into Power BI’s VertiPaq in-memory engine. Queries run against this compressed, optimised copy, which is why Import reports are fast. The data is only as fresh as the last refresh, whether that runs once a day or every 30 minutes.

DirectQuery sends a query to your source system every time a user interacts with the report: clicks a slicer, drills down, or opens a page. Data is always current because you are always querying the live source. The trade-off is that query speed depends on your source database’s performance, and report interactions feel slower.

Why Import Mode Is Usually the Right Choice

Import mode gives you the full Power BI and DAX feature set. All time intelligence functions work, complex measures run fast, and your report performs well even with millions of rows, because VertiPaq is extremely efficient at compressing and querying columnar data. Scheduled refresh is sufficient for most reporting scenarios: finance dashboards updated nightly, sales reports refreshed in the morning, operations dashboards updated every hour. If your data does not need to be real-time, Import mode is the better experience for your users. Once published, you can see how to share it in How to Publish a Power BI Dashboard.

When DirectQuery Makes Sense

DirectQuery is the right choice when your data changes constantly and users need current numbers, for example a live operations dashboard showing today’s order queue or a support team tracking open tickets in real time. It is also necessary when your dataset is too large to import: a data warehouse table with hundreds of millions of rows that cannot fit within the dataset size limit is a clear case for DirectQuery. DirectQuery also avoids duplication: the data stays in your SQL database and Power BI becomes a query layer on top of it.

The Downsides of DirectQuery

DirectQuery limits your DAX. Some functions that rely on iterating the in-memory model are not supported or behave differently. Report interactions are slower because every click triggers a database round trip. If your source database is not well-indexed, a complex report with many visuals can generate dozens of slow queries simultaneously. Your database must also be capable of handling the concurrent query load from all report users. These limitations make DirectQuery unsuitable for most standard analytical reports.

Composite Models: The Middle Ground

Power BI composite models let you mix Import and DirectQuery in the same dataset. You can import dimension tables (products, customers, a date table) for fast filtering while keeping large fact tables in DirectQuery. This reduces the data volume you need to import while keeping the most-used lookup data in memory. Composite models require careful planning to avoid slow cross-mode joins, but they are a practical solution when neither pure mode fits your requirements.

How to Decide

Start with Import mode unless you have a specific reason not to. Switch to DirectQuery if you need sub-minute data freshness or your dataset exceeds the import size limit. Use a composite model when you need elements of both. Avoid DirectQuery purely for convenience: the performance and DAX limitations make it the wrong default.

Our tip: Before switching to DirectQuery, try reducing your Import dataset size first: remove unused columns, pre-aggregate rows in Power Query, and switch data types to the most compact option. A well-trimmed Import dataset often fits within limits that initially seemed impossible.

Frequently asked questions

What is the dataset size limit for Import mode in Power BI?

In Power BI Pro, the dataset size limit is 1 GB compressed. In Power BI Premium or Fabric, this limit increases significantly, up to 100 GB per dataset depending on the capacity SKU. The 1 GB limit applies to the compressed in-memory size, which is typically much smaller than the raw source data size. If your compressed dataset exceeds this limit, you need to either reduce the data (remove unused columns, aggregate rows) or move to Premium capacity or DirectQuery.

How often can I refresh a Power BI dataset on Import mode?

With Power BI Pro, you can schedule up to 8 refreshes per day per dataset. With Power BI Premium or Fabric, this increases to 48 refreshes per day. You can also trigger refreshes on demand via the Power BI Service or via the Power BI REST API. If you need data updated more frequently than every 3 hours, consider DirectQuery or a composite model where the high-frequency tables use DirectQuery and the rest use Import.

What DAX functions do not work in DirectQuery mode?

DirectQuery has limited DAX support because measures must be translatable to SQL queries against the source. Functions that require scanning the in-memory model, such as PATH(), RANKX() in certain forms, complex FILTER() iterations, and some time intelligence functions, either do not work or produce errors in pure DirectQuery mode. This is one of the main reasons Import mode is preferred for complex analytical reports.

What is a composite model in Power BI?

A composite model combines Import and DirectQuery tables in the same dataset. You might import dimension tables (products, customers, dates) for fast filtering while keeping fact tables in DirectQuery for live row counts. This gives you the speed benefits of Import for the most-used lookup data and the freshness of DirectQuery for transactional data. Composite models require careful relationship design to avoid ambiguous cross-mode joins.

Want a dashboard or automation built for you?

Stuurboard BI builds custom Power BI dashboards and workflow automations. Pragmatic, fast, and without the fuss.