6 Tips to Make Your Dashboards More Performant

By Nicholas Hara January 15, 2016

Note: Ryan Lempa and Darren McGurran also contributed to this piece.

We here at Tableau are very proud of how easy it is to see and understand data with Tableau. Once you get started, it’s intuitive to dive deeper by adding more and more fields, formulae, and calculations to a simple visualization—until it becomes slower and slower to render. In a world where two-second response times can lose an audience, performance is crucial.

So Where Do I Start?

So how can you make your dashboards run faster? Your first step is to identify the problem spots by running and interpreting your performance recording. The performance recorder is every Tableau speed demon’s ticket to the fast lane. The performance recorder can pinpoint slow worksheets, slow queries, and long render-times on a dashboard. It even shows the query text, allowing you to work with your database team on optimizing at the database level.

Now that you know which views or data connections are slowing you down, below are six tips to make those dashboards more performant. For each tip, we’ve listed the most common causes of performance degradation as well as some quick solutions.

1. Your Data Strategy Drives Performance

Extracts are typically much faster to work with than a live data source, and are especially great for prototyping. The key is to use domain-specific cuts of your data. The Data Engine is not intended to be a replacement for a data warehouse. Rather, it’s meant to be a supplement for fast prototyping and data discovery.

Since an extract is a columnar store, the wider the data set, the slower the query time.

  • Minimize the number of fields based on the analysis being performed. Use the hide all unused fields option to remove unused columns from a data source.
  • Minimize the number of records. Use extract filters to keep only the data you need.
  • Optimize extracts to speed up future queries by materializing calculations, removing columns and the use of accelerated views.

Keep in mind: Extracts are not always the long-term solution. The typical extent of an extract is between 500 million to one billion rows; mileage will vary. When querying against constantly-refreshing data, a live connection often makes more sense when operationalizing the view.

For more information on data extracts, check out these additional resources:

Video: Using and Refreshing Extracts
Online Help for Extracting Data
Understanding Tableau Data Extracts (three-part series)

2. Reduce the Marks (Data Points) in Your View

When data is highly granular, Tableau must render and precisely place each element. Each mark represents a batch that Tableau must parse. More marks create more batches; drawing 1,000 points on a graph is more difficult than drawing three bars in a chart.

Large crosstabs with a bevy of quick filters can cause increased load times when you try to view all the rows and dimensions on a Tableau view.

Excessive marks (think: data points) on a view also reduce the visual analytics value. Large, slow, manual table scans can cause information overload and make it harder to see and understand your data.

Here’s how you can avoid this trap:

  • Practice guided analytics. There’s no need to fit everything you plan to show in a single view. Compile related views and connect them with action filters to travel from overview to highly-granular views at the speed of thought.
  • Remove unneeded dimensions from the detail shelf.
  • Explore. Try displaying your data in different types of views.

3. Limit Your Filters by Number and Type

Filtering in Tableau is extremely powerful and expressive. However, inefficient and excessive filters are one of the most common causes of poorly performing workbooks and dashboards. Note: Showing the filter dialog requires Tableau to load its members and may create extra queries, especially if the filtered dimension is not in the view.

  • Reduce the number of filters in use. Excessive filters on a view will create a more complex query, which takes longer to return results. Double-check your filters and remove any that aren’t necessary.
  • Use an include filter. Exclude filters load the entire domain of a dimension, while include filters do not. An include filter runs much faster than an exclude filter, especially for dimensions with many members.
  • Use a continuous date filter. Continuous date filters (relative and range-of-date filters) can take advantage of the indexing properties in your database and are faster than discrete date filters.
  • Use Boolean or numeric filters. Computers process integers and Booleans (t/f) much faster than strings.
  • Use parameters and action filters. These reduce the query load (and work across data sources).

4. Optimize and Materialize Your Calculations

  • Perform calculations in the database. Wherever possible, especially on production views, perform calculations in the database to reduce overhead in Tableau. Aggregate calculations are great for calculated fields in Tableau. Perform row-level calculations in the database when you can.
  • Reduce the number of nested calculations. Just like Russian nesting dolls, unpacking a calculation and then building it takes longer for each extra layer.
  • Reduce the granularity of LOD or table calculations in the view. The more granular the calculation, the longer it takes.
    • LODs - Look at the number of unique dimension members in the calculation.
    • Table Calculations - the more marks in the view, the longer it will take to calculate.

