So let me quickly reference Dan's blog post and list off the main categories of where performance gains can be found:
- Using extracts over live connections - As obvious as it is, this was something I didn't realize until I'd been using Tableau for over a year. I didn't come from a data background, so I didn't think much about the difference until I was shown the light. Now, I almost always extract - and you should too.
- Add data source filters - this limits the amount of data Tableau has to sift through in order to create your visualization. If you're going to focus on one area of the business, rendering the rest of your data set superfluous, then just exclude Tableau from bringing it in in the first place. It will decrease the size of your data and reduce the number of dimensions on the filters shelf, which is also a good thing.
- Use aggregated results - I know, I know - you should let Tableau use it's fast data engine to roll up the most granular level of data so that you have the most flexibility in exploring your data. You know what I say to that? Poppycock! You know what's faster than the Tableau's data engine? Not using the data engine - that's what. Here's something to keep in mind - You'll see better performance taking 10 different extracts of different rolled up aggregations of the same 10M+ row data set, than you would taking 1 extract of the granular 10M+ set of data. It's true basically every time.
- Floating your worksheets - This is a great debate. I've bought into this hook, line and sinker, but I know many (Tableau Zen Master Mark Jackson for one), who don't see the need to use garlic cloves to ward off tiled dashboards, as I do. Today we're going to camp out here and look a simple dashboard built in two different ways and see how they perform.
So the dashboards themselves are not super important, and frankly I wish I was looking at a larger data set, but we're looking at the 14,000 rows of Superstore data. Here's where the difference comes in: The first dashboard is made by dragging sheets into a tiled dashboard; the second is made bringing each of the four sheets in as floating sheets on the dashboard.
Basically everything else is the same. I clicked on the carrot of each sheet and select "Use as a Filter". I then went and found a magical little problem solving tool Tableau inserted in Version 8.0 called the Performance Recorder (Help>>Settings and Performance>>Start Performance Recording):
Basically everything else is the same. I clicked on the carrot of each sheet and select "Use as a Filter". I then went and found a magical little problem solving tool Tableau inserted in Version 8.0 called the Performance Recorder (Help>>Settings and Performance>>Start Performance Recording):
Next I selected and unselected one element in each sheet which then pushed that filter to the other sheets. I went in the same order (Top left, bottom left, bottom right, top right) and select a different element each time so that I knew Tableau wouldn't cache the visualization. I did this twice, once for each of the types of dashboards. After completing the four selections, I went back up and through the menu, and stopped the Performance Recorder. After doing that, Tableau immediately opens a workbook and shows you every little thing it thought about to render your visualization (it's really helpful for problem dashboards).
In summary here are the results:
Tiled Dashboard: 1.249 sec
Floating Dashboard: 1.038 sec (17% decrease)
Not earth shattering, but certainly meaningful. Remember, this is a small data set, and we're only looking at four sheets.
Below are the Performance recording workbooks:
And here's the workbook that I created that has both the tiled and floating example (same as above):
So with that we come to this conclusion - floating is actually better (as we've often heard), but I wouldn't call it a silver bullet. The best practice is to implement as many of the steps that Dan discusses as possible, and you should be creating some highly performant dashboards.
Hope everyone enjoyed! We'll see you back here one more time tomorrow before I ride off into the sunset.
Nelson