Best Practises
- 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 visualization.
- 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.
- 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.
- Avoid multi-select or drop-down lists in Quick filters which 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.
- 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 sub query 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 any images or custom shapes where possible. As a general rule of thumb, keep images under 50kb
- 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