5. Take Advantage of Tableau’s Query Optimization

  • Blend on low-granularity dimensions. The more members in a blend, the longer it takes. Blending aggregates the data to the level of the relationship. Blends are not meant to replace row-level joins.
  • Minimize joined tables. Lots of joins take lots of time. If you find yourself creating a data connection with many joined tables, it may be faster to materialize the view in the database.
  • Remove custom SQL. Tableau can take advantage of database optimizations when the data connection does not use custom SQL.

6. Clean Up Your Workbooks!

  • Reduce dashboard scope. Excess worksheets on a dashboard can impact performance.
  • Delete or consolidate unused worksheets and data sources. A clean workbook is a happy workbook.

For more details on these areas and many more, check out our whitepaper on designing efficient workbooks.


Submitted by John Jensen (not verified) on

Absolutely brilliant work. While there are many posts and white papers and PS the talk about the subject… This is a perfect balance of content and detail without being a novel! Nicely done

Submitted by KK Molugu (not verified) on

Nice post!

Submitted by Venkat K. on

Thank you sharing important and handy information.

Submitted by Baljeet (not verified) on

Precise information without lot of verbose.

Submitted by David W. on

Very useful. Thank You.

Submitted by Josh Tapley (not verified) on

Perfect summary! This looks like a great 1 hour webinar for my user base.

Submitted by Alex B. on

Can you explain a bit more what you mean by "Exclude filters load the entire domain of a dimension, while include filters do not. An include filter runs much faster than an exclude filter, especially for dimensions with many members."

When you say "load the entire domain", are you talking about populating a quick filter list?

For instance, an exclude filter could generate efficient SQL in some cases such as '...where status <> "Closed"' that ought to be more efficient than SQL generated by an include filter such as 'where status in ("New", "Review", "Implementation", "Test", "Approval"). So would you mind explaining a bit more about that recommendation, or pointing to other material that describes it. On the surface, it seems odd to say that include is always more performant than include. I would think whichever approach required fewer comparisons would be superior.

Submitted by John Sobczak (not verified) on

This is really good! I think this is the first time I have ever seen in writing that extracts are generally faster than live data sources which has been my experience as well.

Submitted by Dan C. on

Alex B. -
Filters that use the custom value list setting generally map directly to the simple SQL.
But filters using the "Select from list" setting, will check the domain of the column to try to find more optimal ways of expressing the filter (such as by using a range query). If it's an exclude filter, that may include reading the domain of the column to figure out the optimal way to express the filter.
If the domain of the column contains null, this further impacts the query Tableau will generate. If you can declare columns "not null" in your database, both Tableau and the database will have an easier time optimizing your query.
I hope that helps!

Submitted by Nicholas H. on

Hi John!
Extracts can provide huge speed benefits, but there are some situations that a live connection may be faster. If you are interested in exploring the topic further, we've written some great articles to help guide you on making the right call for your needs.

http://www.tableau.com/about/blog/2014/7/understanding-tableau-data-extr... - This article explains Tableau's Data Extract at its core and provides the baseline for where and how Tableau makes tweaks to improve performance.

http://www.tableau.com/about/blog/2014/7/why-use-tableau-data-extracts-3... - This article looks at optimal use cases for extracts.

http://www.tableau.com/tableau-data-extracts-part3 - And this one is a simple checklist for Extract use best practices.

Hope these resources help!

Submitted by Sasiaknth R. on

Critically Acclaimed!

Submitted by Joao C. on


Thanks for the post, good overview.

Could you please clarify point six. I assume that it was an afterthought as the URL says '5 tips...'?:) Correct me if I am wrong but Tableau only renders what is on a View/Dashboard so the size of the workbook and number of sheets should not impact performance significantly. (Although I agree we should try our best to keep the workbook clean.)


Submitted by Cor B. on

Awesome work Nick!

A side note. Crosstab view (text tables) will perform much faster starting in 9.2 using single pane optimization. Make sure you are on a fast upgrade cycle as Tableau is constantly improving performance to keep you in the flow with your data.

"Text Table and Highlight Table Optimization
Text tables and highlight tables are optimized to enhance rendering, resizing, and removing of columns."


Submitted by Cor B. on

Hi Joao,

A couple of points to be careful with that thought.

1. If you end up publishing a workbook to Tableau Server with 'Show Sheets as tabs' checked, Tableau will need to load the entire workbook (all the XML) even if you are just viewing one sheet. If there are many sheets this could affect performance.

2. In a dashboard, any item that has a container we refer to as a zone. If there is a excessive amount of zones this also will affect performance.

Hope that helps!

Add new comment

non-humans click here