I Wish #Tableau Had These Two Capabilities


Just because something is trendy, don’t believe that it is good…Follow your own instincts. Donald Knuth, May 2, 2012.

Over the past seven years, I have used Tableau Desktop to investigate over 1,000 different data sets. The data I have used is from many different businesses and industries. I have been very lucky to be in a position where I have had the privilege to use Tableau on this much diverse information.

With countless hours spent working with Tableau Desktop and Tableau Public on a daily basis, I have been able to really delve into the capabilities of the software. I have learned to be a problem solver within the context of calculated fields, parameters and available functions such as filters, sets, groups and hierarchies. I have learned to maximize what I can accomplish in Tableau given the tools we have to work with.

Prior to this experience, I spent 20 years as a computational scientist, performing numerical simulations of physical systems and writing custom computer codes to support environmental projects. Data, data, and more data has been the constant theme in my career.

I’ve had to work with structured data sets that have grown from hundreds of lines, to millions of lines, and now commonly into the tens of millions of lines. I’ve worked with many different types of databases and computer architectures, from PC’s to massively parallel supercomputers. I have written serial and parallel computer codes as well as developing complex algorithms for many different computational challenges.

Throughout time I’ve had to adapt, to learn new techniques for manipulating, managing and rapidly analyzing this much information. For these reasons, I know what great software products can accomplish and I also recognize when things need to be changed to accomplish even more than originally thought possible. If I were a part of the team that directs the future of Tableau Desktop software, I would insist that the following two items be put into development.

If you like this article and would like to see more of what I write, please subscribe to my blog by taking 5 seconds to enter your email address below. It is free and it motivates me to continue writing, so thanks!

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Preamble to My Wish List

I now see great changes on the horizon on how we will use Tableau Online to develop and share information with clients. I realize that the day will come when I routinely create interactive dashboards of information and share it with clients over the internet.

The days of printed reports may be numbered for some people and clients. However, for some businesses, printed reports will always be necessary. Not every business will accept having their proprietary data housed on a server that they do not control. For these reasons, printed output from Tableau is not likely to go away and that is the reason I hope Tableau installs my wish list item number 1.

I have a dream that one day Tableau will be used to complete almost everything that I do on my job. It is already capable of producing much of what I need it to do (at least 90%). To achieve, the remaining items, I need Tableau to be more configurable through a programming or scripting language.

I want to be able to configure and control any kind of Tableau output that I can imagine using this programming language. The current Tableau API is a step in the right direction, but I don’t think it is comprehensive enough.

I think the upcoming R support in Tableau version 8.1 is also a step in the right direction for enhanced statistical processing. However, what I want to be able to do requires the ability to write loops, perform iterations, apply logic, create objects and functions, and perform numerical calculations all within the programming language provided.

I want to write stand-alone programs that use Tableau as the graphical post-processing engine. I want complete access to the power of Tableau. This is a big wish list, but with the intellectual power resident at Tableau Software, I know it can be done.

Wish List Item Number 1

In a recent blog post, I wrote about how using the pages shelf to produce a large number of charts has a particular vertical axis scaling deficiency. In another blog post, I wrote about how there are deficiencies in how Tableau trend models are documented and how you cannot automatically label the trend lines.

Both of these insights are very specific and were generated from many examples of trying to perform work that was beyond the original design framework of Tableau. These high-volume processing situations don’t allow the production of publication quality output without a lot of extra manual work.

What I have realized is that Tableau was not really designed for some of these types of high-volume processing situations.The idea of creating multi-hundred page pdf files was probably not the intent of Tableau Desktop – it just happens to be something that can be accomplished.

For me, this capability is awesome and enables me to gain insights into systems that I would not normally be able to do. The speed at which Tableau can process data and create output cuts my analysis time down so much that it allows me to see things that otherwise would have been missed. After working in Excel for years to accomplish these types of tasks, using Tableau on a daily basis is a wonderful experience.

When you get deep into a project that has high-volume processing demands, however, there is one glaring weakness of Tableau. Tableau is simply missing the capability of generating, configuring and saving complete reports.

What does exactly does this mean? It means that every time you go to create output, you have to tell Tableau what you want to create. You have to select the worksheets, you have to tell it where to put them, and you cannot create a basic report cover page. Let’s use an example to see why this is a glaring omission.

Imagine that you have 30 worksheets/dashboards in a workbook that brings information together from 6 different groups in a big company. There are 5 of the worksheets that get sent to each of the 6 different groups on a monthly or eventually a quarterly basis.

Each time you create a new report, you have to manually pick the 5 worksheets to be included in the report for each of the 6 groups. You have to create the pdfs and be sure to have the proper settings selected for all the worksheets you are going to use in each report. You have to do this operation 6 times to generate all the reports you need.

Now, imagine that three months has elapsed since you last had to do this and you cannot remember which group gets which worksheets/dashboards, because there is no structure in Tableau to remind you of how you did this last time. This is a real-world situation and it is encountered quite often if you use Tableau as much as I use it for the diversity of clients that I have.

The Tableau Report Generator

What is needed is a way to configure and save report structures within a Tableau workbook. I think of this concept as a Tableau Report Generator.

There can be multiple reports configured in one workbook. In the example above, there can be 6 reports that can be separately designed and maintained. Detailed pages settings, font sections, page orientations, cover pages, and distributions lists can be set for each report. Page number, headers, footers, and other features can be set.

