Power BI is strongest for its built-in Power Query ETL and powerful Vertipaq tabular engine, but it’s not renowned as the crispest visualization tool on the commercial BI scene (most people would agree that’s Tableau). In particular, its built-in first-party visuals are fairly limited and have suboptimal defaults.
So many people hear about “custom visuals” and want to have something bespoke built for them, without understanding what that entails. Spoiler alert: fully fledged “custom visuals” built with the official SDK are a nontrivial endeavor that require a specific skillset that’s completely different from being a “BI developer”.
However, fear not, there’s actually a continuum of options that span a wide range in complexity and cost. Let’s review them in increasing order of commitment.
1. Make the Most of Existing Visuals
In my experience talking with my Power BI consulting clients over the past 5 years, many people jump to the conclusion that they need a “custom visual” after only scratching the surface of what’s available off the shelf. I’m the first to criticize the built-in visuals as they have plenty of true shortcomings, but there are still a bunch of formatting details you can play with to meet your needs.
Once I talked with a prospect – whom I later turned into a client – who insisted they needed a custom slicer. I warn them that it’s going to cost them dearly and dig into the underlying reason. It turns out that they didn’t know the default radio button behavior could be turned into a more traditional drop-down list with the click of a button. They laughed when I demonstrated it and we were able to move on to more substantial issues!
2. Review the Available Third-Party Visuals
I have used many third-party visuals over the years, but yet even I don’t know all the available options. New stuff gets published all the time, some older ones get abandoned and retired, and some lackluster ones get updated to something actually useful.
AppSource is where you’ll want to start your quest, and if you’re not too constrained by administrative constraints, there are also visuals published on GitHub and elsewhere that didn’t go through the constraining and long official process with Microsoft. In more popular categories such as gauges, calendars, or GANTT timelines, you’ll typically have at least two or three options. And for advanced mapping, Icon Map and Mapbox are much better options than any of the built-in maps (including Azure Maps and ArcGIS).
Bear in mind that quality, technical support, and the available of more advanced features such as report tooltips are all over the place. Many of these visuals are labors of love or mere experiments, but there are some real gems in there as well, and more advanced commercial products that follow the freemium model. It doesn’t help that Microsoft is generally speaking terrible with their marketplaces, with weak review curation and limited commerce integration. The Teams marketplace goes in the right direction by lowering the friction to buy, license, and install third party products within the first-party platform, I hope Power BI follows suit.
So go ahead, explore and experiment! To do so efficiently, make sure to download sample PBIX files and read the instructions as some visuals have their own particular way to handle data mapping and formatting options.
3. Use Visual Tricks with Animated Gifs, SVGs, Or CSS
Sometimes you can hack your way to meeting a visual requirement with some tricks that fall short of developing an actual new visual. they include:
- Animated GIFs. Believe it or not, I once created a series of 8-Ball animations with dynamic labels (via PowerPoint and the free ScreenToGif) for a client that was adamant this would make the report sexier and increase engagement.
- SVG images
- Dynamic CSS via the HTML Viewer visual
- Combining the above with clever (but let’s face it, tedious) use of bookmarks
You may also resort to superimposing two visuals and playing with transparency and interaction settings. I’ve felt a bit dirty in the rare occasions I had to do this, but it’s an option if all else fails and you don’t have the time/money budget for the next batch of options. It can also be useful to group visuals.
4. No-Code Diagrams with Visio
This is a niche option as it’s limited to the type of geometric shapes typically used in flowcharts or basic infographics, but since a basic web version of Visio comes with some O365 licenses, authoring is accessible to many people.
5. No-Code PowerPoint Builder with PureViz Infographic
This freemium certified visual lets you create multi-layer infographics in PowerPoint then export them to a set of SVGs that you can map data to. I really like that formatting can be driven by data. This probably will be how a thousand custom gauges of sometimes dubious taste will be built! In the same vein there’s also Infographics Designer. Not my cup of tea, but to each their own.
6. No-Code Customizable Visuals with Charticulator, SandDance, And Others
Charticulator is an interesting animal since it’s not a visual per se, but rather a visual builder following the grammar of graphics approach. It’s an offshoot of Microsoft Research that eventually made it into AppSource, but it’s now in maintenance mode with no funding from MS Research nor the Power BI team. There’s now an open-source version too, we’ll see whether it gets any traction. I’ve played with Charticulator on and off over the years, but I wanted to like it more than I actually do. Its authoring UI is not the most intuitive and you need to invest time to really get the gist of it to build more than basic charts.
A lesser-known powerful chart generator from Microsoft Research is called SandDance, first launched in 2016 then relaunched as SandDance 2019. It’s less versatile than Charticulator and is more of a data explorer, but with its support for 500K data points and its use of the performant Deck.gl library, it has a unique niche in the Power BI ecosystem. I don’t think it’s seeing a lot of production use in its present state, but it’s an interesting sign of what could be if the Power BI product team took the visualization layer more seriously. Unlike most Power BI visuals, its approach is to display all datapoints as opposed to aggregates, like Omnisci does.
Other no-code grammar-of-graphics options added since I first posted this entry:
7. Low-Code Visuals with Deneb
Deneb is a very promising custom visual that lets you “use the declarative JSON syntax of the Vega or Vega-Lite languages to create their own data visualizations.”
Vega is “a declarative format for creating, saving, and sharing visualization designs. With Vega, visualizations are described in JSON, and generate interactive views using either HTML5 Canvas or SVG.” Meanwhile:
“Compared to Vega, Vega-Lite provides a more concise and convenient form to author common visualizations. As Vega-Lite can compile its specifications to Vega specifications, users may use Vega-Lite as the primary visualization tool and, if needed, transition to use the lower-level Vega for advanced use cases.”Vega Lite website
I’m filing this one under “low code” because editing its declarative JSON is more akin to editing a configuration file than developing full-fledged code logic with loops, conditions, and whatnot. It’s not as intimidating to non-developers as dealing with R or Python, even if all you want to do is copy/paste code provided by others.
Like Charticulator it’s a grammar of graphics, but there’s much more documented precedent and a much bigger community around Vega (Lite). Indeed, to further make the case for a “low code” classification, there are hundreds of Vega and Vega Lite examples out there that you can just copy and paste. The Vega Viewer extension for Visual Studio Code makes it very easy to load such code samples and tweak your definition to your liking.
Again like with Charticulator, you can save and re-use templates. To whet your appetite, aside from the aforementioned Vega resources, Kerry Kolosko has published several great examples using Deneb. You’ll see that faceted charts (aka trellis) is one area where Deneb can push things much further than Power BI’s belated and so far under-powered small multiples.
Deneb is more self-contained than using R and Python since the latter have dependencies, and it should render faster. Unlike R/Python charts, it can support cross-filtering back to the rest of the Power BI canvas – provided you don’t transform data within your Vega spec – as well as report tooltips. I have started experimenting with this and am adding it to my consulting toolbox as I believe it hits a sweet spot in terms of what you can accomplish while keeping time spent to a reasonable amount.
Deneb is under active development by Daniel Marsh-Patrick and just hit AppSource as of the start of 2022. Daniel is very helpful and approachable and also knows Charticulator and the custom visual SDK inside out, so you’re in good hands using his software!
Even though no actual “code” is written with Charticulator or Deneb, and you can produce something great with a few hours of customization, bear in mind that it’s still a moving part that you’ll need to “own”, that is, support and maintain over the long run.
To be thorough, I should mention that there is also a D3.js visual for Power BI but it’s not been actively maintained and is stuck to v3.5.17 while D3 is already in versions 7.x as of early 2022, so I don’t consider it a viable option at this point. It’s a shame as this was an intriguing approach, as after all D3 is a core component of Power BI itself. On the other hand, Vega, and even more so Vega Lite, offer higher levels of abstraction than D3 and thus are probably a better fit for Power BI’s core audience of non-developers.
8. Mid-Code Visuals with R or Python
While you can feed Deneb JSON specifications to “program” its behavior, with R and Python we’re now entering the realm of bona fide development. That said, between the huge number of available libraries and open source code, you could to some extent “develop” in the “Stack Overflow way” which involves a good amount of copy and paste.
There’s a place for these tools in the Power BI visualization toolkit, especially if you’re already proficient in these languages or have experience in one of their libraries such as Altair. but then Altair is built on top of Vega, so you might as well use Deneb. You could do your Vega Lite authoring with Altair then past the resulting JSON into Deneb, as Sandeep Pawar does in this entry.
However in my opinion R/Python visuals are somewhat second-grade citizens as they’re not interactive (i.e. no tooltips, no cross-filtering etc.), they’re just rendered images. You also have to manage dependencies on your desktop for authoring, then again in the service as only some libraries are supported. It might be more overhead than you’re willing to endure.
I think Microsoft felt they had to check that box early in the product’s lifecycle so that it would be taken more seriously, especially with the data science fad at the time, then moved on without much further thought.
9. “Pro Code” Visuals with TypeScript and the Visual SDK
Is there a place for them if you’re not a software shop yourself? Definitely, but only to serve very specific needs. The development and maintenance budget this will entail very much puts them in the “if everything else fails” bucket.
10. Other Options That Reinvent Power BI for Serious Enterprise Reporting
I’ll conclude by mentioning products that approach visualization in Power BI by almost replacing it altogether, with a big focus on intricate financial tables and variance charts that are otherwise almost impossible, or at least very time consuming, to produce. They’re addressing pretty specific use cases like Financial Planning and Analysis (FP&A), they’re not cheap – or at least they’re not free – there’s a case for lower Total Cost of Ownership with these – and they have their own learning curves, but if you need to produce advanced reporting for the C Suite, they are well worth a look and deserve a separate blog post.
Inforiver and Zebra BI can automatically generate patterns for you such as categorized Top N + “Others” that are a hassle to produce with arcane DAX code in vanilla Power BI. This gets fairly close to Marco Russo’s proposal for visual calculations.