Extensions for Tableau

As you probably already know if you have followed some of my content over the past couple of years, I am pretty excited about the release of the Extensions API for Tableau. This blog is an overdue follow up from #TC18, where Tamás Földi and I presented on Extensions, demoing a number of extensions covering both advanced visualization types and capabilities (like write back). This post provides some of my own perspectives on Extensions in Tableau as well as the content presented during TC18, along with some new stuff.

First, my thoughts on extensions…

The Good (really good!):

  • With the implementation of the Extensions API, assuming that it is kept up and continuously improved upon by Tableau, we can now pretty much allow for anything to be done within Tableau. Whether this be to make advanced visualizations simpler, or extend the foundation that Tableau provides. The only limit here is your imagination (although I do have to confess to saying the same thing about building visuals directly within Tableau as well).

  • A lot of blockers we run into within Tableau, are already solved. Extensions allow us to leverage solutions out there which may not be Tableau specific. The work I demonstrated at TC18 shows this, taking advantage of D3 and Semiotic to allow for visualization types which previously required a lot of hacking and trickery within Tableau.

  • The Extensions API feels very “familiar” as it is pretty close to the JavaScript API, thus the learning curve is not as steep if you have used the JavaScript API previously.

  • We have BARELY scratched the surface of what is possible, I am looking forward to what the community comes up with over the next year (see my first point below though).

The Bad:

  • Tableau Public does not currently support Extensions (even though it is on >= 2018.2 version). This is a HUGE blocker for community driven Extension development, iterations and learning. As a comparison, countless demonstrations were done via Tableau Public for the JavaScript API, I myself leveraged these to first learn the JavaScript API and then give back by providing some write ups and demonstrations of my own via Tableau Public. This also allowed Tamás and I do to more experimental work with the API as well, and to share this work publicly. That could all be done with only Tableau Public, no desktop license required. Extensions on Tableau Public will enable exponential jumps in capabilities implemented via open source, community driven development and improvements. This needs to be addressed to enable Extension development and invaluable feedback iterations for developers.

  • All developers (including me) are currently building extensions with their own look and feel. This can and will ultimately lead to a disjointed feeling for end users who may leverage extensions from several different developers on a single Dashboard.

  • Tableau’s extension gallery does not provide a way for developers to monetize extensions, this again leads to developers and vendors coming up with their own solutions for payment. The result of this is that it will be more difficult to leverage this content within your company as getting approval to pay a bunch of different vendors for yearly extension subscriptions will likely be a challenge.

  • It is up to YOU (and your company) to do your own due diligence on any extension(s) you are looking to bring into your environment. You should treat extensions the same as any other application you would introduce into your environment, and assess them for security vulnerabilities, etc. This one is not on Tableau, it is on you to be responsible when evaluating and leveraging extensions.

So… Are they worth it? DEFINITELY! But proceed with caution as one misstep can flip this equation on you in a heartbeat, with significant consequences.

