Bird
Raised Fist0
Tableaubi_tool~10 mins

Joining tables in Tableau - Cell-by-Cell Formula Trace

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Sample Data

Two tables: Orders (A1:C4) and Customers (E1:G4). Orders has order details with CustomerID. Customers has customer info with CustomerID.

CellValue
A1OrderID
B1CustomerID
C1OrderDate
A21001
B2C01
C22024-01-10
A31002
B3C02
C32024-01-12
A41003
B4C03
C42024-01-15
E1CustomerID
F1CustomerName
G1Country
E2C01
F2Alice
G2USA
E3C02
F3Bob
G3Canada
E4C04
F4Diana
G4UK
Formula Trace
JOIN Orders and Customers ON Orders.CustomerID = Customers.CustomerID (Inner Join)
Step 1: Identify matching CustomerID values in Orders and Customers
Step 2: For each matching CustomerID, combine the row from Orders with the row from Customers
Step 3: Exclude Orders rows with CustomerID not in Customers (like C03)
Step 4: Final joined table columns: OrderID, CustomerID, OrderDate, CustomerName, Country
Cell Reference Map
Orders Table       Customers Table
+-------+---------+------------+   +------------+--------------+---------+
| A1    | B1      | C1         |   | E1         | F1           | G1      |
|OrderID|CustomerID|OrderDate  |   |CustomerID  |CustomerName  |Country  |
+-------+---------+------------+   +------------+--------------+---------+
| A2    | B2      | C2         |   | E2         | F2           | G2      |
|1001   | C01     | 2024-01-10 |   | C01        | Alice        | USA     |
| A3    | B3      | C3         |   | E3         | F3           | G3      |
|1002   | C02     | 2024-01-12 |   | C02        | Bob          | Canada  |
| A4    | B4      | C4         |   | E4         | F4           | G4      |
|1003   | C03     | 2024-01-15 |   | C04        | Diana        | UK      |
+-------+---------+------------+   +------------+--------------+---------+

Arrows: Orders.CustomerID (B2:B4) join to Customers.CustomerID (E2:E4)
Shows the two tables side by side with CustomerID columns highlighted as join keys.
Result
+---------+------------+------------+--------------+---------+
|OrderID  |CustomerID  |OrderDate   |CustomerName  |Country  |
+---------+------------+------------+--------------+---------+
|1001     |C01         |2024-01-10  |Alice         |USA      |
|1002     |C02         |2024-01-12  |Bob           |Canada   |
+---------+------------+------------+--------------+---------+
The joined table shows only orders with matching customers. Order 1003 is excluded because C03 is not in Customers.
Sheet Trace Quiz - 3 Questions
Test your understanding
Which CustomerIDs appear in both Orders and Customers tables?
AC01 and C03
BC01 and C02
CC02 and C04
DC03 and C04
Key Result
Joining tables matches rows where key columns are equal and combines their columns into one table.

Practice

(1/5)
1. What is the main purpose of joining tables in Tableau?
easy
A. To export data to Excel
B. To create charts and graphs automatically
C. To filter data within a single table
D. To combine related data from different tables for analysis

Solution

  1. Step 1: Understand the concept of joining tables

    Joining tables means combining data from two or more tables based on a related column.
  2. Step 2: Identify the purpose in Tableau

    Tableau uses joins to bring together related data so you can analyze it as one set.
  3. Final Answer:

    To combine related data from different tables for analysis -> Option D
  4. Quick Check:

    Joining tables = combine related data [OK]
Hint: Joining means combining data from tables [OK]
Common Mistakes:
  • Thinking joins create charts automatically
  • Confusing joins with filtering data
  • Assuming joins export data
2. Which of the following is the correct syntax to create an inner join between two tables Orders and Customers on the CustomerID field in Tableau's custom SQL?
easy
A. SELECT * FROM Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID
B. SELECT * FROM Orders JOIN Customers WHERE Orders.CustomerID = Customers.CustomerID
C. SELECT * FROM Orders LEFT JOIN Customers USING CustomerID
D. SELECT * FROM Orders FULL JOIN Customers ON Orders.CustomerID = Customers.CustomerID

