What is the New D3.js Visualization Engine for Power BI?

The other day someone asked me about the Silverlight dependency as it relates to Power BI. I got to talking about that and the new visualization engine underlying Power BI Desktop, and here we are with a blog post. This discussion is as of early August 2015.

New Capabilities for Power BI Desktop

The latest release of Power BI Desktop includes a new visualization engine based on D3, which stands for Data-Driven Documents

D3.js is a JavaScript library of objects to produce sophisticated, interactive, dynamic data visualizations using modern web-based technologies. Translated...this means that D3 is the connection point between a user interaction and the data underneath, allowing a web page to dynamically change rather than remain static. As the D3.org website states:

"D3 helps you bring data to life using HTML, SVG, and CSS."

It's based on open standards which will be meaningful for customized Power BI visualizations (discussed in the next section). D3 has a ton of community support, documentation, and examples to help getting started with the framework. D3 is very flexible and customizable, though the tradeoff is a learning curve.

Ability to Create Custom Power BI Visuals

Microsoft has released an open source project on GitHub. This is the first step towards developers being able to create customized visuals for Power BI dashboards and reports. A lot of customers, partners, and ISVs are looking forward to this extensibility. This means that we'll no longer be limited to whatever visualizations are baked into Power BI Desktop. I'm sure we'll see some really innovative and interesting visuals. Oh, I'm certain we'll see some ugly ones too.

At this point (Aug 2015), Microsoft has released the source code and announced custom visuals ability is coming. There's no indication yet as to a date when Power BI custom visuals will be fully functional, but it probably won't be long since the Power BI team is moving at an amazing pace.

Getting Started With Custom Visuals for Power BI

There's a *lot* of tutorials available online for learning D3. Most of the educational materials say that it's helpful to also be familiar with the following:

  • HTML. Structural elements for web pages. Power BI is using HTML5.
  • CSS. Styling of web pages. Power BI is using CSS3.
  • Javascript. An object-oriented programming language that allows display to change based on user interactions. This is code inside the HTML that will work with D3; everything ends up getting compiled down to Javascript.
  • SVG, Web GL, Canvas, etcOptional - graphics formats which support functionality such as interactivity and animation. Power BI is flexible with which graphical API you prefer to use, but their open source project is all D3.

Regarding how these components fit together, here's a helpful quote from dashingd3js.com:

"D3.js helps you attach your data to DOM (Document Object Model) elements. Then you can use CSS3, HTML, and/or SVG showcase this data. Finally, you can make the data interactive through the use of D3.js data-driven transformations and transitions."

I would also add that at least some basic knowledge of good data visualization practices is also necessary. Effective visuals are extremely important for communicating information clearly and concisely. Just because it's pretty doesn't mean it's effective, right?

Power BI Components Using Silverlight 

So, given the new D3.js news, what does that mean for the elements that use Silverlight? Well, that's a good question. I don't believe Microsoft has announced timing for when Silverlight will be phased out. At this point, the following Power BI components still rely upon Silverlight:

  • Power View for Excel
  • Power View for SharePoint
  • Power Pivot Gallery in SharePoint

Finding More Information

D3.js.org site

D3.js repository on GitHub

Power BI Visuals on GitHub  <--includes documentation and prerequisites

List of interesting libraries, plugins and utilities

List of D3 tutorials, techniques, blogs, books, courses, and videos