Business Intelligence Blogs

View blogs by industry experts on topics such as SSAS, SSIS, SSRS, Power BI, Performance Tuning, Azure, Big Data and much more! You can also sign up to post your own business intelligence blog.

«November 2015»

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


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

Read more

The Big Data Blog Series

Over the last few years I’ve been speaking a lot on the subject of Big Data. I started by giving an intermediate session called “Show Me Whatcha’ Workin’ With”. This session was designed for people who had attended a one hour introductory session that showed you how to load data, to look at possible applications … Continue reading The Big Data Blog Series
Read more

SSRS - Embedded Custom Code

  • 4 January 2012
  • Author: DevinKnight
  • Number of views: 33322

When developing reports in Reporting Services you will often use the built-in
expression language to make report data and formatting dynamic.  The expression
language can do a lot to within Reporting Services but any gaps in functionality
that it has can be filled with custom code. 

There are two ways to implement custom code in Reporting Services.  The first
way, which I will show in the post, is with embedded code.  The other method is
to create an external assembly that can be imported into a report.  I will
discuss this method in a future post.

Embedded code requires that you use VB but you do not have to go through the
process of creating an assembly in Visual Studio like you would with the
external assembly method.  Let’s go through the process of creating a report
using embedded custom code and discuss some of the other benefits and
disadvantages of this approach.

Here’s a basic report that I’ve developed with a list of employees and phone

What I’d like to do is format all the phone numbers to look like this
(###)###-####.  This could easily be accomplished with some custom code.  To add
custom code in Reporting Services select the Report->Report Properties

Go to the Code page and use the following code to apply the phone number

Function PhoneFormat(PhoneNumber As String) As
    Select Case PhoneNumber.Length
    Case 7
PhoneNumber.Substring(0,3) & "-" & PhoneNumber.Substring(3,4)
Case 10
    Return "(" & PhoneNumber.Substring(0,3) &")" &
PhoneNumber.Substring(3,3)&"-" & PhoneNumber.Substring(6,4)
    Return "(" & PhoneNumber.Substring(0,3) &")" &
PhoneNumber.Substring(4,3)&"-" & PhoneNumber.Substring(8,4)
    Return PhoneNumber
    End Select
End Function

Click OK once this code has been entered.  This code reads in different
variations of phone numbers that could be provided and converts it to the
appropriate format.  We can now use this code in our report.  I can replace the
current column that stores the phone number data with an expression that calls
this custom code to correct that data presented in the report.  That expression
would look like this:


When you preview this report now the data will look like this (I’ve kept the
original column so you can tell the difference):

This is a basic example but shows how powerful custom code can be.  Now there
are a few things I should point out about this embedded code example that are
not ideal.  Some embedded code disadvantages are:

  • You must use Visual Basic (no C#)
  • No Intellisense in the code window like you experience in Visual Studio
  • Code errors are not visible until you actually preview the report

While embedded code is powerful you will find external assemblies have even
more benefits.  My next post will walk you through the process of creating a
custom assembly and using it in Reporting Services. 

A real quick plug for a new class I will be teaching this month.  Pragmatic
Works will start offering in January a new Reporting Services Masters class for
those of you that feel experienced with the basics of SSRS.  The Masters class
will assume you know all the basics of building reports and will focus on
advanced topics only.  Check out the class outline and register for the class
now here:

Rate this article:
No rating


Other posts by DevinKnight

Please login or register to post comments.