Solution

  1. Step 1: Recall correct SQL join syntax

    The INNER JOIN syntax requires the ON keyword with the join condition.
  2. Step 2: Check each option

    SELECT * FROM Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID uses INNER JOIN with ON and correct condition; others use wrong keywords or join types.
  3. Final Answer:

    SELECT * FROM Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID -> Option A
  4. Quick Check:

    INNER JOIN syntax = SELECT * FROM Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID [OK]
Hint: INNER JOIN needs ON with condition, not WHERE [OK]
Common Mistakes:
  • Using WHERE instead of ON for join condition
  • Confusing join types (LEFT, FULL instead of INNER)
  • Missing ON keyword
3. Given two tables:
Products with ProductID 1,2,3 and Sales with ProductID 2,3,4.
What will be the result count of rows after a left join Products LEFT JOIN Sales ON Products.ProductID = Sales.ProductID?
medium
A. 4 rows
B. 3 rows
C. 2 rows
D. 5 rows

Solution

  1. Step 1: Understand left join behavior

    A left join keeps all rows from the left table (Products) and matches rows from the right (Sales).
  2. Step 2: Count rows from Products

    Products has 3 rows (ProductID 1,2,3), so result will have 3 rows regardless of matches.
  3. Final Answer:

    3 rows -> Option B
  4. Quick Check:

    Left join rows = left table rows [OK]
Hint: Left join keeps all left table rows [OK]
Common Mistakes:
  • Counting all unique keys from both tables
  • Confusing left join with inner join
  • Assuming unmatched rows add extra rows
4. You created a join between Orders and Customers on CustomerID, but your result shows fewer rows than expected. What is the most likely cause?
medium
A. You forgot to add a join condition
B. You used a left join which removes unmatched rows
C. You used an inner join but some CustomerIDs do not match
D. You joined on different field names with no relation

Solution

  1. Step 1: Analyze join type impact

    Inner join returns only matching rows; unmatched rows are excluded.
  2. Step 2: Identify cause of fewer rows

    If some CustomerIDs don't match, inner join reduces row count.
  3. Final Answer:

    You used an inner join but some CustomerIDs do not match -> Option C
  4. Quick Check:

    Inner join excludes unmatched rows [OK]
Hint: Inner join drops unmatched rows, reducing count [OK]
Common Mistakes:
  • Thinking left join removes unmatched rows
  • Ignoring join condition importance
  • Assuming join always increases rows
5. You have three tables: Orders, Customers, and Regions. You want to create a report showing total sales by region. Which join sequence in Tableau is best to ensure all orders are included even if some customers or regions are missing?
hard
A. Orders LEFT JOIN Customers ON CustomerID, then LEFT JOIN Regions ON RegionID
B. Customers INNER JOIN Orders ON CustomerID, then INNER JOIN Regions ON RegionID
C. Regions RIGHT JOIN Customers ON RegionID, then INNER JOIN Orders ON CustomerID
D. Orders INNER JOIN Customers ON CustomerID, then LEFT JOIN Regions ON RegionID

Solution

  1. Step 1: Understand requirement to include all orders

    We want all orders even if customer or region info is missing, so start with Orders as left table.
  2. Step 2: Choose join types to keep all orders

    Using LEFT JOIN from Orders to Customers keeps all orders; then LEFT JOIN to Regions keeps all orders even if region missing.
  3. Final Answer:

    Orders LEFT JOIN Customers ON CustomerID, then LEFT JOIN Regions ON RegionID -> Option A
  4. Quick Check:

    Left joins keep all left table rows [OK]
Hint: Use left joins starting from main table to keep all data [OK]
Common Mistakes:
  • Using inner joins that drop unmatched orders
  • Joining in wrong sequence losing data
  • Using right join confusing left table priority