Wednesday, March 24, 2021

Creating Global Variables in Tableau

The feature described in this article applies in Tableau version 2020.1 and later. 

In Tableau, when designing charts, the value of a measure is subject to the context such as filters and dimensions. Sometimes we need to have values that are constant across the board. This value is constant for a given data set. When data set changes, the value changes accordingly. For example, the max date in data record timestamps. Global variables come to the rescue.

Global variables are defined out of context or regardless of context. The concept originates from general programming. We can use them anywhere we wish without concern about filters and dimensions in view (that's specifically the context of creating charts in Tableau). 

One of my favorite use of Global Variables is using them as reference, such as in reference lines.

Here is how to do it:

- Create a calculated field like [Total Sales] = {SUM(Sales)} which is the total sales in the entire data set.

- Create a parameter [Total Sales Param] that opens with the value of [Total Sales]. Make sure you select the corresponding data type such Integer, Date, String etc.

Then you can use [Total Sales Param] anywhere you wish, regardless of filters and dimensions.

More examples are as follows:

- {MAX(Date)} which is the latest timestamp in data records.

- {AVG({ FIXED [State]: SUM([Sales])})} which is average state sales

- {SUM(If State='California' THEN Sales END)} which is the total sales in California

You see that we need to create a LOD expression that generates a "single value" first. Then create a parameter that encapsulates it.

You can create any sophisticated LOD expressions if you need to. And you can create as many global variables as you wish.

In addition to being constant regardless of context, there could be advantage in performance enhancement in using global variables, because their values are pre-calculated instead of at the query time.

Enjoy Tableau. Leave comments if you have questions.

No comments:

Post a Comment