What is the Default Join in Tableau?
When you first start connecting data in Tableau, it almost feels like magic. You drag a couple of tables onto the canvas, and Tableau instantly connects them, presenting a unified view of your data. But what is it actually doing under the hood? This article breaks down exactly what the default join in Tableau is, why it's the default, and when you need to change it to get the right answers from your data.
First, a Quick Refresher: What's a Join?
Before we get into the default, let's quickly touch on what a "join" even is. In the simplest terms, a join is a way to combine rows from two or more tables based on a related column between them. Think of it like combining two different spreadsheets into one master sheet so you can analyze them together.
For example, you might have one table with customer information (CustomerID, Name, City) and another table with sales transactions (OrderID, SaleAmount, CustomerID). To figure out which city your biggest sales are coming from, you need to bring these two tables together. A join uses the common column - in this case, CustomerID - to link the sales data with the customer data.
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.
The Default Join in Tableau: Inner Join
When you drag two tables onto the data source canvas in Tableau, the default join type it creates is an inner join.
An inner join returns only the matching rows from both tables. Visualize it as the overlapping section of a Venn diagram. If a row in the first table has a matching value in the common column of the second table, it will be included in the final data set. If a row in either table doesn't have a match in the other, it's left out entirely.
In our example, an inner join between the Customers table and the Orders table would show you a list of only the customers who have placed an order. Any customers in your database who have never made a purchase would be excluded, as would any orders that somehow don't have a valid customer ID associated with them. The result is a clean data set where every row is complete and has a direct match.
Why Is Inner Join the Default?
Tableau chose the inner join as the default for very practical reasons. It's the most commonly used join and is often the "safest" choice when you're first exploring your data.
- Data Integrity: It ensures that you're only looking at complete, connected records. This prevents issues like having sales data with no associated customer information, which could skew your analysis right from the start.
- Performance: Inner joins typically result in a smaller, more manageable data set than other join types. When working with massive databases, this can lead to faster processing and more responsive dashboards.
- Clarity: It provides the clearest and most direct link between two tables. For many common business questions, like "What products did our existing customers buy?", the inner join gives you exactly the information you need without extra noise.
A Step-by-Step Look at How Tableau Performs the Default Join
Seeing it happen is the best way to understand it. Let's walk through the process using a sample dataset.
- Connect to Your Data: Open Tableau and connect to your data source, like an Excel file or a database. For this example, let's assume we're using a file with two tables:
OrdersandReturns. - Drag Your First Table: Drag the
Orderstable from the left pane onto the canvas. Tableau will display its contents. - Drag Your Second Table: Now, drag the
Returnstable onto the canvas next to theOrderstable. You'll see a line, often called a "noodle," appear, visually connecting the two tables. - Observe the Default Join: Click on the join relationship icon (the overlapping circles) that appears on the noodle. A configuration box will pop up. Look closely at the Venn diagram icon - the center, overlapping section will be shaded blue. This signifies that an Inner Join has been automatically created.
Tableau is also smart enough to guess the join clause - the column that links the tables. In this case, it correctly identifies that both tables have an Order ID field and uses that for the join. The data grid below will update in real-time to show you the result: a table that only includes orders that were returned.
When Should You Switch from the Default?
The inner join is a great starting point, but it can't answer every question. Sometimes, you need to see the non-matching records, too. This is where other join types become incredibly important.
Here are the primary scenarios where you'll want to change the join type.
Situation 1: You Need ALL Records from One Table (Left or Right Joins)
What if your question isn't "Which orders were returned?" but rather, "What percentage of our total orders were returned?" To answer that, you need to see all orders, not just the ones that have a match in the Returns table.
Use a Left Join
A left join returns all the rows from the left table and only the matching rows from the right table. If a row from the left table has no match in the right table, it still appears in the result, but the columns from the right table will show up as null.
- Example Use Case: To answer our question above, you would place the
Orderstable on the left and theReturnstable on the right. Then, change the join type to a Left Join. This gives you a list of every single order. The returned orders will have details from theReturnstable, while the non-returned ones will havenullvalues in those columns. Now you can easily calculate a return rate! - Another Example: Finding inactive customers. A left join on your
Customerstable with theOrderstable will show all customers, including those withnullorder data - the ones who haven't bought anything.
Use a Right Join
A right join is simply the inverse. It returns all the rows from the right table and only the matching rows from the left table. It's functionally the same as a left join, it just depends on which table you placed on which side.
Situation 2: You Need ALL Records from BOTH Tables (Full Outer Join)
A full outer join takes everything. It returns all the records from both tables, combining them where they match and creating new rows with nulls where they don't.
- Example Use Case: This is powerful for data auditing. Imagine you want to find any inconsistencies in your data. A full outer join on
CustomersandOrderscould reveal both customers who have never ordered (records withnullorder details) and orders that are missing a valid customer ID (records withnullcustomer details). This helps you identify orphaned records and clean up your database.
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.
How to Easily Change the Join Type in Tableau
Changing the join type is straightforward. Follow the steps from before to get to the join configuration box:
- On the Data Source page, click on the join relationship icon (the overlapping circles).
- In the configuration box, you'll see the four join type options: Inner, Left, Right, and Full Outer.
- Simply click the radio button for the join type you need. The data grid at the bottom will immediately refresh to show you the new results.
- While you're here, you can also change the join clause. If Tableau guessed the wrong fields to join on, you can select the correct fields from the dropdowns at the bottom of the pop-up.
Helpful Tips for Working with Joins in Tableau
- Know Your Data: Before you even open Tableau, take a minute to look at your tables. Understand what each one contains and what the logical relationship between them is. This will make choosing the right join type much more intuitive.
- Check Your Row Count: After you create a join, glance at the row count. If you did an inner join, the number of rows should be less than or equal to the number in your largest initial table. If you're using a left join, it should be at least the same number of rows as your left table. An unexpectedly high number of rows might indicate a "fan-out" problem, where one record in one table matches multiple records in the other, creating duplicates.
- Consider Tableau's "Relationships": In newer versions of Tableau, the default way to connect tables on the canvas is with "Relationships" (the noodle logic). Relationships are more flexible than traditional joins because they don't physically merge the tables into one static table immediately. They keep the tables separate and bring in data as needed for a specific visualization. Joins still happen in the background, but Tableau manages them more intelligently. You can always double-click a "noodle" (a logical table) to open the classic manual join view if you need that level of control.
Final Thoughts
Wrapping your head around joins is a fundamental step in mastering data analysis. Tableau's choice of an inner join as the default is a smart one, as it provides a clean and reliable starting point. But true data exploration begins when you know how and when to switch to left, right, or full outer joins to ask more nuanced questions of your data.
As insightful as working with joins can be, it's also a very manual, technical step. Working across tools like Google Analytics, Shopify, and Salesforce often means exporting CSVs and then struggling to join them. At Graphed, we built a way to skip that frustration. Instead of manually configuring spreadsheet joins, you can securely connect all your sources in just a few clicks. From there, you just ask questions in plain English - like "Compare my website traffic from last month to my sales in Shopify" - and get live dashboards instantly. We found it’s the fastest way to get to the actual insights without getting stuck on technical setup. Why not give Graphed a try?
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.