Was this page helpful?
Yes No

Optimize Workbook Performance

When we mention performance, we mean the speed with which you can work in Tableau. It might mean the speed of data analysis, such as working in Tableau Desktop on a large corporate database that you are accessing remotely. Or, it could refer to the speed of loading views or dashboards that you access on your desktop from Tableau Server.

If you are working with small data volumes, many of the recommendations in this section are optional for you. Your workbook performance is probably as speedy as you expect. But if you work with hundreds of millions of records, designing an efficient workbook is critically important to the speed at which you can work. We recommend that you review the topics and tips in this section before you start building your first view.

Making performance improvements almost always means making trade-offs. For example: Do you sacrifice speed to make sure you have the most current data? Is it important to include all the data for analysis, or will a speedier subset do? The bigger and more complicated the data, the longer it takes to interpret and render. But there are things you can do to accelerate the process. Think of fine-tuning your workbook performance as working on a puzzle with multiple pieces. Pick and choose from the topics in this section to find the pieces that solve your particular puzzle.

The topics in this section on performance discuss the big picture and then drill down to specific functionality. It starts with databases, data, and extracts, and then focuses on things that affect your data source, your workbooks, your calculations, and visualizations. The next set of topics discuss how to record and analyze workbook performance. Finally we look at how to reduce upload times to a Tableau server.

Learn more: For more in-depth and related information beyond this topic, see:
Designing Efficient Workbooks whitepaper on tableau.com
Designing Efficient Workbooks (1 hour) and Best Practices for Dashboard Performance (50 minutes) free, video presentations
The Tableau Performance Optimization Flowchart and The Tableau Performance Checklist from and on the InterWorks blog.

General tips

This general list of considerations is a start in learning how to approach optimizing workbooks. It comes from the TL;DR page in the Designing Efficient Workbooks whitepaper.

  • The cleaner your data is and the better it matches the structure of your questions, the faster your workbooks will run and the happier your life will be. Only connect to the data that you need for analysis.

  • Extracts are a quick and easy way to make most workbooks run faster. If you don’t need real-time data and aren’t working over billions of rows of data, you should try them.

  • The majority of slow dashboards are caused by poor design – in particular, too many charts on a single dashboard, or trying to show too much data at once. Keep it simple. Allow your users to incrementally drill down to details, rather than trying to show everything then filter (guided analysis).

  • Don’t work with data you don’t need—both in terms of the fields you reference as well as the granularity of the records you return. Use filters, hide unused fields and aggregate.

  • While reducing the data, make sure you use filters efficiently.

  • Strings and dates are slow, numbers and Booleans are fast.

  • There is no silver bullet for inefficient workbooks. Start by looking at the performance recorder to understand where the time is going. Long-running queries? Lots of queries? Slow calculations? Complex rendering? Use this insight to focus your efforts in the right direction.

  • Upgrading to the newest version may boost performance without needing anything else.

  • If it is slow in the data source, it will be slow in Tableau Desktop. If it is slow in Tableau Desktop, it will (almost always) be slow in Tableau Server.

  • Performance tuning is highly individualized to the context of your environment, data, analysis, and workbook. What works in one situation may not work in another--test and iterate to see what works in your specific case.