Bird
Raised Fist0
Power BIbi_tool~10 mins

Relationship direction and cross-filtering in Power BI - Cell-by-Cell Formula Trace

Choose your learning style10 modes available
Sample Data

Two tables: Products (A1:B4) and Orders (D1:F4). Products has ProductID and ProductName. Orders has OrderID, ProductID (foreign key), and Quantity.

CellValue
A1ProductID
B1ProductName
A2101
B2Chair
A3102
B3Table
A4103
B4Lamp
D1OrderID
E1ProductID
F1Quantity
D25001
E2101
F22
D35002
E3103
F31
D45003
E4102
F44
Formula Trace
CALCULATE(SUM(Orders[Quantity]), Products[ProductName] = "Chair")
Step 1: Products[ProductName] = "Chair"
Step 2: Cross-filter from Products to Orders via ProductID relationship
Step 3: SUM(Orders[Quantity]) on filtered Orders
Step 4: CALCULATE result
Cell Reference Map
Products Table       Orders Table
+----+------------+   +-------+----------+----------+
| A1 | B1         |   | D1    | E1       | F1       |
|----|------------|   |-------|----------|----------|
|101 | Chair      |   |5001   | 101      | 2        |
|102 | Table      |   |5002   | 103      | 1        |
|103 | Lamp       |   |5003   | 102      | 4        |
+----+------------+   +-------+----------+----------+

Relationship: Products[ProductID] --> Orders[ProductID]
Filter direction: Single from Products to Orders
The formula filters Products by ProductName 'Chair' then filters Orders by matching ProductID via the relationship. The filter flows from Products to Orders.
Result
+-----------------------------+
| CALCULATE Result             |
|-----------------------------|
| 2                           |
+-----------------------------+
The final result shows 2, which is the total quantity of orders for the product 'Chair'. This is because only one order has ProductID 101 (Chair) with quantity 2.
Sheet Trace Quiz - 3 Questions
Test your understanding
What does the filter 'Products[ProductName] = "Chair"' do in the formula?
AFilters Orders table directly for 'Chair'
BKeeps only products named 'Chair' in the Products table
CRemoves all products except 'Table'
DFilters Orders for quantity greater than 2
Key Result
CALCULATE with filter on one table applies cross-filtering via relationship direction to related tables.

Practice

(1/5)
1. What does the Single relationship direction mean in Power BI?
easy
A. Filters flow between tables in both directions.
B. Filters flow randomly between tables.
C. Filters do not flow between tables at all.
D. Filters flow from one table to another in only one direction.

Solution

  1. Step 1: Understand relationship direction

    Single direction means filter context flows from one table to another, but not back.
  2. Step 2: Compare with both directions

    Both directions allow filters to flow both ways, unlike single direction.
  3. Final Answer:

    Filters flow from one table to another in only one direction. -> Option D
  4. Quick Check:

    Single direction = one-way filter flow [OK]
Hint: Single direction means filter flows one way only [OK]
Common Mistakes:
  • Confusing single with both directions
  • Thinking filters flow both ways in single direction
  • Assuming no filters flow in single direction
2. Which of the following is the correct DAX syntax using CROSSFILTER to enable Both direction filtering in Power BI?
easy
A. CROSSFILTER(Table1[ID], Table2[ID], Both)
B. CROSSFILTER(Table1[ID], Table2[ID], DIRECTION Both)
C. CROSSFILTER(Table1[ID], Table2[ID], BothDirection)
D. CROSSFILTER(Table1[ID], Table2[ID], BothDirections)

Solution

  1. Step 1: Recall correct DAX syntax for relationship direction

    Power BI uses CROSSFILTER keyword with values Single or Both to set filter direction.
  2. Step 2: Identify correct option

    CROSSFILTER(Table1[ID], Table2[ID], Both) uses CROSSFILTER Both which is the correct syntax for both directions.
  3. Final Answer:

    CROSSFILTER(Table1[ID], Table2[ID], Both) -> Option A
  4. Quick Check:

    Relationship direction syntax uses CROSSFILTER Both [OK]
Hint: Use CROSSFILTER Both to set both directions in DAX [OK]
Common Mistakes:
  • Using DIRECTION keyword instead of CROSSFILTER
  • Misspelling Both as BothDirection or BothDirections
  • Confusing syntax with SQL JOIN
3. Given two tables, Customers and Orders, with a single direction relationship from Customers to Orders, what happens when you filter Orders by a specific Product?
medium
A. The Customers table is filtered to show only customers who ordered that product.
B. The Orders table is filtered, but Customers table remains unfiltered.
C. Both Customers and Orders tables are filtered by the product.
D. No filtering happens on either table.

Solution

  1. Step 1: Understand filter flow in single direction relationship

    Filter flows from Customers to Orders, but not from Orders back to Customers.
  2. Step 2: Apply filter on Orders table

    Filtering Orders by product affects Orders only; Customers table remains unfiltered.
  3. Final Answer:

    The Orders table is filtered, but Customers table remains unfiltered. -> Option B
  4. Quick Check:

    Single direction filters one way only [OK]
Hint: Filter flows only from one side in single direction [OK]
Common Mistakes:
  • Assuming filter flows both ways
  • Thinking Customers table filters Orders only
  • Confusing filter direction with cross-filtering
4. You created a relationship between Sales and Products tables with Both directions, but filtering Products does not filter Sales. What is the likely issue?
medium
A. The relationship is inactive and needs to be activated.
B. The relationship direction is set to Single, not Both.
C. The tables have no matching keys for the relationship.
D. Cross-filtering is disabled in report settings.

Solution

  1. Step 1: Check relationship activation status

    Inactive relationships do not apply filters even if direction is Both.
  2. Step 2: Confirm relationship direction and keys

    Direction Both is set, and keys exist, so inactive status is the issue.
  3. Final Answer:

    The relationship is inactive and needs to be activated. -> Option A
  4. Quick Check:

    Inactive relationship blocks filter flow [OK]
Hint: Activate relationships to enable filter flow [OK]
Common Mistakes:
  • Assuming direction is wrong without checking activation
  • Ignoring inactive relationships
  • Thinking cross-filtering is a global setting
5. You have three tables: Customers, Orders, and Products. Customers to Orders has a single direction relationship (Customers filters Orders). Orders to Products has a single direction relationship (Products filters Orders). You want to create a report where filtering Customers also filters Products. What is the best approach?
hard
A. Change both relationships to Both directions to enable filter flow from Customers to Products.
B. Create a direct relationship from Customers to Products with Both directions.
C. Use DAX measures with CROSSFILTER to simulate filter flow from Customers to Products.
D. Keep relationships as is; filtering Customers will automatically filter Products.

Solution

  1. Step 1: Analyze existing relationships and filter flow

    Customers filters Orders, Products filters Orders, but no direct filter flow from Customers to Products.
  2. Step 2: Understand why filtering Customers does not filter Products

    Because Orders to Products filters from Products to Orders, filter does not flow from Orders to Products.
  3. Step 3: Use DAX with CROSSFILTER to simulate filter flow

    Using CROSSFILTER in measures can override filter direction temporarily to enable filtering Products by Customers.
  4. Final Answer:

    Use DAX measures with CROSSFILTER to simulate filter flow from Customers to Products. -> Option C
  5. Quick Check:

    Use CROSSFILTER in DAX for complex filter flow [OK]
Hint: Use CROSSFILTER in DAX to override filter direction [OK]
Common Mistakes:
  • Changing all relationships to Both can cause ambiguity
  • Creating unnecessary direct relationships
  • Assuming filter flows automatically through multiple single directions
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard