Questions about Relationships, the Data Model, and Data Sources
These are some of the questions we've heard related to data modeling and relationships in Tableau. If you have a question that isn't in this list, please share it with us by clicking the blue Send feedback icon in the bottom right corner of this Help page, (click Yes or No, add your question in the Comment field, and then click Send).
Is a relationship just a different name for a join?
Relationships are a dynamic, flexible way to combine data from multiple tables for analysis. A relationship describes how two independent, logical tables relate to each other, but does not merge the tables together. When a relationship is created between tables, the tables remain separate (normalized), maintaining their native level of detail and domains. You can use relationships to create multi-fact data models.
You can’t set a join type for relationships. Relationships defer joins to the time and context of analysis. Tableau automatically selects what join types should be used based on the current fields in use in the viz. During analysis, Tableau adjusts join types intelligently and preserves the native level of detail in your data. You can see aggregations at the level of detail of the fields in your viz rather than having to think about the underlying joins.
Relationships can be many-to-many and support full outer joins. You don't need to use LOD expressions such as FIXED to deduplicate data in related tables.
Learn more: For related information on combining data using relationships, also see these topics and blog posts:
- Relate Your Data
- How Relationships Differ from Joins
- Use Relationships for Multi-table Data Analysis
- Don’t Be Scared of Relationships
- Relationships, part 1: Introducing new data modeling in Tableau(Link opens in a new window)
- Relationships, part 2: Tips and tricks(Link opens in a new window)
- Relationships, part 3: Asking questions across multiple related tables(Link opens in a new window)
Can I use joins between logical tables?
You must use relationships between logical tables. You can only use joins between physical tables contained in a logical table. Double-click a logical table to open it.
We recommend using relationships as your first approach to combining your data because it makes your data preparation and analysis easier and more intuitive. Use joins only when you absolutely need to. Situations where you might still use joins include when you want to:
- Continue to use a data source from a pre-2020.2 version to Tableau that you have upgraded to 2020.2
- Use row-level security
- Explicitly use a specific join type
- Use a data model that supports shared dimensions
Where did joins go? Can I still combine table data using joins?
Joins are still an option for combining your data. You just need to open a logical table to work with joins (double-click a logical table to open it). Tables that you join get merged into a single logical table.
Are relationships like blends? When should I use a blend?
While both relationships and blends support analysis at different levels of detail, they have distinct differences. If you want to combine data from published data sources, blends are currently your only option.
You might also choose to use blends when the fields used to join two tables are dependent on the worksheet.
Blends only support left joins, while relationships support full outer joins. Blends can be customized on a per-sheet basis.
Data sources, data model, and connections
How have data sources changed?
In versions before 2020.2, tables that you combined in the Data Source page using joins and unions made up the data model in a data source. The data was merged into a single, flat table.
In Tableau 2020.2, a new logical layer has been added to Tableau's data model. The logical layer and relationships expand your options for bringing the data you need into Tableau. You can now create normalized data sources with multiple tables at different levels of detail. Related tables aren't merged; they remain distinct. Using relationships makes creating and analyzing data across multiple tables more flexible and more intuitive.
You can still create single-table data sources in Tableau. You can build a logical table using a combination of joins, unions, custom SQL, and so on. The behavior of single-table analysis in Tableau has not changed. Analysis over a single logical table that contains a mixture of dimensions and measures works just as in Tableau pre-2020.2. When you upgrade a workbook or data source to 2020.2, will contain a single logical table that represents your pre-2020.2 data source. It will work the same as it did before 2020.2.
What are logical tables and physical tables?
Data sources in 2020.2 use a data model that has two layers: a logical layer where you can relate tables, and a physical layer where tables can be joined or unioned. Tables that you drag to the logical layer use relationships and are called logical tables. Every logical table can contain one more physical tables in the physical layer.
For more information, see The Tableau Data Model.
Can relationships exist between tables from different connections?
Do all connection types support logical tables and relationships?
Most relational connection types are completely supported. Cubes, SAP HANA (with OLAP attribute), JSON, and Google Analytics are limited to a single logical table in 20.2. Stored procedures can only be used within a single logical table.
Published data sources can't be related to each other. You also can't edit published data sources.
- Cube databases do not support the new logical layer. Connecting to a cube offers the same experience as pre-2020.2.
- Stored Procedures: Don't support federation, relationships, or joins. They are represented in a single logical table, and don't allow opening the Join/Union canvas (physical layer).
- Splunk: Doesn't support left joins (and therefore relating logical tables).
- JSON: Doesn't support federation, custom SQL, joins, or relationships (only unions).
- Datasources that do not support LOD calcs. For more information, see Data Source Constraints for Level of Detail Expressions.
- Salesforce and WDC Standard Connections: These are represented as joined tables within a logical table. Adding them is currently only supported for single logical table data sources. Standard connections cannot join to an existing table.
- SAP HANA: Doesn't support relating logical tables when the connection has the OLAP attribute set.
What types of data models are supported?
Is there a classic view of the Data Source page that I can use?
The physical layer of the Data Source page canvas is basically the "classic view" of the Data Source page in previous versions of Tableau.
The default view of Data Source canvas is the logical layer starting in 2020.2. You must double-click a logical table in the Data Source page canvas to go to the physical layer of the canvas.
How do I create a single-table data source?
Drag a single table into the canvas (logical layer) of the Data Source page. In the worksheet, use the fields from that table in the Data pane for analysis.
You can add more data inside the single, logical table by double-clicking the table. This opens the physical layer of the Data Source page canvas. If you need to use joins or unions, you can drag the tables you want to join or union into the physical layer canvas. The physical tables are merged into their single, logical table.
This example shows the Book table in the Relationships canvas (logical layer) of the data source. Double-clicking the Book logical table opens the Join/Union canvas (physical layer). The joins merge the Award and Info tables with the Book table.
Has row-level security changed?
Row-level security works the same in 2020.2.
How do I use custom SQL in the new data model?
Double-click the New Custom SQL option in the left pane of the Data Source page (as before). The custom SQL will be contained by a single logical table.
What happens to my older data sources when I open them in 2020.2 and later versions?
The data is migrated without changes and you can continue to use the workbook as you did before.
When you open a pre-2020.2 workbook or data source in a 2020.2 version of Tableau, your data source will appear as a single logical table in the canvas. If your data source contained only a single table, the name of that table is used. If your data source contained multiple joined or unioned tables, the single logical table is displayed with the name "Migrated Data". You can rename the Migrated Data table.
Your original, denormalized data may have been originally built from one or more tables using joins and unions. When you open the data source in Tableau 2020.2, Tableau migrates the denormalized data model to a single logical table in the new data model to ensure that your data and workbooks are migrated without changes.
To see the physical tables that make up the single logical table, double-click that logical table to open it in the physical layer. You will see its underlying physical tables, including joins and unions.
Do I need to change my migrated data source to use relationships instead of joins?
If you have existing multi-table data sources defined using physical layer joins, they will still work as they did before. You don't have to change your data source. You can relate logical tables to your migrated table, but you can't downgrade logical tables.
You might consider changing you data source to use relationships instead of joins if you want to add more tables to your data model. This will require you to remove tables from the physical layer, and then add them to the logical layer.
How do I view or edit the data model on the web?
Your workbook must use an embedded data source for you to be able to edit relationships and performance options in the Data Source page.
You cannot edit the data model of a published data source on the web or in Tableau Desktop.
Can I use a data source on Tableau Server or Tableau Online (version 2020.2 or later) in a previous version of Tableau Desktop (version 2020.1 or earlier)?
Starting with version 2020.2, we recommend using the same version of Tableau Desktop with Tableau Server or Tableau Online. You can’t use a data source or workbook with multiple logical tables from Tableau Server or Tableau Online in Tableau Desktop version 2020.1 or earlier.
If you attempt to open a published data source from Tableau Server or Tableau Online version 2020.2 or later in a previous version of of Tableau Desktop, any logical tables that were related to the root table in the data source will be removed. Only the root table (the first table added to that data source model) will remain.
If you attempt to use a local data source in a previous version of Tableau:
- Tableau displays a warning that the data source is from a newer version of Tableau that isn't compatible with the previous version.
- In the Data pane in a Tableau Desktop worksheet, Tableau displays errors (red exclamation points) next to affected fields if you attempt to open the newer data source.
- On the Data Source page, only the root table will remain in the data source.
If you attempt to use a published data source in a previous version of Tableau:
- Tableau displays a warning that the data source is from a newer version of Tableau that isn't compatible with the previous version.
- In the Data pane in a Tableau Desktop worksheet, Tableau displays an error (red exclamation point) next to the selected data source and a message that the connection needs to be updated. Click Show Details for more information about the error.
Can published data sources be related to each other?
No. Also, you can't edit or view the data model for a published data source.
If you want to combine data from published data sources, blends are currently your only option.
How do extracts work with related logical tables?
Extract data is now stored based on logical tables (replaces the Single Table option) or physical tables (replaces the Multiple Tables option). For more information, see Create an extract.
If I need to downgrade from 2020.2 to a previous version, what happens to relationships between logical tables?
If you downgrade a 2020.2 workbook to a previous version of Tableau, any logical tables that were related to the root table in the model will be removed from the data source. Only the root table (the first table added to that model) will remain.
All sheets in the workbook used fields from logical tables (non-root) become invalid, because their tables and fields have been removed from the data model.
Downgrading works best for workbooks that contain single-table data sources.
How does the new data model work with cubes?
Cubes work the same as in previous versions of Tableau. A cube data source will appear as a single-table data source, just like it is today. You can't create relationships using cube data.
Interaction with other Tableau features and products
Does Explain Data work with multi-table data sources that use relationships?
In 2020.3, you can use Explain Data with data sources that contain multiple, related tables. Cardinality and Referential Integrity settings for relationships must be set up correctly for Explain Data to analyze multi-table, related data.
In 2020.2, you can use Explain Data with a single-table data sources only. Your data source can have a single, logical table that is defined by one or more physical tables.
Does Ask Data work with multi-table data sources?
Ask Data fully supports multi-table, normalized data sources.
How do new data modeling capabilities affect using Tableau Bridge?
You will need to update to the latest version of Tableau Bridge for full compatibility with 2020.2 data modeling functionality.
When should I use Tableau Prep vs. authoring in Tableau Desktop, Tableau Online, or Tableau Server to create a data source?
Tableau Prep cleans data, and creates flows, extracts, and published data sources that contain physical tables.
In Tableau Desktop, and in Tableau Online and Tableau Server web authoring, you can create data sources that use normalized data models. These data models can be made of logical tables and physical tables, and your data sources can be saved as live data sources or as extracts.
Only logical tables can be related. Physical tables can be joined and unioned.
Analysis with multi-table data sources
Does analysis work differently with multi-table data sources that use relationships?
Using a data source that has multiple, related tables affects how analysis works in Tableau. Because multiple, related tables have independent domains and retain their native level of detail, when you drag fields into the view:
- Data is queried at its natural level of detail.
- Only data that is relevant to a viz is queried.
- The relationships between the tables affect the results of the query. The flow of building a viz can vary depending on how tables of fields are related to each other in the data model, or if they aren't related directly.
For more information, see Don’t Be Scared of Relationships(Link opens in a new window), How Analysis Works for Multi-table Data Sources that Use Relationships, Unmatched values behavior for dimensions that might surprise you, and Troubleshooting multi-table analysis.
Do LODs work the same with the new data model? When should I use an LOD?
LOD expressions and calculations work the same. Since Tableau now understands the level of detail (LOD) of your input tables, you shouldn't need to use LOD calculations to remove unwanted duplication due to joins.
You may still want to use LOD calcs to:
- Handle unwanted duplication in your source tables.
- Compute multi-level aggregations (e.g. an average over a sum)
- To do cohort analysis (e.g. to compute the first order date for each customer)
If the dimensionality of an LOD calculation includes fields from a single table, that LOD calculation will appear in its owning table in the Data pane.
How can I tell if I combined my data correctly with relationships?
You have several options for validating your data model for analysis. As you create the model for your data source, we recommend going to a sheet, selecting that data source, and then building a viz to explore record counts, expected data, unmatched values, nulls, or repeated measure values. Try working with fields across different tables to ensure everything looks how you expect it to.
What to look for:
- Are your relationships in the data model using the correct matching fields for their tables?
- Would adding multiple matching field pairs make the relationship more accurate?
- What are the results of dragging different dimensions and measures into the view?
- Are you seeing the expected number of rows?
- If you changed any of the Performance Options settings from the default settings, are the values that you are seeing in the viz what you would expect? If they aren't, you might want to check the settings, or reset to the default.
Options for validating relationships and the data model:
- Every table includes a count of its records, as a field named TableName(Count), at the level of detail for that table. To see the count for a table, drag its Count field into the view. To see the count for all tables, select the Count field for each table in the Data pane, and then click the Text Table in Show Me.
- Click View Data in the Data pane to see the number of rows and data per table. Also, before you start creating relationships, viewing the data from the data source before or during analysis can be useful to give you a sense of the scope of each table. For more information, see View Underlying Data.
- Drag dimensions onto rows to see the Number of Rows in the status bar. To see unmatched values, click the Analysis menu, and then select Table Layout > Show Empty Rows or Show Empty Columns. You can also drag different measures to the view, such as <YourTable>(Count) from one of the tables represented in your viz. This ensures that you will see all values of the dimensions from that table.
Can I see the queries that Tableau is generating for relationships?
If you would like to see the queries that are being generated for relationships, you can use the Performance Recorder in Tableau Desktop.
- Click the Help menu, and then select Settings and Performance > Start Performance Recording.
- Drag fields into the view to build your viz.
- Click the Help menu, and then select Settings and Performance > Stop Performance Recording. The Performance Recording workbook will automatically open.
- In the Performance Summary dashboard, under Events Sorted By Time, click an "Executing Query" bar and view the query below.
Another more advanced option is to use the Tableau Log Viewer(Link opens in a new window) on GitHub. You can filter on a specific keyword using
end-protocol.query. For more information, start with the Tableau Log Viewer wiki page(Link opens in a new window) in GitHub.
Changes to different parts of the interface
How has the Data Source page changed? The data grid? View Data? The Data pane?
The Data Source page (canvas, data grid), View Data, and Data pane have been updated to support a multi-table analysis experience. Your first view of the data source canvas is now the logical layer, which is where you define relationships. The data grid shows row data for each table’s level of detail. In the Data pane, fields and calculated fields are automatically organized by their native level of detail. The View Data window displays row level data at the correct level of detail, without replication, to make validation easier. Get row counts for each table in the Data pane using Table(Count) fields.
How does Count of Table work versus Number of Records?
You will no longer see the Number of Records field in data sources that contain logical tables. Every table includes a count of its records, as a field named TableName(Count), at the level of detail for that table. In the previous example you can see Addresses(Count), Customers(Count), and LineItems(Count).
COUNT of table = SUM of Number of Records per table. You can't build calculations on top of a table's Count field. Count is aggregate-only.
Note: You might see the Number of Records field in the Data pane if you open a pre-2020.2 workbook that used Number of Records in a view.
Where are sets, groups, and calculated fields shown?
If the field belongs to a table, it is listed under the table. If it doesn’t, it is listed in the general area at the bottom of the Data pane.
Calculated fields are listed with their originating field, if all of their input fields come from the same table.
Sets and groups are displayed under the table with their originating field.
Fields that don't belong to a specific table are displayed in the general area below the tables. These include: aggregated calculations, calculations that use fields from multiple tables, Measure Names, and Measure Values.