Forum Discussion
Matrix filter not working when using a single direction relationship
- 8 months ago
Hii Aliceeee
With single-direction relationships, filter flow only travels from the lookup (dimension) table to the fact tables, not between fact tables. In your model, the slicer is coming from the Advanced table, so its filter cannot propagate through the FullNames lookup to the Availability Sheet. When you switch to bidirectional, Power BI allows that fact-to-fact filter flow, which is why it works. To keep single direction (best practice), create the slicer from the FullNames lookup table or use a measure with TREATAS() to explicitly pass the filter from Advanced to Availability.
With *single-direction (1 → ) relationships, filters only flow from the lookup table down to the fact tables, not from one fact table to another. When you put a slicer from Advanced, that filter cannot travel back up to FullNames, and therefore cannot reach Availability. That’s why your matrix doesn’t react.
The recommended pattern is keeping relationships single direction and put slicers on the lookup table, not on fact tables.
If you insist on using a slicer from Advanced table, keep your single relations instead creating bi-directional relations and use a measure four your specific case:
Availability (Filtered) =
VAR SelectedNames =
VALUES ( Advanced[Full Name] )
RETURN
CALCULATE (
[Availability Base Measure],
TREATAS ( SelectedNames, Availability[Full Name] )
)
Bidirectional relationships are risky because they let filters flow both ways, which can create ambiguous filter paths, unexpected results, and harder-to-debug reports. They can also hurt performance, especially in larger models, because Power BI has to resolve more complex filtering logic.