It was perhaps, Tableau – Data Visualization Platform that first set an impressive dent in the data visualization domain. Tableau offered and still continues to stun users of the varied data visualizations one can get out of their structured and unstructured data.
Still, Tableau is power-packed with robust functionality behind the screen and can cause delays in creating visualizations if not utilized optimally. Though there are many techniques for achieving best performances with Tableau, here is a set of few best practices I suggest that is applicable for an everyday practitioner.
Data Connections: (Live & extract)
- Wherever possible, use “Extract” instead of “Live connection” to accelerate the platform’s performance.
- Even if Tableau permits live connections to your data, an extract might work much faster.
- If volume of the data is so huge or the internet connectivity is poor, Live connection takes too much time to fetch data.
- Not only faster, but the Extract can be easier to work with when compared to Live Connections.
- In Live Connection, improve efficiency by limiting SQL Code. Instead of that create a view & use it.
- Avoid Parameters in custom SQL in Tableau.
- Do not bring unnecessary dimensions & metrics in the code.
- Always remember to keep your code in an aggregate level.
- Avoid order by clause in code. Tableau will re-sort the data once loaded.
- Publish Tableau Data Extracts (TDE) in the Server & schedule it. That way it becomes easily sharable with other team members.
- If we use aggregated metrics in TDE, that extract is called aggregated extract.
- Aggregated extracts just contain aggregated data and not detail-level data.
- Aggregated Extracts consume data volume compared to detail level extract.
- Aggregated extracts therefore ensure faster performance in dashboards & worksheets.
Calculated Fields (Derived fields from an existing field)
- If you have access to your DB and creating your own views (Custom SQL), then do all your calculations in your view itself.
- So, instead of the Dashboard calculating, your DB does the calculation. This reduces workload in Tableau.
- Remove the copies of same calculated fields & unnecessary fields from your sheets.
- When you use Blending, limit your Blending calculation.
- Avoid row-level calculations with parameters.
- Minimize the number of quick filters in Dashboard. Every time when we change filters, Tableau runs a VizQL in background to display.
- Use dashboard filter actions wherever possible.
- Instead of user filters, publish the view with restricted access with specific users & groups.
- Minimize selecting only relevant values option for your quick filters that convert it as context filters. Because every time it reloads, the context table and requires sequential queries. So avoid when it is not needed.
- If you keep range in your quick filters then make it simple. Instead of filtering on months, go with years which improve the VizQL query performance.
- Avoid using multi-select or drop-down lists for quick filters, which is slow to load/fetch the data from underlying table.
- Limit the number of worksheets on a dashboard.
- Remove unwanted worksheets & multi-copies of single sheet.
- Keep end-users in mind and adjust or fix size of Dashboard accordingly.
- Specifying dashboard size is more efficient than letting dashboard decide it automatically
- Build cascading dashboard designs instead of cascading filters to improve loading speed
- Avoid unnecessary calculations & filtering.
- Limit local computations (Worksheet level) such as groups, hierarchies, table calculations and blending.
- Please keep in mind that even if you hide unused calculations from sheet, it will not be removed physically from the sheet.
I hope you find these ideas useful and effective. Looking forward to interact with you to discuss more on the data visualization domain.