Time to get off my soapbox and show you some content. Here are four extensions I have been able to develop to date. All of these were built in collaboration with Tamás Földi and Abraham Szilagyi of StarSchema, ltd. They all leverage D3 and three of the four also leverage Semiotic by Elijah Meeks, which, via D3, handles pretty much all of the hard work, I simply leverage and extend these technologies into Tableau. Below I give you a one liner about each of the four extensions built as of this post and a small GIF showing some one piece of their functionality. Lastly, but definitely not least, here is my Github repo that has all four trex files for you to use on your own (same one shared at TC18). Note that these hit Github pages sites on my Github as well (so they will not work in situations where you cannot call out to Github from Tableau Desktop and/or Server.


Map Projections (initial version released):

There are examples of using different map projections other than Mercator in Tableau. They involve custom shape files and/or hackery/trickery. Why not make this easier?

 

Hierarchy Charts (initial version released):

The Tableau community, including me, have spent countless hours building and then sharing techniques on how to build these types of charts within Tableau. The approaches often include the need for pre-processing of data and advanced hacking. Why not make this easier?

Network Charts (under development):

I have seen a number of network diagrams in Tableau, most of these require extensive pre-processing of data in things like R or NodeXL. Charts like the Chord diagram have been built completely in Tableau, but contain very advanced and heavy computations. Why not make this easier?

Swarm with Summary (under development):

There is work out there around building things like bee swarm and violin plots in Tableau. Some of the implementations require pre-processing, like this violin plot example by Ben Moss. Also, why not allow for more visual aggregations beyond Tableau’s built-in Box Plot, and make this easier while we are at it?

I hope you find this overview useful and if you have comments and/or features you want to see in the above extensions leave a comment below or ping me on Twitter.

Small Multiple Flows in Tableau

Small Multiple Flows in Tableau

Small Multiple Flows live up to their name, combining small multiples and flow elements in a single viz. This allows us to combine a set of events, providing an intense data visualization about these events, while also connecting one event to the next via the flow element. This technique does need a viewer to invest some time into understanding the various pieces of the visual. There is a lot going on, thus it will definitely require effort and a little time on the viewer’s part (and why I put detailed legends on both visualizations).

Read More

Layering data for custom Tableau visualizations

Layering data for custom Tableau visualizations

This post outlines a method that has been shared before in the Tableau community. I was initially introduced to it by Noah Salvaterra’s Chord Diagram a while back. 

I am going to walk you through a layering technique, which allows use, and re-use of a single axis in Tableau. This can be done at different levels of granularity, different fields entirely or completely synchronized throughout, thus it can adapt pretty well to various use cases. Need to create a dual-axis in a single axis? This technique can enable this for us (as long as you need the same mark type that is). 

So What? With this technique you can build more detailed and very customized visualizations directly within Tableau (without the need for extensive data prep).

Read More

More options for your Tableau Sankey Diagram

More options for your Tableau Sankey Diagram

A quick look around Tableau Public can often lead you to a Sankey diagram at some point. I can only speak from my experience, but the majority of these visuals (including mine thus far) leverage the sigmoid function. This technique has been posted about and presented on (including by me) quite a few times across the Tableau community, I first found it on Jeff Shaffer’s Blog and this has of course morphed many times and ways, for example, some of the great work done by Olivier Catherin to build a Sankey leveraging polygons (also found on Jeff’s Blog).

Not so recently, Tableau came out with some improved dashboard spacing capabilities in version 10.4. I had been awaiting this feature for a while and could not wait to update some of my Tableau Public work in order to take advantage of it (granted it took me a while to do so). Now we can get rid of those annoying spaces which have been forced into our (tiled) visuals to date.

Read More

Talk to your Tableau Dashboard

Talk to your Tableau Dashboard

Shouldn't an author be able to explain their Tableau Dashboard to every person who views it? Of course they should! This capability should be available to authors and accessible to their end users, regardless of the end user's abilities. We should also make Tableau's awesome interactive capabilities as accessible as we can as web users have vastly diverse abilities.

We noodled around some ideas of how we could enable the Tabitha project for those who did not want to write any code. This blog is the (hopefully) first step toward that effort…

Read More

Easy as Pie React + D3 Chord Diagrams in Tableau

Easy as Pie React + D3 Chord Diagrams in Tableau

… We are going to be integrating with and leveraging Nivo, which is self described by Raphaël Benitte (it's creator) as “supercharged React components to easily build dataviz apps, it's built on top of d3.” Nivo is one of many react component libraries that work on top of D3, each are different and bring their own features and focus to their projects. Here are a few more worth checking out (in no particular order):

I am going to assume you know how to leverage create-react-app and npm install to get up and running locally and import all the component libraries you will need. If you have not gone through this install process yet Chris’ blog walks you through some key steps you will need to complete, and Google is of course your best friend here. Here are the commands to run:

  • Create-react-app nivo_int

  • Cd nivo_int

  • Npm install tableau-api

  • Npm install nivo

That is it, if you run npm start at this point, your project will be bundled and rendered locally on your machine... Magic!

Read More

Visualizing MLB pitch location data with Alteryx + Tableau

Visualizing MLB pitch location data with Alteryx + Tableau

This project started with some really interesting reading on the work done by brooks baseball (Dan Brooks and several others) and fastballs (by Mike Fast) sites. There are references to these sites throughout this post. 

Data gathering & preparation work

I used the Perl script from the fastballs - build a pitch db page to download the data from this MLBAM site. Then I leveraged Alteryx to parse the 2.47 million XML files (no, that is not a typo) over the 8 years I pulled data for. Here is a summary of files and their combined size by year.

Read More

Dataviz Fun for #Datakids

Dataviz Fun for #Datakids

As we all get ready for back to school (or are already back in school), whether it be Kindergarten or 8th grade its always fun to get vizzing and to get your kids involved!

Recently, the one and only Anya A’Hearn posted her inspiring quantified self project “Consumed”. My daughters are quite young, in the womb, 3 and almost 6. The thought I had was to have them build this type of viz with something they have way more of than they need. For us, an easy candidate for this was their (ridiculous) stuffed animal collection.

Since the kids are so young, having them document this in Excel and then create a Tableau viz wasn’t really going to happen (yet I made sure it did), so we embarked to create our dataviz on the floor of their room. First things first, we took all of the stuffed animals and tossed the into a one big pile…

Read More

Step lines and supported bars in Tableau

Step lines and supported bars in Tableau

Step Lines

I am a big fan of step lines (here is a good example from datasketch.es) so I was really excited to see that line type announced at last year’s Devs on Stage. While we wait for that feature to be provided directly within the product, we have two choices: (1) don’t use them, or (2) build them ourselves. Choice two is much more the DataBlick way, so I have tried to provide you with a few steps that you can follow to build this chart type yourself. You can also take a look at Tim Ngwena’s post here which details another method that you can look into for your use case.

Step lines are just lines at the end of the day. When I started looking into how to plot their points accordingly, the prep work reminded me quite a bit of the data prep needed for Jump Plot. We basically need to take our list of points and add an additional mark for each point, and potentially one at the origin (0,0) if that is desired for our viz (as it was in this case). I will be using step lines to help analyze the scoring to par across PGA tournaments this year.

Here is a small sample of the data we will be working with going forward, this is an aggregated data set, looking at the average score to par for pros on the PGA tour this year. We are going to plot “hole” on the x-axis and “Avg Score” on the y-axis to make our viz.

Read More

Weighted Medians for Weighted Data in Tableau

Weighted Medians for Weighted Data in Tableau

There are two ways weighted medians get talked about in Tableau: The first type of weighted median is the one we covered in our earlier Padawan Dojo: Weighted Averages and Weighted Medians post where we’re aggregating a data set and we want to make sure the median is computed over the underlying records. This post is about the second type of weighted median when the data itself has a weight, for example in survey data where each respondent has an assigned weight and we want to find the weighted median value of responses.

Read More

Padawan Dojo: Weighted Averages and Medians in Tableau

Padawan Dojo: Weighted Averages and Medians in Tableau

This is the first of two posts on weighted averages and medians, this one introduces a problem we've seen multiple times where reference lines aren't properly weighted. We need to use a different set of options in Tableau to get the desired results and are helped by an understanding of the different levels of detail that Tableau uses to aggregate measures.

Read More

To Animate or Not To Animate

To Animate or Not To Animate

Context

Previously I wrote this post around analyzing the predictions generated by 538 during March Madness each year. At the end of the post, I briefly discuss the possibility of telling the same story using animation in place of vertically scrolling through a static set of charts. I believe that, if used correctly, the ability to animate from one chart to the next can greatly assist the reader in understanding your analysis process. 

Read More

Building SVG Paths in Alteryx + Tableau

Building SVG Paths in Alteryx + Tableau

Background

Recently my family watched Disney’s Moana for the first time. We all really enjoyed the movie, especially my two young daughters. After the movie was over, my five-year-old noticed the spiral in the title on the movie case and asked me whether I could build it on the computer. I figured this was as good an opportunity as any to show her the power and possibilities of math. 

Read More

Analyzing 538's March Madness Win Probabilities with Alteryx and Tableau

Analyzing 538's March Madness Win Probabilities with Alteryx and Tableau

Story:

The concept for the story comes from visually comparing these two games (and several others like them). As I followed the early rounds of the 2017 tournament and tracked the games via 538’s predictions site, it seemed, more often then not that Men’s tournament games were closer then the Women’s.

Read More

Building towards d3.js “plugins” for Tableau

Building towards d3.js “plugins” for Tableau

This post is a follow up to my Vizception post from a few months back. We are still building off the technique described in detail within that effort. Here we will look at two additional implementations leveraging the capabilities available within d3.js (thank you Mike Bostock!).

The first of the two implementations looks at leveraging d3.js mapping projectionsTamas Foldi and I presented this example during a recent Think Data Thursday. Here we will leverage the referenced d3.js code and adapt it for use with our Tableau integration method. This will allow us to build choropleth maps in Tableau with access to the d3 projection library which provides just a few more options in addition to your standard Web Mercator (the Tableau default).

Read More

Telling a Story in Tableau

This short post is around trying to create an article like structure with in-line visualizations all within Tableau. Inspiration for this pulls from sites like 538 and polygraph as well as several authors from the Tableau Public community (like the one noted below, this recent VotD).

There have been many examples across the Tableau Public community showing the data storytelling capabilities of Tableau. These include leveraging additional JS libraries (via API/embed) like reveal.js (thank you Jeff Shaffer!), but others that caught my eye recently where examples of building out an entire story in a long form Tableau dashboard. Here is one example that Rob Radburn posted recently that got me thinking. Note: there are several others, this one by Rob is just a single recent example. 

I decided to see just how much work it is to do something like this, all within Tableau. The answer... not all that much. Like every tool, Tableau makes some hard things easy and some easy things hard. This type of visualization is a great example of the former and demonstrates the creativity that Tableau can empower it's Desktop users with. The viz story is just a simple collection of visualization sheets and text boxes, you can download the workbook to see how I went about laying out the story. The viz below is best viewed in landscape, hope you like it!