Workbook Optimizer

The Workbook Optimizer is a tool that identifies if a workbook follows certain performance best practices. These guidelines are limited to what can be parsed from the workbook’s metadata and evaluated by a rules engine algorithm. Not all of its recommendations are applicable to or appropriate for every workbook. There are many aspects of performance that aren’t captured by the Optimizer, some of which can offer easy wins. For more information, refer to Streamline your workbook and the whitepaper Designing Efficient Production Workbooks.

Run the Workbook Optimizer

  1. From the File menu, select Publish or Publish As. Alternatively, click the drop down next to Publish.
  2. Click Run Optimizer. This opens a new dialog for the Workbook Optimizer.
  3. The workbook is automatically evaluated against the guidelines and results display in one of three categories: Take action, Needs review, or Passed (or Passed and ignored).
    • You may see fewer than three categories. If no guidelines fall into a category, it doesn’t display.
    • Expand each category to see the guidelines. You can also expand each guideline for more information about why it's a recommendation. Some have additional information specific to your workbook.
    • You can choose to address any or none of the guidelines. As running the Optimizer is a voluntary step in the publishing process, it doesn’t prevent you from being able to publish.
  4. To close the dialog and go back to the workbook, click Close.
  5. To close the dialog and go back to (or open) the publishing dialog, click Publish.

Optimizer categories

The Optimizer breaks down its guidelines into three categories: take action, needs review, and passed.

Take action indicates that updating the workbook to follow these best practices have minimal to no impact on the functionality of the workbook. There’s probably no reason to avoid making these changes.

Needs review indicates that following these best practices may involve modifying the workbook in more involved ways, such as restructuring a data source or simplifying a dashboard.

  • For these guidelines, use your best judgment to determine what is possible or practical to address.
  • Some recommendations may involve a lot of effort for minimal performance gain and aren't worth it.
  • It may be useful to use the Performance Recorder to get a performance benchmark.
  • Some may be deliberate choices you’ve made.

As the author, you’re the final authority on what makes a workbook as efficient as possible. Remember that some best practices should be broken to effectively deliver content. Always weigh the goal of the workbook against changes to improve performance.

Passed indicates the guidelines are met and the workbook is already following best practices in that area. But remember, there are many aspects of performance that aren’t captured by the Optimizer. This category is renamed Passed and ignored if any guidelines are ignored for the workbook.

Ignore a guideline

Guidelines aren’t always applicable to your situation. Perhaps you're publishing a template workbook for others to use and need to preserve unused fields and data sources. You don't want the optimizer to continue to notify you about those guidelines.

It's possible to ignore a guideline for a workbook.

  1. From a specific guideline, click the Ignore button.
    • The guideline is muted and moves to the Passed and ignored section. Even if you run the optimizer again, that guideline won't appear in the Take action or Needs review section.
  1. To resume evaluating the guideline, find its row in the Passed and ignored section and click the Ignore button again.
    • The optimizer runs again and the guideline is evaluated. It continues to be checked each time the optimizer runs.

Autofix a guideline

Some suggestions from the workbook optimizer can be implemented without user input. For these guidelines, there’s a button to autofix the rule. If the button doesn’t appear you must manually address the issue.

From a specific guideline, click the Autofix button.

  • The recommended action (such as closing an unused data source) is taken behind the scenes and the guideline moves to the Passed section.
  • If the autofix fails for any reason, you'll be notified and prompted to resolve the issue manually.
  • If the button isn't available, that guideline cannot be autofixed and must be addressed manually.

The guidelines

Every guideline contains a “consider" statement that suggests a potential way to address the performance impact. These are necessarily general and may not apply in every situation. These suggestions are a starting point only; always frame your decisions in the context of your environment and the goals of your workbook.

Note: Not all suggestions are possible to perform in the browser and may require editing in Tableau Desktop instead.


Navigate to a guideline by letter: A . B . C . D . E . F . G . H . I . J . K . L . M . N . O . P . Q . R . S . T . U . V . W . X . Y . Z


Calculation length

From the Workbook Optimizer

Sample output message: The calculation My calculation is 600 characters long

Computing the results of complex calculations can impact performance.

Consider breaking the calculation apart and moving whatever is possible to the database, or using Tableau Prep to create the calculations prior to analysis.

Additional information

Complex and long calculations can either be written in a single calculation or nested (with some components written as standalone calculations that are used in the larger calculation). Building a calculation with nested components may make it easier to troubleshoot and maintain, but it can add complications and additional processing. If possible, pushing these components back to the data source may aid performance.

Comments in calculations count against the length, so this guideline may be triggered by a long comment rather than a long and complex calculation.


Calculation uses multiple data sources

From the Workbook Optimizer

