Forum Discussion
Filter Table by Column Values Associated with Selected Slicer Values
- 4 years ago
You can achieve this with a disconnected table, created in either Power Query or DAX. Here's the DAX calculated table:
SlicerNames = SUMMARIZE ( Customers, Customers[Name], Customers[FamilyID] )Create the Name slicer using this calculated table. It should not have a relationship with the Customers table.
Next, create this measure. The TREATAS function captures the selected value(s) in the slicer, and treats them as if they were from the Customers table.
FamilyID Measure = CALCULATE ( MAX ( Customers[FamilyID] ), TREATAS ( VALUES ( SlicerNames[FamilyID] ), Customers[FamilyID] ) )In the table visual, add ID and Name (from Customers), and the measure.
- 4 years ago
You're one step from success. 🙂 In the V1 (Route 1) pbix, I changed the relationship between Dim Customer Visual and Dim Customer to 1:*. You have to change the cardinality before changing the cross-filter direction. Since Dim Customer Visual is a clone of Dim Customer, it is actually a 1:1 relationship, but you have to define it as 1:* (single cross-filter direction) for this solution to work.
Here's the result after making the change above:
- 4 years ago
I added another member to the Dim Customer family: Dim Customer Visual Root. This is a calculated table that follows the same pattern as Dim Customer Visual. Notice that the relationship is between Dim Customer Visual[Root Parent ID] and Dim Customer Visual Root[Customer Key]. This allows parents and children to be included in Total Sales, while displaying only parents in the visual.
DAX for the calculated table:
Dim Customer Visual Root = FILTER ('Dim Customer', 'Dim Customer'[IsRootParent] = 1 )Measure:
Total Sales by Root Parent = CALCULATE ( SUM ( 'Fact S1'[Sales] ), ALL ( 'Dim Customer' ), // clear all filters from the slicer VALUES ( 'Dim Customer'[RootParentID] ), // get the RootParentID from the slicer KEEPFILTERS ( 'Dim Customer Visual Root' ), USERELATIONSHIP ( 'Dim Customer Visual Root'[CustomerKey], 'Dim Customer Visual'[RootParentID] ), USERELATIONSHIP ('Dim Customer Visual'[CustomerKey], 'Dim Customer'[CustomerKey] ) )Use Dim Customer Visual Root columns in the Table 2 visual:
I have made the following 2 changes:
- Visual table "Table 2 - Family Totals by Root Parent (DCVisual) is now pulling all fields (except the measure) from 'Dim Customer Visual'.
- Measure "Total Sales by Root Parent" has been updated to add the last argument:
- 'Dim Customer Visual'[IsRootParent] = 1
RESULTS
- The CustomerName now shows the Root Parent name correctly in Table 2. This is great! Thank you!
- However, adding the new parameter to the measure unfortunately breaks the sum of Total Sales in Table 2. It now simply shows the sales for each root parent (not the root parent's entire family as it was correctly doing before when we were using fields from Dim Customer & not Dim Customer Visual (see screenshot visual table below "Table 2 - Family Totals by Root Parent (DC)").
Thanks again for all your time.
I added another member to the Dim Customer family: Dim Customer Visual Root. This is a calculated table that follows the same pattern as Dim Customer Visual. Notice that the relationship is between Dim Customer Visual[Root Parent ID] and Dim Customer Visual Root[Customer Key]. This allows parents and children to be included in Total Sales, while displaying only parents in the visual.
DAX for the calculated table:
Dim Customer Visual Root =
FILTER ('Dim Customer', 'Dim Customer'[IsRootParent] = 1 )
Measure:
Total Sales by Root Parent =
CALCULATE (
SUM ( 'Fact S1'[Sales] ),
ALL ( 'Dim Customer' ), // clear all filters from the slicer
VALUES ( 'Dim Customer'[RootParentID] ), // get the RootParentID from the slicer
KEEPFILTERS ( 'Dim Customer Visual Root' ),
USERELATIONSHIP ( 'Dim Customer Visual Root'[CustomerKey], 'Dim Customer Visual'[RootParentID] ),
USERELATIONSHIP ('Dim Customer Visual'[CustomerKey], 'Dim Customer'[CustomerKey] )
)
Use Dim Customer Visual Root columns in the Table 2 visual:
- WinterMist4 years ago
Impactful Individual
Amazing! You're a Power BI wizard!
3 tables for 1 dimension. Never would have thought of that.
- I was able to use your solution right away in the fake-data PBIX in this thread.
- However, it took me a while to make it work in the real-data PBIX our company uses.
- Had to overcome a couple errors:
1) Join Paths are expected to Form a Tree...However, 2 join paths were being used.
2) USERELATIONSHIP function has to use the fields defined in the model.
Finally, I was able to get it to work, thanks to you!
My sincere thanks to you for a MASSIVE amount of help on this project!
Nathan