Currently (July 2013), the #1 most-voted-for Idea for Tableau is Dynamic Parameters. Here, I’ll show you a technique for using Tableau data blending to create a dynamic, data-driven “parameter”. We’re going to use a loosely coupled secondary data source to get the information associated with the “parameter” and return that information to the primary data source, where it can be used in further calculations. Some examples of where this can be useful:
- Choose one value to build a comparison to other values, such as finding the distance from a chosen origin city to a set of destination cities, or a market basket-type analysis where we want to compare one against others.
- Set the limits and input data to an algorithm that is then used to create other results, for example to get a starting set of data to use to build a projection, such as an executive retirement forecast model.
Read on for a description of the technique and demos of all three options!
Fellow Tableau Zen Master Andy Kriebel writes great tutorials, like this one on passing filters in a URL. I was using those instructions to build URLs to pass from one Tableau workbook to another and things were going swimmingly in trials until I got to my data, where I found not one, but two undocumented features of Tableau’s URL parameters.
Aliases in URL Parameters
When we set up a URL Action in Tableau and add fields to the action, if the field is a Tableau parameter or a discrete dimension that has an alias assigned, when generating the URL parameters Tableau will use the alias and not the original value. So, for example, if your field is an integer such as 201 with a string alias of MS4, Tableau will pass MS4 and not 201, like in the image above. If you have a mix of some aliases and some not, Tableau will use the aliases where they exist.
Tableau Parameters used in URL Parameters Affect Parameters in Target Worksheet
The documentation doesn’t explicitly state that Tableau can use a Tableau parameter in a URL Parameter, but we can. And one of the interesting effects is that if the target of the URL is another Tableau workbook and there is a Tableau parameter of the same name in that workbook, then Tableau will set the value of target’s parameter to the passed value. This is a useful feature for making parameters truly global. The one caveat is the issue above, if the parameter is using an alias then the alias is passed to the target, not the original value of the parameter.
There are a three ways I’ve come up with so far to deal with this:
- Stop using aliases and set up the parameter or field with the desired values.
- Set up the target to handle the aliases.
- Instead of using the parameter or discrete field with the alias as the parameter, use a calculated field that just has [myParameterOrField] as the formula so it will just have the value and not any alias.
I’m using #1. This is a bit of a letdown for me, in reading up on improving performance there are big gains to sticking with numbers and using aliases instead of strings, and having to add extra columns to the data in the case of #3 to avoid this seems to partially defeat the purpose. If you have others, let me know!
In a comment, Joe Mako used his pixel ruler to identify some changes to make the final dashboard tighter and more accurate, I’ve edited the instructions to include this.
A couple of days ago, the Andy Kriebel (follow his blog if you aren’t already) posted Dynamic axis selections with parameters in less than five minutes. This technique enables users to pick the measure they want to view. The super-short version of the instructions are: Continue reading