Sample output message: The data source Supply Chain includes 17 calculations using fields from another data source.

When calculations use fields from multiple data sources, Tableau can’t use any optimizations and must compute the calculation locally.

Consider using Tableau Prep to create the calculation and using an extract.

Additional information

By moving the cross-database calculation to the data layer, the processing can be performed before the user even requests the dashboard. See Join your data (Prep) and Create level of detail and rank calculations for more information.

Under some conditions a parameter may trigger this guideline. If a calculation is indicated that doesn’t use multiple data sources, check to see if it has a parameter and if that parameter can be simplified.


Dashboard size not fixed

From the Workbook Optimizer

Sample output message: The dashboard Q3 analytics isn’t fixed size.

Fixed sized dashboards can be cached because they’re a predictable size. Using automatic dashboard sizing means the results depend on the user’s screen, and therefore the dashboard must be rendered every time. Rendering dashboards more often comes with a performance hit.

Consider using fixed dashboard sizing.

Additional information

Although responsive elements are a best practice in web design, letting your dashboard resize can distort the layout of the content in addition to the performance impact of re-rendering. For Tableau visualizations, it’s best to use a fixed dashboard size and use device-specific dashboards to support different devices and screen sizes.


Filter uses conditional logic

From the Workbook Optimizer

Sample output message: The filter Sample Type uses conditional logic.

Dimension filtering can be done in various ways, such as on a list of values, by wildcard matching, or using conditional logic. Conditional logic can be slow.

Consider changing the filter to not use conditional logic. If necessary, make sure your logic tests for the most frequent outcome first and use ELSEIF or CASE when possible.

Additional information

For more information on filtering, see Filter Your Data.


Filter uses "Only Relevant Values"

From the Workbook Optimizer

Sample output message: The filter Sample Type uses “Only Relevant Values”.

When a filter uses “Only Relevant Values”, the interactive filter control only shows options that are applicable given the current state of the view. Every time a change is made to other filters, the list of values to be displayed must be requeried, which has a performance impact.

Consider using dashboard filter actions instead. If the end-user benefit is valuable enough that this feature should be used, consider extracting the data and optimizing the extract.

Additional information

There are situations where using “Only Relevant Values” is necessary to avoid an unwieldy filter list. Instead of using interactive filters in that situation, try using action filters. For example, consider a dashboard that has cascading filters for Category, Sub-Category, and Product ID, where Product ID is set to show "Only Relevant Values". Removing that restriction would expand the list of products significantly. Rather than using filters, you can build simple visualizations (such as a bar chart of Category and Sub-Category) and use it as a filter. The user clicks on a bar and the action filter is applied to the rest of the visualizations on the dashboard. For more information, see Dashboard Actions.


Live data connections

From the Workbook Optimizer

Sample output message: The data source Supply Chain isn’t an extract.

Tableau extracts are designed to be as efficient as possible for use with analytics. Using extracts is one of the easiest ways to improve performance due to the data source. Extracts also have many native features for optimization.

Consider extracting the data source.

Additional information

In some instances, taking an extract may put undesirable strain on the Tableau Server or Tableau Site's resources. Work with your Tableau administrator to determine the best course of action.

The whitepaper Designing Efficient Workbooks has extensive information about extracts and how to use them for performance. (You may need to sign in to access the whitepaper.)

Multiple connections in a data source

From the Workbook Optimizer

Sample output message: The data source Supply chain uses multiple data connections.

Data sources that include multiple connections can’t be computed locally.

Consider combining the data sources in Tableau Prep and using an extract for analysis.

Additional information

See Join your data (Prep) for more information.


Nested calculations

From the Workbook Optimizer

Sample output message: The calculation My Calculation references another calculation.

Nesting calculations can add complications and additional processing, especially with IF statements and other performance intensive functions.

Consider pushing the calculations to the data source or materialize them in an extract.

Additional information

This rule may be triggered for a calculation that isn’t in the viz itself but is referenced by a calculation in the viz. For example, imagine four fields:

  1. Points earned (a field in the data source)
  2. Quiz score = [Points earned]*10
  3. Curved grade = [Quiz score]*1.05
  4. Letter grade = IF [Curved grade] >= 90 THEN "A" ELSEIF [ Curved grade] >= 80 THEN "B" ELSEIF [Curved grade] >=70 THEN "C" ELSEIF [Curved grade] >=60 THEN "D" ELSE "F" END

Quiz score is a non-nested calculation that only references a field. Both Curved grade and Letter grade are nested calculations because they contain references to other calculations. Even if only Letter grade is used in the viz, Curved grade also triggers the nested calculation rule because it's in use inside Letter grade.

For more information on materializing calculations in an extract (Compute Calculations Now), see Materialize Calculations in Your Extracts.

