In this article, we will talk about the two ways to import data into Power BI. When we connect any data source, it will import the copy of the data in Power BI. For some data sources, an alternative approach is available: connect directly to the data source using DirectQuery
This article covers the following concepts in a brief manner.
Import Mode and DirectQuery Mode
Benefits of using DirectQuery
Limitations of DirectQuery
Important facts about DirectQuery
Now, let’s get started.
It will load all the selected tables in Power BI Desktop.
We need to refresh the data to check latest updated data.
No data is loaded or copied from any data source to Power BI.
The data (selected columns or tables) will appear in the Fields tab.
When we interact with any visual, we have always fresh live data.
Benefits of DirectQuery
When we have a very large database which is unfeasible to import all data with pre-aggregation, at that time DirectQuery suits most.
It doesn’t have a limitation of 1 GB Dataset.
DirectQuery always uses current (live) data.
Limitations of DirectQuery
All the tables must be from the same database.
If any error occurs while we query the data, we need to solve the problematic step from Query Editor.
If we are not able to solve the error, we have to use "Import" mode instead of DirectQuery Mode.
For multidimensional cubes like SSAS OLAP or SAP, it will not provide Query Editor.
No relationship is detected in a multidimensional database like SAP.
DirectQuery mode does not support Time Intelligence functions.
There is 1 million row limit for returning the data in DirectQuery.
Ex: Suppose, I have 5 million rows in a table. At a time, it will return 1 million rows. If we have applied any calculations or measures, it will not be affected by this limitation.
Important Facts about DirectQuery
The DirectQuery request is directly sent to the database server.
The recommended minimum refresh time for visual is 5 seconds and the maximum is 30 seconds.
Sometimes, if query processing on data source will take more time to refresh a visual.
Load on original data source depends on how many users are using the report at the moment.
RLC (Row Level Security) also affects the performance.
RLC tile needs to apply one additional query on a returned dataset. That will affect the performance.
There is one limitation in Power BI and that is related to Security. When we publish a Power BI report, all the users can see all the data from database tables. Now, if we want to implement per-user security at that time, we need to use RLC.
All the features are not supported when we are using DirectQuery Mode. For an example, Quick Insights not supported with DirectQuery Mode.
When to use DirectQuery Mode?
When we need real-time data.
When the database is very large and it is difficult to import all data in a model.
When Data authority restrictions apply.
When the source is multidimensional like SAP BW.
I hope you got a clear idea of DirectQuery Mode in Power BI.