How to Join Tables in Tableau
Joining tables is one of the most essential skills you need to unlock the full power of Tableau. It's how you move beyond analyzing a single spreadsheet and start combining different datasets to see the complete story of your business. This tutorial will walk you through exactly how to join tables in Tableau, explaining what joins are, which type to use, and how to troubleshoot common issues.
What are Joins, and Why Do You Need Them?
In simple terms, a join is a way to combine two or more tables of data based on a common field they share. Think of it like this: you have one table with customer information (name, email, city) and another table with order information (order ID, product name, customer ID). Neither table tells the full story on its own.
If you look only at the customer table, you don't know what they bought. If you look only at the order table, you only have a customer ID, not their name or location. By joining these two tables using the Customer ID field - the one piece of information they have in common - you can create a single 'master' view that shows you which customers bought which products.
You need joins to answer critical business questions like:
- Which marketing campaigns generated the most sales? (Join campaign data with sales data)
- What demographics are common among your best customers? (Join customer data with revenue data)
- How are your sales reps performing against their quotas? (Join sales data with HR/quota data)
Without joins, your data lives in isolated silos. With joins, you can connect the dots and uncover a much richer layer of insights.
Understanding the Four Types of Joins in Tableau
When you join two tables, you have to tell Tableau how to combine them. This is where the four main join types come in. To explain them, let's use a simple example with two tables: Managers and Projects.
Table 1: Managers
- Manager ID: 1, Name: Sarah
- Manager ID: 2, Name: Ben
- Manager ID: 3, Name: Chloe
Table 2: Projects
- Project: Website Redesign, Manager ID: 1
- Project: Q4 Campaign, Manager ID: 2
- Project: New App Launch, Manager ID: 4
Notice the common field is Manager ID. Now let's see how each join works.
1. Inner Join
An Inner Join only returns records that have a match in both tables. It's the most common and restrictive type of join. Think of it as the intersection in a Venn diagram.
Result:
- Manager ID: 1, Name: Sarah, Project: Website Redesign
- Manager ID: 2, Name: Ben, Project: Q4 Campaign
Why? Sarah (ID 1) and Ben (ID 2) appear in both tables, so their data is combined and included. Chloe (ID 3) is excluded because she doesn't have an assigned project in the Projects table. The "New App Launch" project (ID 4) is excluded because its assigned manager isn't listed in the Managers table.
Free PDF · the crash course
AI Agents for Marketing Crash Course
Learn how to deploy AI marketing agents across your go-to-market — the best tools, prompts, and workflows to turn your data into autonomous execution without writing code.
2. Left Join
A Left Join returns all records from the left table and only the matching records from the right table. If a record from the left table has no match in the right table, its corresponding fields from the right table will be filled with NULL (empty) values.
Result (if Managers is the left table):
- Manager ID: 1, Name: Sarah, Project: Website Redesign
- Manager ID: 2, Name: Ben, Project: Q4 Campaign
- Manager ID: 3, Name: Chloe, Project: NULL
Why? All three managers from the left table are included. Chloe is still in the result, but since she has no matching project, her project field is empty (NULL). This is perfect for when you want to see everything from one primary table, like "show me a list of all managers, and if they have a project, show me that too."
3. Right Join
A Right Join is the opposite of a Left Join. It returns all records from the right table and only the matching records from the left. Non-matching records from the left table will have NULL values.
Result (if Projects is the right table):
- Manager ID: 1, Name: Sarah, Project: Website Redesign
- Manager ID: 2, Name: Ben, Project: Q4 Campaign
- Manager ID: 4, Name: NULL, Project: New App Launch
Why? All three projects are included. The "New App Launch" project is now in the result, but since its manager (ID 4) isn't in our Managers list, the name field is empty (NULL). This is useful for finding things like "projects without an assigned manager."
4. Full Outer Join
A Full Outer Join returns all records from both tables, whether they have a match or not. If a match exists, the information is combined. If not, missing fields are filled with NULL.
Result:
- Manager ID: 1, Name: Sarah, Project: Website Redesign
- Manager ID: 2, Name: Ben, Project: Q4 Campaign
- Manager ID: 3, Name: Chloe, Project: NULL
- Manager ID: 4, Name: NULL, Project: New App Launch
Why? It shows you everything from everywhere. You see all managers and all projects. Chloe has no project, and the "New App Launch" has no known manager, but everyone and everything is accounted for. This is often used for data validation to ensure no records are accidentally being dropped.
Step-by-Step: How to Create a Join in Tableau
Now let's walk through the exact steps of performing a join in the Tableau interface.
Step 1: Connect to Your Data
Open Tableau and in the Connect pane, choose your data source (e.g., Microsoft Excel, Google Sheets, SQL Server). For this example, let's assume you're connecting to an Excel file with multiple sheets (tables).
Step 2: Drag Your First Table to the Canvas
After connecting, Tableau will take you to the Data Source page. You'll see the tables (or sheets) from your data source listed on the left. Simply drag the first table you want to use into the main area labeled "Drag tables here." This will be considered your left table.
Step 3: Drag Your Second Table to Join It
Now, drag your second table onto the canvas. As you drag it near the first table, Tableau will automatically try to create a connection, which looks like a Venn diagram icon between the two tables. This is your join condition. Release the mouse to create the join.
Step 4: Configure the Join Type and Fields
Click on the join icon (the overlapping circles) to open the join configuration pane.
- Select a Join Type: You will see the four icons for Inner, Left, Right, and Full Outer joins. Click the one that suits your needs. As you click each one, you'll see the data preview grid below update to reflect the results.
- Define the Join Clause: Tableau is smart and will try to guess which fields to use for the join. This is called the "join clause." In the "Data Source" section of the pane, you'll see dropdown menus for each table. Make sure the correct common field (like
Manager IDin our example) is selected for each table. If Tableau guessed wrong, just click the dropdown and choose the right field. If you need to join on multiple fields (e.g., matching on bothRegionandDate), you can simply click "Add new join clause."
Once you are happy with the data preview, you have successfully joined your tables! You can now go to a worksheet and start building visualizations with fields from both original tables as if they were one.
Troubleshooting Common Join Problems
Joining data doesn't always go smoothly. Here are a few common issues and how to fix them.
Problem: I have duplicate rows after joining.
This is very common and usually happens in a one-to-many relationship. For example, if you join a Customers table to an Orders table, and one customer has placed five orders, that customer's information will be repeated five times in your joined data - once for each order. This isn't necessarily an error, but it can inflate your numbers if you're not careful. For instance, summing a Revenue field might be fine, but counting rows would be misleading. Be aware of your table relationships to understand why this happens.
Problem: Tableau says my fields are mismatched.
You can only join fields that have the same data type. If your Customer ID is stored as a number in one table and as text (a string) in another, Tableau can't join them. You'll need to go back to the Data Source page, find the mismatched field, click the data type icon (like # for number or Abc for string) and change one to match the other.
Free PDF · the crash course
AI Agents for Marketing Crash Course
Learn how to deploy AI marketing agents across your go-to-market — the best tools, prompts, and workflows to turn your data into autonomous execution without writing code.
Problem: My data is missing or I see a lot of NULLs.
This is almost always a join-type issue. If you used an Inner Join, you might be unintentionally filtering out a lot of data that doesn't have a perfect match. Try switching to a Left Join or Right Join to see if your missing data appears. The NULLs that show up will tell you exactly which rows don't have a corresponding match in the other table.
A Quick Note on Joins vs. Relationships (The Noodle)
If you're using a newer version of Tableau, you might notice that when you drag a second table to the canvas, it creates an orange line (lovingly called a "noodle") instead of the Venn diagram icon. This is a feature called Relationships.
Relationships are Tableau's more modern and flexible way to combine data. They don't merge the tables into a single flat table upfront like a traditional join. Instead, they keep the tables separate and form a join intelligently in the background based on the fields you use in your visualization. For many use cases, this is a better and safer option, as it helps prevent row duplication issues automatically.
You can still create classic joins, however. To do so, double-click on the first table on the canvas. This will open the "physical layer," where you can drag in other tables and create joins with the traditional Venn diagram interface just as described above.
Final Thoughts
Learning how to properly join tables is a fundamental step in mastering Tableau. It's the key to transforming separate, single-purpose datasets into a comprehensive source of truth that allows for deeper, more meaningful analysis. By understanding the four join types and knowing how to configure them, you can start answering bigger and better questions about your business.
Manually setting up joins takes practice, and stitching together data from sources like Google Analytics, Shopify, and your CRM can quickly become a repetitive headache. At Graphed you can automate this entire process. You just connect your sources once, then tell our AI what you want to see in simple English - like "Compare my Facebook Ad spend to my Shopify sales by campaign." Our tool instantly handles the joins in the background and builds a live dashboard for you, saving you from having to figure out which join types and clauses to use.
Related Articles
How to Create Facebook Ads API for Claude Code
Create a Meta Marketing API access token that never expires, using a system user, so Claude Code can pull Facebook ad reports and manage campaigns.
ClickHouse vs Postgres: When to Switch to Columnar
Comparing ClickHouse vs PostgreSQL means matching storage architecture to workload. Row storage wins for transactions. Columnar wins for scan-heavy analytics.
Google Ads for Orthodontists: Get More Booked Consults
Most orthodontic Google Ads campaigns waste money on low-intent searches. The problem is structure, not the platform.