skip to content

In Tableau, a live-connection dashboard with six filter cards loads slowly — what do you change?

level: seniorimportance: should knowfreq 46%

answer

  1. a filter card is a query, not a widget
  2. measure before you tune anything
  3. one click should cost one refresh
  4. some exclusions never need a control
  5. context is not a speed switch

basics

~20 s

Each filter card issues its own query to populate its list of values, and Only Relevant Values makes those queries depend on each other. Cut the number of cards, add an Apply button, replace high-cardinality lists with parameters or wildcard search, and push permanent exclusions into data source or extract filters.

solid answer

~50 s

Filter cards are not free decoration: each one runs a query to fetch its domain, so six cards can mean six extra round trips before a mark is drawn. Setting a card to **Only Relevant Values** makes its domain depend on the other filters, which is friendlier for users but adds dependent queries on every interaction. Practical fixes, roughly in order of payoff: reduce the number of cards, and drop *All values in database* for high-cardinality dimensions in favour of a wildcard-match card or a parameter, since a parameter needs no domain query at all. Turn on **Show Apply Button** so one click triggers one refresh rather than one per selection. Move exclusions that are never negotiable into data source or extract filters, so they cost nothing per interaction. Use context sparingly — a context filter that changes constantly rebuilds its subset each time. If the source is simply slow, an extract is the honest answer.

code

text · 7 lines
text
Dashboard open on a live connection:
  6 filter-card domain queries   (SELECT DISTINCT ... per card)
+ 4 worksheet mark queries
= 10 round trips before anything is drawn

With Only Relevant Values on all six cards, changing one card
re-queries the other five domains as well.

go deeper

for a junior

Know that filter cards have settings that matter — All values in database, Only relevant values, and Show Apply Button — and that a wall of dropdowns is not free.

for a middle

Explain the mechanics: each card runs a domain query, relevant-values makes those queries dependent, and an Apply button collapses many refreshes into one.

for a senior

Diagnose before tuning. Read a performance recording, separate domain queries from mark queries, and move permanent exclusions to data source or extract filters where they cost nothing per interaction.

for a principal

Own the trade the team keeps making: freshness versus interactivity. Decide when a workload belongs on an extract with a refresh schedule versus live against the warehouse, and set expectations about dashboard latency accordingly.

## Where the time actually goes When a Tableau dashboard opens on a live connection, the marks are not the only thing being queried. Every filter card needs to know what to display, and Tableau gets that by querying the domain of the field: `SELECT DISTINCT customer_name FROM ...`. Six cards mean six of those, on top of the queries for each worksheet. On a warehouse where each round trip carries seconds of latency and queue time, the domain queries can dominate the load. So the first diagnostic question is not "which chart is slow" but "how many queries does this dashboard issue, and what are they for". Tableau's performance recording is the tool for that, and it will separate *executing query* time from *computing layout* and *geocoding*. ## Filter card settings that cost money **All values in database** re-queries the domain against the source. **Only relevant values** is worse in query terms — the card's domain now depends on the other filters, so changing filter A forces the domains of B through F to be recomputed. It is a genuinely better experience for users, which is why it is worth paying for on two or three cards and not on six. **High-cardinality dimensions** are the standout problem. A multi-select list of 80,000 customers is expensive to fetch, slow to render, and useless to a human. Replace it with a wildcard-match card (the user types, Tableau queries once for the match) or with a parameter, which is the strongest move available: a parameter needs no domain query at all, because its allowable values live in the workbook. **Show Apply Button.** Without it, every click on a multi-select card triggers a full refresh of every affected worksheet. With it, the user makes five selections and pays once. On a slow source this is the single cheapest change you can make. ## Move work to a stage that only runs once Tableau's order of operations is also a cost model. An **extract filter** is evaluated when the extract is built — never again. A **data source filter** is applied to every worksheet on that connection and does not need a control. Anything that is permanently true (exclude internal test accounts, keep only the last three years) belongs at one of those stages, where it costs nothing per interaction, rather than as a filter card the viewer never touches. **Context filters are the opposite**. Adding a filter to context makes Tableau materialise a subset, and the subset is rebuilt whenever the context filter's value changes. That is a good trade when the filter is set once and something downstream must run after it — a Top N, a computed set, a `FIXED` expression. It is a bad trade for a date slider a viewer drags, because every drag pays for a rebuild. Adding filters to context as a general tuning habit is a classic anti-pattern; it was folklore advice years ago and it is not how you would tune a dashboard today. ## Reduce the number of cards at all Six filter cards is often a design smell rather than a requirement. Ask which ones the audience actually moves. Cards that are set once and never touched should be data source filters. Cards that exist "in case someone wants it" should be deleted. Two or three well-chosen controls plus a dashboard action (click a region on a map to filter the detail) usually beat a wall of dropdowns, and dashboard actions filter without a domain query. ## When the answer is an extract If the marks queries themselves are slow because the source is a transactional database, a busy warehouse, or a wide table being scanned, no amount of filter tuning fixes it. An extract turns the workload into Tableau's own columnar engine and removes the source's queueing from the interaction path entirely, at the cost of freshness and refresh scheduling. Be explicit about that trade rather than treating an extract as a universal cure. ## How to sequence the work 1. Take a performance recording and confirm the time is in query execution, not rendering or geocoding. 2. Count the queries. Domain queries for filter cards are the ones with no worksheet attached. 3. Add an Apply button; delete or demote unused cards; replace high-cardinality lists with search or a parameter. 4. Move permanent exclusions up to data source or extract filters; remove context filters that are not earning their keep. 5. If the marks queries are still slow, discuss an extract and its refresh cadence. ## What interviewers listen for They want to hear that a filter card is a query, not a widget, and that you would measure before changing anything. A candidate who lists ten tips without mentioning a performance recording is reciting a blog post. A candidate who says "context filters make it faster" has learned the folklore rather than the mechanism.

  • Why is replacing a filter card with a parameter sometimes a performance fix?
    A parameter's allowable values live in the workbook, so it issues no domain query against the source at all. On a high-cardinality dimension that removes an expensive SELECT DISTINCT from every dashboard load. The cost is that the value list no longer tracks the data unless you use a dynamic parameter.
  • Is adding filters to context a reliable way to speed up a dashboard?
    No, and treating it as one is an anti-pattern. Context materialises a subset that is rebuilt whenever the context filter's value changes, so an interactive control in context adds work on every interaction. Use context for correctness — Top N, computed sets, FIXED expressions — and tune performance elsewhere.
  • How do you tell whether the slowness is filters or the marks queries?
    Take a performance recording and look at where the time sits. Domain queries appear without an associated worksheet; mark queries are attached to a sheet. If executing-query time is dominated by the sheets themselves, filter tuning will not help and the conversation is about the source or an extract.

saying these in an interview costs you the question

  • Adds filters to context as a general speed tuning step
  • Does not know a filter card issues its own domain query
  • Leaves multi-select cards without an Apply button
  • Keeps an 80,000-value dropdown because users asked for it
  • Recommends an extract without measuring where the time goes

context