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.
Hi there,
I am fairly new to DAX, I would really appreciate your assistance, please.
I am trying to filter out the number of customers that belong to both zones. The table looks like this:
Table: Customers
Customer_id Zone_id
1 A
2 A
3 A
3 B
4 A
4 B
Expected Result:
2
(2 customers belong to both zones A & B)
Equivalent SQL would look something like this:
SELECT COUNT(DISTINCT(Customer_id)
FROM customers
WHERE
Zone_id = A
AND Customer_id IN
(SELECT Customer_id
FROM Customers
WHERE Zone_id = B)
Could you please help me with an equivalent DAX for this? I tried various options with no luck.
Thank you so much in advance.
Solved! Go to Solution.
hi @DanVelus ,
I try to understand the model you are talking about and hope to get the result you want in the end.
Please create two new table as follows firstly:
Then, create a measure:
Result should look like this:
You can also create a new measure as follows:
Result should look like this:
Hope it helps!
Best regards,
Community Support Team CGao
If this post helps, please consider Accept it as the solution to help the other members find it more quickly.
hi @DanVelus ,
I try to understand the model you are talking about and hope to get the result you want in the end.
Please create two new table as follows firstly:
Then, create a measure:
Result should look like this:
You can also create a new measure as follows:
Result should look like this:
Hope it helps!
Best regards,
Community Support Team CGao
If this post helps, please consider Accept it as the solution to help the other members find it more quickly.
@DanVelus Can you please provide some sample data where it returns BLANK, so that I can debug if required
New Measure=COUNTROWS(FILTER(VALUES('Table'[Customer_id]),CALCULATE(COUNTROWS(FILTER({"A","B"},[Value] IN VALUES('Table'[Zone_id]))))=2))
@DanVelus equivalent DAX Measure is this
Measure =
VAR _a =
CALCULATE (
MAX ( 'Table'[Customer_id] ),
FILTER ( VALUES ( 'Table'[Zone_id] ), 'Table'[Zone_id] = "A" )
)
RETURN
CALCULATE (
MAX ( 'Table'[Customer_id] ),
FILTER ( 'Table', 'Table'[Customer_id] = _a && 'Table'[Zone_id] = "B" )
)
a more dynamic approach would be following
Measure2 =
VAR _select = { "A", "B" }
VAR _count1 =
COUNTX ( _select, [Value] )
VAR _count2 =
CALCULATE (
COUNT ( 'Table'[Customer_id] ),
'Table'[Zone_id] IN _select,
ALLEXCEPT ( 'Table', 'Table'[Customer_id] )
)
RETURN
IF ( _count1 = _count2, MAX ( 'Table'[Customer_id] ) )
Hey, @smpa01 Thank you so much for both of your responses. I tried all your solutions, I only getting BLANK. I am not getting the expected answer. Here are the some of things I tried:
Table name is 'groups'; Columns: user_id & zone_id
Users_inBothGroup =
VAR _select = {123, 456}
VAR _count1 =
COUNTX (_select, [Value])
VAR _count2 =
CALCULATE(
COUNT(groups[user_id]),
groups[zone_id] IN _select,
ALLEXCEPT(groups, groups[user_id])
)
RETURN
IF( _count1 = _count2, MAX(groups[user_id]) )
The Result: BLANK
VAR _a =
CALCULATE(
MAX(groups[user_id]),
FILTER(VALUES(groups[zone_id]), groups[zone_id] = 123)
)
RETURN
CALCULATE(
MAX(groups[user_id]),
FILTER(groups, groups[user_id] = _a && groups[zone_id] = 456)
)
Result: BLANK
I am not sure what I am doing wrong.
Please help
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 |
---|---|
46 | |
28 | |
22 | |
12 | |
8 |
User | Count |
---|---|
76 | |
53 | |
46 | |
16 | |
12 |