For more information about building calculations in Tableau Prep, see Calculations in Tableau Prep.


Non-materialized calculations

From the Workbook Optimizer

Sample output message: The data source Supply Chain hasn’t been pre-computed.

Computing the results of a calculation can impact performance.

Consider pushing calculations to the data source when possible. If using an extract, materialize calculations to pre-compute their results.

Additional information

Pre-compute the data and calculations either in an extract or your back-end data source. By moving this additional processing to the data layer, the processing is completed before the user even requests the dashboard.

Taking an extract of your data often boosts performance, though there are tradeoffs in data freshness and some functionality. See Extract Your Data for more information about options for extracts and Materialize Calculations in Your Extracts for more information on materializing calculations.

Extract your data: right click on the data source’s name at the top of the Data pane and select Extract Data. In the configuration dialog, choose Compute Calculations Now.


Number of data sources

From the Workbook Optimizer

Sample output message: The workbook contains 17 data sources.

Each data source contributes to the amount of time Tableau spends loading and rendering a workbook.

Consider combining data sources if possible, especially when the level of granularity is the same or they support the same analysis.

Additional information

See Relate Your Data(Link opens in a new window) for more information on combining data sources, or consider using Tableau Prep.

However, be wary of over-combining data sources. Workbooks perform best when each type of analysis is built off a well-designed data source. If it’s hard to combine your data sources, this could be a sign that the analysis should be split into multiple workbooks, each with a more targeted purpose.

To split your analysis across multiple workbooks, try one of these methods:

  • Save a copy of the workbook and delete unnecessary sheets, dashboards, and data sources from each one. See Streamline your workbook for more information.
  • Copy specific sheets into a new workbook. This may be more efficient because copying a dashboard into a new workbook carries over only what is needed for that dashboard. However, not all formatting options are transferred. See Copying Information Between Workbooks(Link opens in a new window) for more information.

Number of filters

From the Workbook Optimizer

Sample output message: The sheet Classroom Distribution contains 17 filters.

Excessive filters on a view create a more complex query.

Consider reducing the number of filters and using filter actions wherever possible. Not all types and formats of filters are created equal in terms of performance, so consider optimizing necessary filters.

Additional information

The whitepaper Designing Efficient Production Workbooks has an entire section on filters that goes into much more detail. In brief:

  • Reduce the overall number of filters
  • Filters applied to multiple worksheets trigger multiple queries with every change
  • Limit use of Show only relevant values. Using an extract helps optimize this feature if it’s needed.
  • Avoid high cardinality include/exclude filters
  • Use the Apply button to prevent multiple refreshes as the user interacts with the filter
  • Filter on fields that are present in the view
  • Use continuous date filters rather than discrete date filters
  • Context filters shouldn’t be used purely to boost performance

Filter actions are an efficient way to guide the user through a dashboard. See Filter Actions for more information.


Number of layout containers

From the Workbook Optimizer

Sample output message: The dashboard Q3 analytics contains 42 layout containers.

Layout containers can complicate dashboard rendering.

Consider removing unnecessary layout containers and simplifying the dashboard design.

Additional information

For more information about layout containers and the Layout pane, see Group items using layout containers.


Number of LOD calculations

From the Workbook Optimizer

Sample output message: The workbook contains 42 LOD calculations.

Computing the results of complex calculations can impact performance. Often, LODs are used on the fly to address issues of granularity in the data source that could be handled prior to analysis.

Consider tailoring the data source to the analysis to avoid the need for as many LODs.

Additional information

Level of Detail calculations are powerful tools, but they’re expensive. Make sure you’re only using them when necessary.

Production databases are designed to handle significant query loads and are a great option for moving processing out of Tableau. FIXED LOD calculations can sometimes be performed by the database. Tableau Prep also supports FIXED LOD calculations. See Create level of detail and rank calculations for more information.


Number of views in a dashboard

From the Workbook Optimizer

Sample output message: Dashboard Q3 analytics contains 17 views

A dashboard must load all elements before it can be displayed. The more views a dashboard contains, the longer it takes to load. Although it often involves a redesign, reducing the number of views in a dashboard is often the best way to boost its efficiency.

Consider streamlining the dashboard to be as effective and simple as possible by reducing the number of views, filters, and other elements. Start with anything can be removed immediately. See Streamline your workbook for other ways to reduce clutter in your dashboard

Additional information

If a more substantial redesign is needed, remember that not all views have an equal impact on performance. Focus on sheets with the most marks, filters, or other complexity. A good strategy can be to limit the initial dashboard to summary information and only provide more details when the user requests them. There are many strategies for this sort of guided drill-down, including:


Number of workbook sheets

From the Workbook Optimizer

Sample output message: The workbook contains 42 visible sheets

