Why does a Tableau filter action fail to filter a target sheet on a different data source?
answer
- the action sends values, not keys
- field names rarely survive a second data source
- compare the two value lists side by side
- dates are the usual culprit
- spelling, case, type, grain
basics
~20 sFilter actions match on field values, not on identity. Across two data sources the field names usually differ, so All Fields matches nothing and you must map Selected Fields — and even then the values must match exactly in spelling, case, type and grain.
solid answer
~50 sA Tableau filter action passes the selected mark's dimension values to the target and applies them as a filter there. With **All Fields**, Tableau matches on fields the source and target have in common by name, which almost never holds across two separate data sources. The fix is **Selected Fields**: map each source field explicitly to the target field it corresponds to. That still is not sufficient, because matching happens on the *values*. `"USA"` will not match `"United States"`; a trailing space, a different case in a case-sensitive source, an ID stored as a string on one side and an integer on the other, or a date at day grain against a datetime with a time component will all produce a target that filters to nothing. Diagnose by putting both fields on their own sheets and comparing the actual value strings before touching the action again.
code
text · 7 linesSource (CRM extract) Target (Finance warehouse)
[Region] [Sales Region]
"USA" "United States"
"EMEA" "EMEA " -- trailing space
[Order Date] = 2026-03-01 [Date] = 2026-03-01 09:14:22
-- Selected Fields mapping is correct; every value match still failsgo deeper
Be ready to say that filter actions match on field values and that across two data sources you must map Selected Fields explicitly rather than relying on All Fields.
Explain the value-matching mechanics and name the usual mismatches: different vocabularies, case and whitespace, string versus numeric IDs, and month against timestamp.
Show a diagnosis routine — scratch sheets comparing the two value lists, mapping review, type check — and know when the honest fix is conforming the sources rather than patching the action.
Own the boundary. Argue for conformed keys and vocabularies in the warehouse so cross-source interactions are a modelling guarantee rather than per-workbook mapping that quietly rots.
## What a filter action actually sends A Tableau filter action does not carry a row identifier or a join. It takes the dimension values on the mark the user interacted with and applies them as a filter on the target sheet's own fields. That is a value-based match, and it is the source of every cross-data-source failure. ## All Fields versus Selected Fields In the action's Target Filters section there are two modes. **All Fields** tells Tableau to match on the fields the source and target have in common. Within a single data source this is convenient and usually right. Across two data sources the field names are rarely identical, so there is nothing to match on and the action appears to do nothing at all — or, worse, matches on one incidental shared name and filters by the wrong thing. **Selected Fields** lets you state the mapping explicitly: source `[Region]` filters target `[Sales Region]`, source `[Order Date]` filters target `[Date]`. For a cross-data-source action this is the mode to use. Note that the target field must exist in the target sheet's data source — it does not need to be on the view's shelves for a filter action, but it must be a real field there. ## Why an explicit mapping still returns nothing Once the mapping is right, the remaining failures are all data problems. - **Different vocabularies.** The CRM extract says `USA`, the finance warehouse says `United States`. Both are correct in their own system and neither will ever match the other. The only real fix is upstream: conform the values, or add a lookup column to one source so a matching field exists. - **Whitespace and case.** A trailing space in one system, or `ACME` against `Acme` in a source whose comparison is case-sensitive, silently yields zero rows. - **Type mismatch.** A customer ID stored as a string on one side and a number on the other will not match; neither will an alias, since the action compares underlying values rather than the display alias. - **Grain mismatch.** This is the most common one with dates. The source view shows a month, the target's field is a timestamp — filtering the target by a month value against timestamps matches nothing. Bring both to the same grain with a calculated field, typically by truncating the timestamp to the same date part. - **Aliases and groups.** If the source dimension is grouped or aliased, the visible label is not necessarily the value that travels. ## A diagnosis routine 1. Build a scratch sheet from the source data source with just the source field on Rows, and another from the target data source with just the target field. Compare the value strings side by side, character for character. This catches vocabulary, case and whitespace mismatches in seconds. 2. Confirm the action uses Selected Fields with a mapping for every field you intend to filter on, and nothing extra. An extra mapped field that does not match narrows the result to nothing even if the others match. 3. Check the data types of both fields. Change one with a calculated field if needed rather than hoping the action coerces them. 4. Temporarily set the target sheet to show the field you are filtering on so you can see what survives. 5. Check the clearing behaviour: an action set to exclude all values looks identical to a broken mapping when nothing is selected. ## When an action is the wrong tool If you find yourself building conversion calculations on both sides so an action can match, the real problem is that the two sources are not conformed. Options in rough order of preference: - Fix it upstream in the warehouse or the transformation layer, so both sources speak the same vocabulary and grain. This is the durable answer and it benefits every other tool reading the same data. - Bring the two together in the data source itself — a relationship, join or blend on a shared key — so the sheets share one source and All Fields works normally. - Keep the action and add mapping calculations, accepting that the mapping now lives in a workbook where nobody else will find it. A filter action across mismatched sources is a presentation-layer patch over a modelling problem, and it will break the next time either system adds a value. ## A related gotcha Even within one data source, a filter action can look broken when the target sheet's aggregate is computed by a FIXED level-of-detail expression, because those are evaluated before dimension filters — the marks change but the number does not. Rule that out before assuming a mapping problem: if the target's row count changes at all, the action is firing and the issue is the calculation, not the mapping.
- The mapping is correct but the target still returns nothing when a date is selected. What do you check?Grain and type. A source view showing month passes a month-level value; if the target field is a timestamp with a time component, nothing matches. Truncate both sides to the same date part with a calculated field and map those instead. Also confirm neither side is a string date, since a string will not match a real date value.
- When should you fix this in the data source instead of the action?As soon as you are writing calculations on both sides so the values line up. Conforming the values upstream, or relating the two tables on a shared key inside one data source, fixes it for every workbook rather than hiding a mapping in this one. Mapping calculations buried in a workbook are invisible to the next author and break when either system adds a value.
- Does a target field have to be on the view's shelves for a filter action to filter on it?No — a filter action can filter a target on a field that is in the target's data source without being on the view. That is different from a highlight action, which only shows an effect when the matched field is present in the target view or on its Marks card, because highlighting works on rendered marks rather than on the query.
saying these in an interview costs you the question
- Assuming All Fields works across two data sources
- Believing the action passes a row key rather than values
- Ignoring date grain when matching timestamps to days
- Expecting aliases or groups to change the value that travels
- Patching conformance in the workbook instead of upstream