Forum Discussion

Mahadevbisht879's avatar
Mahadevbisht879
New Member
6 months ago
Solved

Power BI data modeling question

Hello, I am working on a Power BI data model and need some advice. I have three tables named People, Orders, and Returns. People is related to Orders with a single direction relationship. Orders ...
  • srlabhe's avatar
    6 months ago

    To avoid bidirectional filtering, performance issues, and ambiguity, the recommended best practice is to structure your model into a proper star schema by creating a dedicated Dimension Table for shared keys (e.g., a DimOrder table) or ensuring a central bridge table connects to both fact tables. Do not create slicers directly from fact tables (Returns).
    Recommended Solutions:
    Create a DimOrder Table (Best Practice): Create a new table DimOrder consisting of distinct Order IDs from both the Orders and Returns tables.
    Create a 1-to-many single-direction relationship from DimOrder to Orders (on OrderID).
    Create a 1-to-many single-direction relationship from DimOrder to Returns (on OrderID).
    Use the Region from People (connected to Orders) and Order ID from DimOrder in your slicers.
    DAX TREATAS (Alternative): If rearranging the model isn't possible, create a DimOrder table and use DAX to map the relationship.
    dax
    FilteredOrders =
    CALCULATE(
    [Total Orders],
    TREATAS(VALUES('DimOrder'[OrderID]), 'Orders'[OrderID])
    )
    CROSSFILTER in Measures: To make a slicer on Returns affect Orders, use CROSSFILTER in a specific measure to change the filter direction only for that calculation, maintaining overall performance.