DirectQuery in Power BI Desktop

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

image

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.

image

Provide your Server and Database names then click OK. ***Do not use a SQL statement.  It is not currently supported with DirectQuery***

image

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.

image

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.

image

With the connection established you can start to visualize the data.  I’ve just brought some fields into a simple table.

image

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.

image

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!

Advertisements

3 comments

  1. 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

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s