The Tableau Performance Checklist series is designed to help you streamline your dashboard performance and Tableau Server configuration. Each post expands upon one item listed in the master Tableau Performance Checklist.
Ask Tableau users what they love most about Tableau, and they’ll likely say it’s the ability to create stunning data visualizations quickly and easily. Tableau was designed with usability in mind, apparent in its approachable interface, yet behind that interface lies a powerful collection of components capable of cranking out complex data visualizations at lightning speed.
Of course, excited users inevitably find ways to bog things down. It’s easy to do. The good news is that we learned from these mistakes and took the time to jot down a few ways to maintain peak performance. So whether your Tableau Server is running slow or Tableau Workbooks seem sluggish, our Tableau Performance Checklist is here to help with performance-saving best practices. We hope it helps you as much as it’s helped us.
The Tableau Performance Checklist is divided into seven main categories. You’ll find those categories with their subsequent best practices in the master list below:
- Keep analysis simple. Work with a subset of your data. Extract a sample if needed.
- Bring in only the data needed for analysis. Consider adding a data source filter or using an extract. If using a join, minimize the number of joined tables.
- Use “Describe” to explore dimensions in new data sets without having to load them into a viz (keyboard shortcut CTRL+E).
- Remove unused columns (measures/dimensions) in order to minimize extract refresh time or custom SQL query time.
- Create a published TDS file for your business team to use rather than each analyst creating their own data source. This includes all metadata associated with dimensions, measures, calculated fields, hierarchies, sets, parameters and naming conventions.
- Use extracts wherever possible to accelerate performance. Hide unused and confidential fields. Roll up data granularity by pre-aggregating or filtering. Break hierarchies to only visible dimensions.
- Minimize the number of quick filters. Use dashboard filter actions where possible.
- Avoid selecting “Only relevant values” for your quick filters. This requires sequential queries. Do not use this when not needed.
- Avoid high-cardinality quick filters (multi-select or drop-down lists). High-cardinality quick filters are slow to load and render.
- Avoid quick filters or actions that drive context filters. These require reloading the context table and should be avoided wherever possible.
- Keep range quick filters simple. The more complex the range, the slower the query.
- Replace quick filters showing “Only Relevant Values” and high count of quick filters with dashboard filter actions. They will cascade as your user interacts, and they perform faster.
- Don’t be lazy with user filters. Security by user filters can impact performance on Tableau Server as the server cannot share connections and query caches if user filters are active. Consider building a summary view that is a user-agnostic overview using a pre-aggregated extract with underlying data hidden. For a detailed view, restrict it to specific users or active directory groups instead of user filters.
- Limit custom SQL in live connections as they can be inefficient. Where possible, create a view on the database server to implement your custom SQL and connect Tableau to your view.
- Avoid parameters in custom SQL in Tableau. Tableau wraps the custom SQL in a subquery that many databases don’t handle well. Consider building a view in the database or use a multi-table join with filters.
- Watch for useless clauses, e.g. ORDER BY. Tableau is going to re-sort the data once loaded anyway.
- Use calculated fields carefully. Think about the data type as you code the calculation. Number and Boolean > date > string calculations when it comes to performance.
- Limit blended calculations. They require sequentially querying multiple data sources and can be time-consuming. Where possible, create a view on the database server.
- Avoid row-level calculations involving parameters.
- Avoid high mark counts. More marks = longer rendering time.
- Limit the use of detailed text tables with lots of marks.
- Minimize the file size of images or custom shapes where possible. As a general rule of thumb, keep images under 50kb.
- If using custom shapes, use transparent background PNGs instead of JPGs. Views will render cleaner, and shape files will take up less space.
- Even if a workbook is published to Tableau Server, local computations still impact performance. Leverage the power of Tableau Server whenever possible by limiting local computations such as groups, hierarchies, reference lines, table calculations and blending.
- Table calculations are powerful, but they can be slow. They are dependent on the local computation engine and can require substantial memory.
- Limit the number of worksheets on a dashboard. If you have more than four visualizations on a dashboard, strongly reconsider.
- Fix dashboard size relative to end-user consumption. Automatic sizing is less efficient than specifying dashboard size.
Dive Deeper with the Tableau Performance Checklist Series
There you have it. That’s the Tableau Performance Checklist in its entirety – at least for now. Still, what if you wanted to know more about each of the specific items listed above? Maybe you want more of a walkthrough?
You’re in luck!
We’ve begun breaking down this checklist into a Tableau Performance Checklist blog series. Each post in the series will provide an in-depth overview of one specific point found on the list. We’ll link to these posts here as they develop, so check back regularly.
Want to skip the reading? You can just as easily talk to one of our Tableau performance experts today! Simply drop us a line, and we’ll get in touch. You can also download Workbook Tools for Tableau to start getting instant performance feedback with features like Performance Analyzer.
Want to Share with Others?
A PDF version of our Tableau Performance Checklist is attached below for easy sharing!