Any or all of these reports can also get generated at one time. You simply hit the “generate reports” button after your data has been updated and the reports are now completed. These printed reports can continue to be pdf files because these are easy to distribute to clients.

Theoretically, this report generator could be automated to produce output at any given time interval. If these charts contain daily actionable business intelligence, you could set-up the report generator to (1) update the data, (2) create the reports, and (3) ftp the results to the project team before the day begins!

Having a report generator with some basic automation tools would make Tableau a much more formidable and indispensable tool for business managers. Any new automation controls should also allow us to automatically update published workbooks, when new data becomes available. This represents part 1 of my Tableau future.

Wish List Item Number 2

I hope that one day Tableau will release a programming or scripting language that allows us to access all aspects of the Tableau workspace and all the controls of the graphical objects it produces.What I am talking about can be called a programming language, a scripting language, a macro language, or whatever you want to call it.

This could be a new language developed by Tableau in their own parlance, or it could be developed using existing languages such as java, javascript, php, c, c++, c#, python, ruby, visual basic, etc. This capability would allow Tableau users to write user-defined functions, create dynamic parameters, create custom sets, groups, and hierarchies in code, and to create custom applications such as a generalized control-charting package that doesn’t require all the work so cleverly detailed by one of the best Tableau Zen Masters, Mr Jonathan Drummey.

We need an equivalent to what TecPlot, Inc. provides in its Tecplot 360 macro language. I used this language for years to build custom 3D/4D animations as shown in Figure 1 and to produce custom graphical output from numerical models as shown in Figure 2.


Figure 2 – 4D groundwater transport model animation using Tecplot (circa 2003)

Figure 3 is example macro code for reading data and Figure 4 is the macro code for making a graphic like what was shown in Figure 2. If I had this type of capability in Tableau, I would simply write a user-defined macro or program to solve problems that I currently cannot accomplish, such as labeling the r-squared values on Tableau trend lines, or setting vertical axis limits when creating charts using the pages shelf.


Figure 3 – Tecplot macro for reading data in preparation for creating animations. There are a lot of controls provided to Tecplot users in this macro language.


Figure 4 – Tecplot macro for creating animations like shown in Figure 2.

With a powerful scripting/programming language, Tableau could be configured to visualize a wider variety of data than it currently is designed to accommodate. Since I come from a scientific background with years of experience in writing computer codes for scientifically-based graphical engines, I see how close Tableau is to being able to expand its line of business into the scientific graphics arena.

I don’t think that this can happen without providing more user controls through a programming language, however, because scientists like to customize their charts and figures.There has to be tools available to add annotations, footnotes, etc. If Latex integration were added to Tableau to handle the typesetting needs, this dream could become reality.

Final Thoughts

I know that it is unlikely that either of these wish list items will ever be built for Tableau, unless I do them myself. After years of using the software, I realized that these are the two major deficiencies for me. I think that the Tableau API might be sufficient for me to build my own Tableau Report Generator, so I am going to spend some time seeing what is possible using the API. The programming language, however, will require work that I cannot complete without being connected to or being a part of a Tableau development team.

Update On 10/29/13

It has been about three weeks since I wrote this blog originally. I just found out about a new technology out of Norway that is very impressive. The website is www.highcharts.com. They use HTML 5 for storing plot parameters that can easily be changed, manipulated, customized, etc. This is what I am talking about with respect to having an easily configurable/customizable chart settings in Tableau. Take a look at Figure 5 below to see how they store the plot settings. You should also go a step further and look at their demo page. You won’t be disappointed.

Figure 5 - Highcharts plot settings stored in HTML 5 format. Awesome.

Figure 5 – Highcharts plot settings stored in HTML 5 format. Awesome.

Update Over Three Years Later  on 8/10/16

Well, a lot can happen in three years, especially when Alteryx is involved. Alteryx is everything I hoped for in this article, plus a lot more. You can now read about 100 additional articles I have written that show how Tableau and Alteryx can be used together to do the things I have wanted to do in Tableau. Alteryx does have a macro language, and I just happened to write an article about it a few days ago.

Update Over Three Years Later  on 11/10/16

Well, Tableau has now delivered Python capabilities within Tableau with the development of TabPy.
Click here to read about how you can use this new capability. I guess I should be careful what I wish for since Tableau will eventually deliver it.

2 thoughts on “I Wish #Tableau Had These Two Capabilities

  1. Hi Kenneth, We read your blog and we feel interested about it, because we are evaluating Tableau and we are concerned about the performance of Tableau with High volume data. I mean, It´s ok to summarise and plot dashboards but … working in high details … how Tableau is designed to work on? it is my concern.

    Do you feel that the last version of Tableau exceed the expectation on your wish list?

    • Hi Diego,

      The latest version of Tableau (8.2) has solved a lot of problems for me. My last two posts (working with csv files > 4Gb, part 1 and 2) discuss how this update has now allowed me to things that were not previously possible. My wish list has not been met yet, but Tableau continues to improve their software all the time. At this time, it does most of what I need to do and I wouldn’t hesitate to try the software if I were you. To me, it is the best software available for business analytics and it offers for more flexibility in handling and manipulating that than most people think.

      Thanks for writing,


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 )

Connecting to %s