The overall size of a workbook impacts how long it takes to be processed and displayed. All visible sheets must be loaded before Tableau can display a workbook or view. Reducing the number of sheets can help speed up load time.

Consider reducing the number of sheets in the workbook by closing unneeded sheets, hiding sheets that are used in a dashboard, or splitting the analysis into multiple workbooks.

Additional information

Delete sheets that aren’t necessary for the analysis: right click on the sheet tab along the bottom of the workbook and select Delete.

Hide sheets in use: Worksheets used in a dashboard or story can’t be deleted, but they can be hidden. See Manage Sheets in Dashboards and Stories for more information.

  • Hide all of a dashboard's sheets: right-click the dashboard tab at the bottom of the workbook and select Hide All Sheets.
  • Hide a specific sheet: right click the sheet tab at the bottom of the workbook and select Hide.

If all sheets are needed, decide if the analysis can be split into multiple workbooks, each with a more targeted purpose.

  • Save a copy of the workbook and delete unnecessary sheets, dashboards, and data sources from each one. See Streamline your workbook for more information.
  • Copy specific sheets into a new workbook. This may be more efficient because copying a dashboard into a new workbook carries over only what is needed for that dashboard. However, not all formatting options are transferred. See Copying Information Between Workbooks(Link opens in a new window) for more information.

Unused data sources

From the Workbook Optimizer

Sample output message: The data source Supply Chain isn't used in the workbook.

Each data source contributes to the amount of time Tableau spends loading and rendering a workbook.

Consider closing data sources that aren’t in use.

Additional information

If any data sources aren’t being used, close them: right click on the data source’s name at the top of the Data pane and select Close.


Unused fields

From the Workbook Optimizer

Sample output message: The data source Supply Chain contains 42 fields that aren't being used.

Hiding unused fields prevents them from being unnecessarily queried and reduce the size of extracts.

Consider hiding any fields that aren’t being used, regardless of whether the data source is an extract.

Additional information

Hide unused fields

  • In Tableau Desktop: open the dropdown menu at the top of the Data pane and select Hide All Unused Fields.
  • In web authoring: right click on an unused field and select Hide. There’s no way to bulk hide unused fields in web authoring. If hiding fields individually is prohibitive, consider editing in Tableau Desktop instead of working in the browser.

Uses data blending

From the Workbook Optimizer

Sample output message: The sheet Classroom Distribution uses data blending.

Data blending performance is driven by the number of unique members in the linking fields.

Consider using relationships when possible. If a blend is required, try to use low cardinality linking fields.

Additional information

There are several ways to combine data from multiple sources. Data blending sends two separate queries to two separate data sources and displays the results together in the viz. These queries are at the level of the linking fields and the results are merged in memory in Tableau. Large query results require more processing to generate the final viz.

Tip: If you aren’t using data blending but the Workbook Optimizer failed this rule, check if the workbook is using cross data source filtering. Filtering across data sources suffers from similar performance issues around field cardinality.


Uses date calculations

From the Workbook Optimizer

Sample output message: The data source Supply Chain contains 17 date calculations.

Date logic can be complicated. Minimize the number of date calculations and conversion you have to do in Tableau.

Consider using DATEPARSE and MAKEDATE before other methods, and try to use built-in functions like DATEDIFF() when possible. If filtering on a date, use relative date filters or a continuous date filter instead of a discrete filter.

Additional information

Computing calculations in Tableau can have a significant performance impact, especially date functions. Consider taking an extract and materializing calculations, or pushing calculations to your data source. For more information about building calculations in Tableau Prep, see Create Calculations in Tableau Prep.

Note: If a date calculation is nested in another calculation, the optimizer flags the nested date calculation, even if the parent calculation is the field used in the viz.


Uses grouping

From the Workbook Optimizer

Sample output message: The data source Supply Chain uses 17 grouped fields

Tableau’s native grouping functionality loads the entire domain of the field, which can have a performance impact.

Consider using a calculated field with a CASE statement or sets instead of groups.

Additional information

In the testing performed for the Designing Efficient Workbooks whitepaper, grouping with CASE and sets performed better than the native group functionality.

The CASE function can be used to create groups. Imagine a scenario where the data involved a deck of cards. There’s a field for the card value (2–10, J, Q, K, A) but the analysis should compare face cards to number cards. The case statement to make that grouping could be

CASE [Value]
        WHEN "J" THEN "Face card"
        WHEN "Q" THEN "Face card"
        WHEN "K" THEN "Face card"
        ELSE "Number card"
        END

Sets have the added benefit of set actions, which make sets more powerful and flexible than traditional grouping. For more information, see Create Sets and Set Actions.

Thanks for your feedback!Your feedback has been successfully submitted. Thank you!