Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
Hey!
I wanted to create a target based on the selections in a slicer.
Solved! Go to Solution.
Hey daxer,
thank you very much for your answer. I may be to far away from DAX-Code like in the video, but I somehow figured my own Workaround. It sure is not perfect, but works for me:
Target =
VAR VisibleNames =
VALUES( 'Table A'[Names] )
var DesiredNames =
{"Nick", "Thomas"}
var Union_ =
// This union will have 2 elements
// only when VisibleNames is a subset
// of DesiredSet.
DISTINCT(
union(
VisibleNames,
DesiredNames
)
)
var DesiredNamesCard =
COUNTROWS( DesiredNames )
var UnionCard =
COUNTROWS( Union_ )
VAR Result =
IF( UnionCard = DesiredNamesCard,
1,
2
)
RETURN
Result
Here's the code you probably wanted to write. CONCATENATEX is a function which should not be used in your scenario. This is not what it's been meant for. The above code is flexible and expresses clearly your idea. For instance, ff you wanted to put more names in the DesiredNames set, you could do it and the code would behave correctly as well (only one change is needed to DesiredNames). If you wanted to change the names, you'd change them in one place only. This is what's called: CLEAN CODE. No repetitions are present and you probably know that in programming repeated code is the source of all evil.
Of course it's wrong. The logic says: if the same field selected in the table is at the same time Nick and Thomas... then do this. Well, this will never be true since SELECTEDVALUE always returns only one name, never both.
To do what you're asking for requires some non-trival effort. Please start with this vid: (1) Using OR conditions between slicers in DAX - YouTube
Hey daxer,
thank you very much for your answer. I may be to far away from DAX-Code like in the video, but I somehow figured my own Workaround. It sure is not perfect, but works for me:
Target =
VAR VisibleNames =
VALUES( 'Table A'[Names] )
var DesiredNames =
{"Nick", "Thomas"}
var Union_ =
// This union will have 2 elements
// only when VisibleNames is a subset
// of DesiredSet.
DISTINCT(
union(
VisibleNames,
DesiredNames
)
)
var DesiredNamesCard =
COUNTROWS( DesiredNames )
var UnionCard =
COUNTROWS( Union_ )
VAR Result =
IF( UnionCard = DesiredNamesCard,
1,
2
)
RETURN
Result
Here's the code you probably wanted to write. CONCATENATEX is a function which should not be used in your scenario. This is not what it's been meant for. The above code is flexible and expresses clearly your idea. For instance, ff you wanted to put more names in the DesiredNames set, you could do it and the code would behave correctly as well (only one change is needed to DesiredNames). If you wanted to change the names, you'd change them in one place only. This is what's called: CLEAN CODE. No repetitions are present and you probably know that in programming repeated code is the source of all evil.
Hey daxer,
this is alot better. Thank you very much! 🙂
Best regards
MSOMME
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
39 | |
21 | |
21 | |
14 | |
13 |
User | Count |
---|---|
45 | |
31 | |
30 | |
18 | |
17 |