Navigation buttons can make a series of dashboards easier to use. The most common approach has been using a view that shows an image, shape, or text for the user to click to trigger an action that filters into another dashboard.
The main issue is that once a mark in the navigation view is selected (which triggers the action), then if the user goes back to the original page, then they have to first deselect the mark before they can trigger the action again.
Check out the issue here by navigating between the sheets a few times:
And now that you’re frustrated, consider some of the options:
- Use a hover action. This actually works nicely in some cases, but can be accidentally triggered all too easily.
- Use a Story. Another nice option in many cases. However, you are dealing with snapshots of dashboards and vizzes, so be aware that things like global filters and parameters won’t carry through from one story point to the next. Still, consider this option and apply it where it makes sense.
- Instruct the user to double click the navigation button. Since the first click selects and the next deselects, a double click will work… if the user is fast enough so the action doesn’t navigate before the second click. And I’m not too fond of telling the user to do something outside the normal use patterns.
- Give up. Don’t do this. Anything can be done in Tableau. There has to be a way. I just know it. And there is. Remember how the “Fire” button disappeared in the Star Trek Tableau game? There’s a clue in that behavior that we can exploit to get the navigation working the way we want.
NeverEnding Navigation! That’ll make anyone smile!
Use a Navigation Data Source
This is important, because we’ll want a data source that we can apply a global filter to and not mess up other vizzes. It’s also good practice to use separate data source(s) for things like navigation buttons, information and help buttons, and the like because they can be kept small to avoid a performance hit (I learned that the hard way when working with a hundreds of millions of rows data set and I used it as the source to create a simple help button viz).
Here, we’ll just use a source with a single column (ID) with rows 1 to 100. We could get away with less rows (as few as 2), but the fewer the rows, the higher the chances that we’ll end up hitting a previously selected value that will frustrate the user.
The only other thing we’ll do is create a calculated field to increment the ID until we hit 100 then we’ll reset back to 1:
If Tableau categorizes the calculation as a measure, re-categorize it as a dimension. This is necessary because we’re going to use it for an action filter and Tableau requires dimensions for action filters. (Thank you Jason Scarlett for pointing out this clarification in the comments below!)
It’ll depend a little on your navigation scheme. Here, I’m keeping it simple with a view for forward and another for backward navigation.
I just put the calculated field Increment ID on the Detail of the Marks Card and set the mark to Shape (right arrow). The back view is identical except that I used a back arrow shape. I won’t worry about the fact that I’m getting a mark for each value of Increment ID. We’re going to use actions to filter, so I’ll let the action filter take care of everything.
Adding Navigation to the Dashboards
So, the first I thing I do is add the views to each dashboard. You’ll once again notice the multiple marks for forward and backward. That’ll get cleared up in a step or two:
Once I get the views added to each dashboard, I’ll setup the action. From the Dashboard > Actions menu, I’ll add a Forward action and a Backward action on each applicable dashboard.
Here’s the setup for the action:
- It will be on the selection of the button from one dashboard as the source and the next (or previous) as the target.
- When the action is cleared, I will Leave the Filter
- I specifically map Selected Fields – and this is one of the secrets: map Increment ID to ID. Why? Because that will mean that each action will filter the navigation to the next ID – meaning that a new, deselected mark will be drawn. So when I click the forward button on one dashboard I’ll navigate to the next with forward and backward buttons for ID 2 which in turn will trigger actions to filter the next buttons for ID 3 and so on, until we reset upon reaching 100.
Once you have the action set up for one dashboard, go ahead and trigger it.
And now, the final two Tableau secrets:
First, find the drop down caret on one of the navigation button views (upper right of the border around the dashboard object) and use it to show a quick filter for the Action (ID).
Then, once you have that quick filter, use the drop down caret on it to apply the action filter to All Using This Data Source. So, this one action will be universal to all sheets using the data source – including the one that triggered the action!
Now, just go through the remaining dashboards and setup the actions for all the buttons. And you are done!
Here’s an example (and it uses the old Hide Control Filters in a Secret Place trick so you can see how the filter is working in Desktop if you download the workbook.)
Yes, it’s a bit more setup that the traditional way of adding navigation buttons – but you’ve just made life a whole lot better for your users.