Tableau Lesson 12 – Joins | Dataplexa
Section II — Lesson 12

Joins in Tableau

A join combines columns from two tables by matching rows on a shared key field. Knowing which join type to use — and when something goes wrong — is essential for working with any real-world multi-table dataset.

Why You Need Joins

Most real datasets live across multiple tables. In Superstore, orders are stored in the Orders sheet, return information is in the Returns sheet, and regional manager assignments are in the People sheet. If you want a chart that shows Sales alongside whether each order was returned and who managed that region, you need to bring all three tables together — and that requires joins.

Joins happen on the Data Source canvas — the same screen where you drag tables. Once a join is configured there, every worksheet in the workbook sees the combined result as a single flat table.

The Four Join Types

Tableau supports four standard SQL join types. Each one decides differently which rows from each table to keep in the result.

Inner Join

Returns only rows where the key field matches in both tables. Rows that exist in only one table are dropped. This is the default join type in Tableau and the most commonly used. Use it when you only want records that have a match on both sides.

Left Join

Returns all rows from the left table, plus any matching rows from the right table. Where there is no match, the right table columns contain nulls. Use it when you want to keep all records from your primary table regardless of whether they have a match.

Right Join

Returns all rows from the right table, plus any matching rows from the left table. Where there is no match, the left table columns contain nulls. The mirror image of a left join — less commonly used, since you can usually achieve the same result by swapping table positions and using a left join.

Full Outer Join

Returns all rows from both tables. Where there is no match, null fills the missing columns on either side. Use it when you need to see all records from both tables — including those with no match — for a complete audit or gap analysis.

Creating a Join on the Data Source Canvas

Here is how to join the Orders and Returns sheets from the Superstore Excel file:

1
On the Data Source tab, drag Orders onto the canvas. It appears as the first table card. Then drag Returns onto the canvas — placing it to the right of Orders. A join icon (two overlapping circles) appears between them automatically.
2
Click the join icon between the two table cards. A join configuration panel opens below the canvas. Tableau has usually already guessed the join key — check that it says Order ID = Order ID.
3
Click the join type diagram to select the join you want. The diagram shows two circles — click the highlighted area to toggle between Inner, Left, Right, and Full Outer. For Orders + Returns, select Left Join to keep all orders whether or not they were returned.
4
Check the data preview at the bottom. If Returns has a Returned column showing "Yes" for returned orders and null for all others — the join is working correctly. Click Sheet 1 to go to the worksheet.

Join Configuration Mockup

Data Source Canvas — Orders LEFT JOIN Returns
📋 Orders
📋 Returns
Join Configuration
Left
Inner
Right
Full Outer
Orders — Order ID
=
Returns — Order ID
Data Preview — first 4 rows
Order ID Category Sales Returned
CA-2023-001Furniture1,200Yes
CA-2023-002Technology3,500null
TX-2023-041Office Supplies420null
CA-2023-087Furniture890Yes

Common Join Problems and How to Spot Them

Problem Symptom in Tableau Fix
Fan-out (duplicate rows) SUM(Sales) is much higher than expected — often double or triple the correct value Use a Relationship instead of a join, or use COUNTD and LOD expressions to de-duplicate
Wrong join key All right-table columns are null even for records that should match Open the join dialog and verify that the correct field is selected on both sides
Data type mismatch on key No rows match even though the values look identical in both tables Check that both key fields share the same data type — a string "001" will not match an integer 1
Missing rows (too restrictive) SUM(Sales) is lower than expected — some orders have disappeared You may have used an Inner join when a Left join was needed — switch join type

Joins vs Relationships

Since Tableau 2020.2, there is a newer way to combine tables called Relationships. Relationships sit above the canvas level — they connect tables contextually without physically merging rows the way a join does. This prevents the fan-out problem that joins create when one table has multiple matching rows for a single row in another.

Relationships are now Tableau's recommended default approach for combining tables. Joins are still available and still necessary for specific cases — such as combining tables that need to be pre-aggregated before joining, or when connecting to custom SQL. For most standard multi-table setups in this course, Relationships are the better choice. Joins are covered here because they are fundamental SQL knowledge and because some data situations still require them.

📌 Teacher's Note

The fan-out problem is the most dangerous join error because it is invisible. Your chart builds, the numbers look plausible, but every aggregate is wrong — inflated by duplicated rows. Always verify your join result by checking a known total against the source data. For the Superstore dataset, total Sales should be approximately $2.3 million. If a join makes it $4.6 million, you have a fan-out. The quickest check is to drag Number of Records onto a blank canvas — if the count is higher than the row count of your primary table, duplicate rows have been introduced by the join.

Practice Questions

1. You are joining an Orders table to a Returns table and want to keep all orders — including those that were never returned. Which join type should you use?

2. After joining two tables, SUM(Sales) is double the expected value. What is the name of the join problem that causes this symptom?

3. Which join type returns only rows where the key field has a matching value in both tables, dropping all unmatched rows?

Quiz

1. After dragging two tables onto the Data Source canvas, how do you open the join configuration panel to select the join type and key fields?


2. A data analyst needs to compare every record from both a Customers table and an Orders table, including customers who have never ordered and orders with no matching customer. Which join type should they use?


3. What is the main advantage of using Tableau Relationships over Joins when combining tables?


Next up — Lesson 13: Data Blending — combining data from completely separate sources when a join or relationship is not possible.