In the latest Power BI Desktop a new Preview features was released that now allows you to connect using DirectQuery to either SQL Server or Azure SQL Databases. DirectQuery is a really neat feature that allows you to point to the live version of the data source rather than importing the data into a data model in Power BI Desktop.
Normally when you want to get an updated dataset in the Power BI Desktop you would have to manually click the refresh button (this can be automated in the Power BI Service), which would initiate a full reimport of your data. This refresh could take a variable amount of time depending on how much data your have. For instance, if you’re refreshing a very large table you may be waiting quite a while to see the newly added data.
With DirectQuery data imports are not required because you’re always looking at a live version of the data. Let me show you how it works!
Turning on the DirectQuery Preview
Now, because DirectQuery is still in Preview you must first activate the feature by navigating to File->Options and settings->Options->Preview Features then check DirectQuery for SQL Server and Azure SQL Database
Once you click OK you may be prompted to restart the Power BI Desktop to utilize the feature.
Using DirectQuery in Power BI Desktop
Next make a connection either to an On-Premises SQL Server or Azure SQL database.
Go to the Home ribbon and select Get Data then SQL Server.
Provide your Server and Database names then click OK. ***Do not use a SQL statement. It is not currently supported with DirectQuery***
From the Navigator pane choose the table(s) you would like to use. I’m just going to pick the DimProduct table for this example and then click Load. You could select Edit and that would launch the Query Editor where you could manipulate the extract. This would allow you to add any business rules needed to the data before visualizing it.
Next you will be prompted to select what you want to connect to the data. Again, Import means the data will physically be imported into the data model and DirectQuery means you will retain a live connection to the data source. Select DirectQuery then click OK.
With the connection established you can start to visualize the data. I’ve just brought some fields into a simple table.
How can you prove this is a live connection? Go update the data!
I made a quick change to the first product listed and then clicked the Refresh button on the Home ribbon. Normally this refresh button would attempt to reimport data into the model but because we’re using DirectQuery it just refreshed the visualizations to show the new data in the live data source.
This means that there is not data model being used, just a connection to the live data. There are some implications of the data modeling not being utilized here. If you look at the screenshot above you’ll see there is no Data view, only a Relationship View. That’s because there is no model for the data to be stored in. It also means you cannot create calculations because there is no model for them to be stored in. There are a few other limitation:
- All tables must come from a single database
- If the Query Editor query is overly complex an error will occur. To remedy the error you must: delete the problematic step in Query Editor, or Import the data instead of using DirectQuery
- You cannot enter a SQL query when connecting to data
- You cannot add calculated measures, columns, or tables
- Relationship filtering is limited to a single direction, rather than both directions
- You cannot change the data type of a column
These and other details can be found at the Power BI Support Knowledgebase here.
I think this is a really cool feature and I can’t wait for it to be officially part of the product!
Are views supported in Directquery?
They sure are!
How can I extract date from DateTime column in Direct Query ? Whatever I try I receive an error that it’s not supported in Direct Query