PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchPower BI’s model feature is called relationships. The “joints” in this title most likely means joins, and confusing the two is a common reason totals look wrong. A relationship tells Power BI how a filter applied to one table should reach another table. It does not merge the tables or create new rows. A join combines columns or rows into a new result.
Predictable models follow a short set of rules: give each fact table one clear grain, connect dimension tables to fact tables with one-to-many relationships, keep filtering in a single direction unless a specific case requires otherwise, and treat bidirectional filtering, many-to-many settings, and inactive relationships as deliberate tools. None of them is a fix for unclear grain or dirty keys.
As an Amazon Associate I earn from qualifying purchases.
Relationships and joins do different jobs
A join produces a new result. In Power BI Desktop you usually build one in Power Query, from the Home tab in the Combine group using Merge queries, or in a SQL statement at the data source. The output has its own row count, and the merged table is what the model then sees. A relationship is narrower. It leaves the tables separate and tells Power BI how a filter on one table should reach another when a visual or measure runs.
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Repair Windows errors before they cause bigger problemsFix Now →Microsoft’s Learn documentation defines the model feature in one sentence: “A model relationship propagates filters applied on the column of one model table to a different model table.” The operative word is propagates. Nothing is copied or merged.
#1 Best Overall
| Question | Join (combining data) | Relationship (model) |
|---|---|---|
| Where it is built | Power Query Merge queries, or the source query | Model view, through Manage relationships |
| What it produces | A new combined table with its own row count | No new table; the tables stay as loaded |
| Effect on row counts | Can multiply or drop rows when the data loads | Source row counts are unchanged; filters decide which rows a measure sees |
| Unmatched keys | Depend on the join type you chose | In standard relationships, fact rows without a dimension match are grouped under (Blank) in visuals. In limited relationships, joins are resolved at query time with inner-join semantics, so unmatched values can drop out |
The distinction matters because a join can change row multiplicity and grain before any measure is written. A relationship changes only how filters reach measures. Authors who merge tables just to make a visual work often end up with inflated totals or missing rows, and the fix is usually in the model shape rather than another merge.
Shape the model before connecting tables
Microsoft recommends star-schema design for Power BI semantic models. Dimension tables supply the attributes you filter and group by, such as product, customer, or calendar. Fact tables supply the values you summarize, such as sales amounts or quantities. On a typical one-to-many relationship, the dimension is the “one” side and the fact table is the “many” side.
The most important decision is the fact grain, meaning what one row in a fact table represents. A Sales table where each row is one order line can be summed by product, date, or customer. If the same table also holds a freight charge stored once per order and repeated on every line, the freight total will be counted once for each line, and any sum over that column will overstate it. Keep one grain per fact table, and move attributes that belong to a different grain into their own table.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
The following illustrative pattern uses the documented roles of dimension and fact tables. It is not a benchmark or a tested model:
| Table | Role | One row represents | Key column |
|---|---|---|---|
| Product | Dimension | One product | ProductKey, unique |
| Calendar | Dimension | One calendar date | DateKey, unique |
| Sales | Fact | One order line | ProductKey and DateKey, repeated across many rows |
Before you connect anything, confirm the following:
Rank #2
- You can complete the sentence “one row in this fact table is one …” and it stays true for every column.
- Each dimension key identifies exactly one dimension row.
- Every fact key you expect to match has a dimension row to match.
- Any table that plays more than one role, such as an order date and a ship date, is identified up front, because it needs an active and an inactive relationship (covered below).
Cardinality: which side must be unique
Cardinality states which side of a relationship must hold unique values. Power BI Desktop offers four options. Auto-detection can suggest one when you create a relationship, but it is a starting guess. Check the keys against the data before accepting it.
| Option in the dialog | Meaning | Typical use | What to verify |
|---|---|---|---|
| Many to one (*:1) | Many rows on one table match one row on the other | Fact table (many) to dimension table (one). The common default and the usual star-schema link | The dimension key is unique |
| One to many (1:*) | The same link, described from the opposite table | Use whichever matches the order in which you selected the tables | Same as above, and confirm which table is the unique side |
| One to one (1:1) | Each key appears once on both sides | Uncommon. Two tables describing the same entity | Both key columns are unique |
| Many to many (*:*) | Duplicate key values are allowed on both sides | Only within a deliberate design (see the many-to-many section) | Whether the duplicates reflect real business logic or a data problem |
Setting up a relationship
Menu labels can shift between Power BI Desktop releases, so the steps below use the labels current at the time of writing (October 2026).
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Clear out junk files and repair common Windows errors3Scan for outdated or missing drivers - takes under a minute- Select the Model view icon in the left navigation bar.
- On the Home tab, select Manage relationships.
- Select New. In the first list, choose the fact table and its key column. In the second list, choose the dimension table and its key column.
- Set Cardinality to Many to one (*:1) for a standard dimension-to-fact link.
- Set Cross filter direction to Single.
- Keep Make this relationship active selected for the primary path. Clear it for a secondary path that a measure will call on purpose.
- Select OK, then Close. In Model view, an active relationship appears as a solid line and an inactive one as a dashed line.
Check keys before you trust cardinality
Two measures catch most key problems. Create them in a card visual with no slicers so the result reflects the whole model:
Duplicate Product Keys = COUNTROWS(Product) - DISTINCTCOUNT(Product[ProductKey])
Unmatched Sales Keys = COUNTROWS(EXCEPT(ALL(Sales[ProductKey]), ALL(Product[ProductKey])))
The first returns the number of extra dimension rows; a value above zero means the “one” side is not unique. The second counts distinct Sales keys with no Product match, including blank keys. Also check that the two columns have the same data type. Select the column in Data view, then use the Data type control on the Column tools tab. A text key that looks like a number, or a key with stray spaces, will fail to match even though it appears correct in a table preview.
Filter direction and bidirectional filtering
A single-direction relationship sends filters from the one side to the many side. On a star schema, a product selected in a slicer narrows the Sales rows for that product, but selecting a sales value does not narrow the Product table. Bidirectional filtering (Both) lets filters travel in both directions.
| Cross filter direction | Where filters travel | Typical use | Main risk |
|---|---|---|---|
| Single | From the one side to the many side (dimension to fact on a star) | The default for star-schema relationships | Some questions need a second path or a measure with an explicit filter |
| Both | In both directions | Specific cases, such as a dimension that must respond to fact-level selections | Slower queries in some models, ambiguous filter paths, and totals that change in ways that are hard to predict |
Microsoft advises using bidirectional relationships only where the scenario calls for them, because they can affect performance and introduce ambiguous filter paths. Before enabling Both, ask whether a measure with an explicit filter or a bridge table expresses the business rule more clearly. If a total becomes correct only after you turn on Both, the grain or the keys are the more likely problem.
Active and inactive paths
Two tables can have more than one relationship, but only one can be active and used by default. A common case is a Sales table with an order date and a ship date, both pointing to a Calendar table. Keep the order-date relationship active, and set the ship-date relationship as inactive. A measure can then use the inactive path on purpose with USERELATIONSHIP:
Ship Sales = CALCULATE([Total Sales], USERELATIONSHIP(Sales[ShipDateKey], Calendar[DateKey]))
USERELATIONSHIP affects only the measure that calls it. Visuals that use other measures continue to follow the active relationship, so a report can show both views side by side. Readers should always know which relationship a given measure uses.
Two other functions adjust filter behavior inside a calculation. CROSSFILTER changes the direction of a relationship, or disables it, for one calculation. The following measure ignores the link from Product to Sales:
Sales Ignoring Product = CALCULATE([Total Sales], CROSSFILTER(Sales[ProductKey], Product[ProductKey], NONE))
TREATAS applies values from one column to another column that has no relationship, which is useful in advanced scenarios. Neither function replaces a sound base model. If you need them throughout a report, the model shape is usually the thing to fix.
Rank #4
Many-to-many designs
The many-to-many option permits duplicate values on both sides of a relationship. It does not repair bad data, and it does not decide what the correct business grain is. Choosing it because a relationship fails to validate usually hides a grain or key problem.
Why direct fact-to-fact many-to-many is discouraged
Microsoft’s many-to-many relationship guidance generally advises against relating two fact tables directly. Visuals then have limited filtering and grouping flexibility, and integrity issues can result in omitted rows. The recommended alternative is a star schema in which dimension tables relate to each fact table through one-to-many relationships.
Bridge table design for a genuine many-to-many business relationship
Some relationships really are many-to-many. A customer can hold several accounts, and an account can be shared by several customers. In that case, use a bridge table with one row for each distinct pair of keys:
- Create Customer and Account dimension tables with unique keys.
- Create a bridge table with CustomerKey and AccountKey columns, one row per distinct pair.
- Relate Customer to the bridge table, and Account to the bridge table, each as one-to-many with single-direction filtering from the dimension.
Check the bridge for duplicate pairs before relying on it. Duplicates inflate totals in the same way duplicate dimension keys do:
Duplicate Bridge Pairs = COUNTROWS(Bridge) - COUNTROWS(SUMMARIZE(Bridge, Bridge[CustomerKey], Bridge[AccountKey]))
A bridge design must be validated against the actual data and the reporting requirement. The pairs should reflect real ownership, not whatever the source happens to contain.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Composite models and limited relationships
A composite model combines tables from different sources, or combines Import and DirectQuery storage in one model. Microsoft’s guidance on composite models, titled “Use composite models in Power BI Desktop,” describes relationships that cross sources as behaving differently from relationships within one source. They may be limited, can affect performance, and can constrain how DAX retrieves rows from the “one” side. In limited relationship evaluation, tables are not expanded and joins use inner-join semantics at query time, so unmatched rows can be lost.
- Check which tables come from the same source group before assuming a relationship behaves like a standard one.
- Test unmatched-key cases directly. Use the Unmatched Sales Keys measure above, and compare a grouped visual with the source total.
- Do not assume every relationship in a composite model behaves identically. Inspect each one.
Troubleshooting unexpected totals, missing rows, and ambiguous filters
Work through the sequence in order. Each step has an expected result, and the first step that fails is usually the cause.
- Confirm the data is loaded. Create a card visual with COUNTROWS(Sales), using your own fact table name. Expected: a non-zero count that matches the source after a refresh.
- Confirm the grain. If one column identifies each fact row, run COUNTROWS(Sales) – DISTINCTCOUNT(Sales[OrderLineID]), substituting your own table and key column. Expected: 0. A positive result means the table holds more than one row per key, so the grain is not what you assumed.
- Confirm dimension keys are unique. Run the Duplicate Product Keys measure. Expected: 0. Fix duplicates in the source or in Power Query before you relate the tables.
- Confirm the keys match. Run the Unmatched Sales Keys measure and check the data types of both columns. Expected: 0 for a complete dimension. Blank keys or stray spaces are the most common causes.
- Inspect cardinality and active status. Open Manage relationships from the Home tab. Expected: each dimension-to-fact link is Many to one (*:1), and each secondary path is inactive on purpose.
- Trace filter direction and paths. Find any relationship set to Both and change it temporarily to Single. Compare the visual before and after. Expected: a change in the total points to the direction setting. In Model view, look for more than one line between the same two tables.
- Check limited and cross-source relationships. If results are missing from a composite model, review the source groups and the inner-join behavior described above. Expected: unmatched keys account for the missing rows.
- Compare a simple visual with the source. Build a table with one dimension column and one total, and compare it with an export or a source query. Expected: a match before you add CALCULATE, CROSSFILTER, or USERELATIONSHIP workarounds.
The symptom table below shows where to start for common problems. Microsoft’s relationship troubleshooting guidance covers related checks.
Recommended Free Tools
| Symptom | Likely cause | Start at step |
|---|---|---|
| Total is higher than the source | Duplicate dimension keys, mixed grain, or an extra path created by Both | 2, 3, 6 |
| Fact rows appear under (Blank) | Fact keys with no matching dimension row | 4 |
| Rows are missing from grouped visuals in a composite model | Unmatched keys under limited, inner-join evaluation | 4, 7 |
| A measure ignores the date slicer, or uses an unexpected date | The measure is using a different date role, or the wrong path is active | 5, then USERELATIONSHIP |
| A dimension filter behaves oddly or affects unrelated tables | Bidirectional filtering or a loop between relationships | 6 |
| A relationship cannot be created, or the model reports an ambiguous path | More than one route between the same tables | 5, 6 |
Further reading
For a deeper treatment of these topics, Packt’s product page for Expert Data Modeling with Power BI lists a paperback edition and covers star schemas, many-to-many relationships, bidirectional relationships, and inactive relationships. It is an optional resource; the steps above are sufficient to build and check a standard star-schema model.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




