What is Inner Join in Tableau?
When you're trying to build a complete picture of your business, your data is rarely in one single file. You have customer information in one place, sales records in another, and support tickets somewhere else. To create meaningful reports in Tableau, you need to bring this scattered data together, and a crucial first step in that process is using a join. This article will show you how to use one of the most common and powerful types: the Inner Join.
We’ll walk through what an inner join is, why you’d use it, and exactly how to perform one in Tableau with a clear, step-by-step example. By the end, you'll have the confidence to combine your data sources and start uncovering deeper insights.
What Exactly is a Join in Data Analysis?
Before we pinpoint what makes an inner join special, let's quickly cover the general concept of a join. Imagine you have two separate spreadsheets.
- Spreadsheet 1: Student Roster - It contains a
StudentIDandStudentName. - Spreadsheet 2: Course Grades - It contains a
StudentIDandFinalGrade.
Each spreadsheet is useful on its own, but the real magic happens when you combine them. You want to see which student got which grade. A join is the process of merging these two spreadsheets into a single view using their common column - in this case, StudentID. This allows you to analyze data from both tables as if they were one, letting you connect names to grades.
Tableau supports several types of joins, each serving a different purpose. The inner join is often the default and is one of the most intuitive ones to understand.
Diving Deeper: The Inner Join Explained
The Inner Join selects all rows from two tables as long as the value in their common field exists in both tables. If a value exists in one table but not the other, it gets left out of the combined result. The key phrase to remember is only the matching records.
Think of it as the intersection in a Venn diagram. If one circle represents your customer data and the other represents your sales data, the inner join is the overlapping section in the middle - customers who have actually made a purchase.
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.
A Simple Example Before Hopping into Tableau
Let's use two basic tables to illustrate this: a list of customers and a list of their orders.
Table A: Customers
Table B: Orders
If we perform an inner join between these two tables on the common CustomerID column, the final result would look like this:
Inner Join Result
Notice what's missing:
- Bob Johnson (CustomerID 103) is gone. Why? Because while he exists in the Customers table, he doesn't have any matching orders in the Orders table. An inner join excludes him.
- OrderID 4 (CustomerID 104) is also gone. Why? Because this customer doesn't exist in our Customers table. Perhaps it was a guest checkout or a data entry error, but since there's no match, the inner join drops this record.
How to Create an Inner Join in Tableau: Step-by-Step
Now that the concept is clear, let's put it into practice inside Tableau. The interface makes this process visual and surprisingly straightforward.
Step 1: Connect to Your Data Sources
First, open Tableau and connect to your data. This could be an Excel file, a CSV, a SQL database, or any other supported data source. For this example, let's assume we have two separate CSV files: Customers.csv and Orders.csv, with the same data as our example above.
Step 2: Drag Your Tables to the Join Canvas
Once you connect to your first file (Customers.csv), Tableau will display its fields and a preview of the data.
In the top part of the Data Source page (the canvas area), you'll see a box representing your Customers table. Now, find your second table (Orders.csv) in the left-hand pane and drag it onto the canvas to the right of the Customers box.
When you do this, Tableau will automatically try to create a connection, represented by a line (often called a "noodle") between the two boxes. It will also display a Venn diagram icon on this line.
Step 3: Configure the Join Settings
Click on the Venn diagram icon. This will open the join configuration pane below the tables. This is where you tell Tableau how you want the tables to be joined.
Inside this pane, you'll see a few options:
- Select the Join Type: You'll see several circles representing different join types (Inner, Left, Right, and Full Outer). Since it’s the most common, Tableau often defaults to an Inner Join, which is represented by the shaded intersection of the two circles. If it isn't already selected, click it now.
- Define the Join Clause: Below the join types, you'll see the "Data Source Fields." This is where you specify the common column. Tableau is pretty smart and will often guess correctly. It may have already identified that
CustomerIDfrom theCustomerstable should be joined withCustomerIDfrom theOrderstable. If it's wrong, or if your columns have different names, you can manually select the correct field from each dropdown menu.
Step 4: Review Your Joined Data
As soon as you configure the join, Tableau immediately updates the data grid at the bottom of the screen. This is your chance to verify the result. You'll see columns from both tables are now sitting side-by-side. Scroll through and confirm that the data looks as you expect. Does the number of rows make sense? Do you see both customer and order information on the same row? This is the table that will now be available for you to build your vizzes on the worksheet.
When Should You Use an Inner Join?
The inner join is your go-to tool when you are only interested in a clean, complete dataset where records have a definite link between them. Here are a few common scenarios where an inner join is the best choice:
- Analyzing Active Customers: You want to analyze sales, but only for customers who have actually made a purchase. Using an inner join ensures your analysis isn't skewed by a large number of prospective customers who haven't bought anything yet.
- Linking Products to Sales: You want to see performance metrics for products that have sold. An inner join between a
Productstable and aSalestable will exclude any products sitting on the shelf with zero sales. - Combining Employee and Project Data: You want to analyze project hours, but only for active employees listed in your HR system. An inner join between the
Projectstimesheet table and theEmployeestable will filter out any records logged by former employees or temporary contractors not in the main directory.
Inner Join vs. Other Common Joins in Tableau
To really appreciate the functionality of an inner join, it's helpful to see how it compares to the other primary join types.
Using our previous customer and order data:
Left Join
A Left Join would keep all records from the left table (Customers) and only the matching records from the right table (Orders). In this case, Bob Johnson (CustomerID 103) would appear in the final dataset. However, for columns coming from the Orders table (like OrderID and Amount), his values would be NULL, because he has no orders. This is great when you want to see a full list of customers and identify who hasn't ordered yet.
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.
Right Join
A Right Join is the reverse. It keeps all records from the right table (Orders) and only matching ones from the left table (Customers). In our example, Order 4 (CustomerID 104) would be included, but its CustomerName and City fields would be NULL since that customer isn't in our Customers table. This can be useful for spotting "orphan" records in your data, like sales that aren't tied to a known customer.
Full Outer Join
A Full Outer Join keeps all records from both tables, regardless of whether there is a match. Both Bob Johnson and Order 4 would appear in the results, with NULL values where data is missing. This is useful when you need a comprehensive view of everything, matches and mismatches alike, from both of your datasets.
The choice of join always depends on the specific question you're trying to answer. The inner join answers the question: "What data exists in both of my tables?"
Final Thoughts
Understanding and using the inner join is an important skill for anyone using Tableau. It's the most common method for securely combining related data sources, allowing you to create a complete and accurate foundation for your analysis. By telling Tableau to only keep records that exist in all your source tables, you ensure that every row of data is sound before you even start building a chart.
Connecting two tables in Tableau is straightforward, but what happens when your data is scattered across a dozen different marketing and sales platforms like Google Analytics, Shopify, Salesforce, and Facebook Ads? Manually gathering, joining, and centralizing that data can take hours. At Graphed, we connect directly to these platforms to make the process instantaneous. Instead of manually architecting joins in Tableau, you can simply ask, "compare revenue from Facebook Ads and Google Ads for each campaign," and get an interactive, real-time dashboard in seconds. We handle all the data connections, so you can focus on finding insights, not wrangling data.
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.