Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Be one of the first to start using Fabric Databases. View on-demand sessions with database experts and the Microsoft product team to learn just how easy it is to get started. Watch now

Reply
Anonymous
Not applicable

Having Clause or something close

I would like for my measure to only count the accounts that have more than n case. 

 

This is what I've tried so far.

Qualified Customer =
CALCULATE(COUNT('Customer Info'[ACCOUNT#]), FILTER('Customer Count', COUNT('Customer Info'[CASE]) > 6))

 

This pretty much ignores my FILTER() and does a normal Count() of the accounts.

 

I've also tried 

Qualified_Customers =
var Qualified_Customers = CALCULATETABLE(VALUES('Customer Info'[ACCOUNT_NBR]), FILTER('Customer Info', COUNT('Customer Info'[CASE_ID]) > 6))
return CALCULATE(COUNT('Customer Info'[ACCOUNT_NBR]), 'Customer Info'[ACCOUNT_NBR] in Qualified_Customers)

 

This gives me an error message saying it ran out of avaiable memory or does a normal Count() of the accounts.

 

Last I tried 

Qualified_Customer = 
var numberSelect = 6
VAR CEMIn_Customers =
    CALCULATETABLE (
        VALUES ( 'Customer Info'[ACCOUNT#] ),
        ALLSELECTED ( Outages ),
        VALUES ( 'Customer Info'[ACCOUNT#] ),
        FILTER( 'Customer Info', COUNT('Customer Info'[CASE_ID]) >6)
    )
var custTotal = CALCULATE (
        COUNT ( 'Customer Info'[ACCOUNT#] ),
        ALLSELECTED ( 'Customer Info' ),
        'Customer Info'[ACCOUNT#] IN CEMIn_Customers)
RETURN
       CALCULATE (
            CALCULATE(COUNT('Customer Info'[ACCOUNT#])),
            FILTER('Customer Info', custTotal >= numberSelect)
        )

 

This gives me an error message saying it ran out of avaiable memory.

 

I'm all out of ideas, any help would be greatly appreciated. 

1 ACCEPTED SOLUTION
d_gosbell
Super User
Super User

So you should be able to do this with a measure like the following

Qualified Customer = 
COUNTROWS(
    FILTER(
        VALUES('Customer Info'[Account_NBR]), -- gets a distinct list of account_nbr
        CALCULATE(                            -- forces a context transition so that Case_ID is
                                              -- filtered for just those under the current Account_nbr        
            COUNT('Customer Info'[CASE_ID])
        ) > 6
    )
)

 

If you had a measure that counted case_ids

Case Count = COUNT('Customer Info'[CASE_ID])

 

Then you could simplify this to remove the call to calculate (as measures are wrapped in an implied calculate )

Qualified Customer = 
COUNTROWS(
    FILTER(
        VALUES('Customer Info'[Account_NBR]),   -- gets a distinct list of account_nbr
        [Case Count] > 6      
    )
)

View solution in original post

10 REPLIES 10
d_gosbell
Super User
Super User

So you should be able to do this with a measure like the following

Qualified Customer = 
COUNTROWS(
    FILTER(
        VALUES('Customer Info'[Account_NBR]), -- gets a distinct list of account_nbr
        CALCULATE(                            -- forces a context transition so that Case_ID is
                                              -- filtered for just those under the current Account_nbr        
            COUNT('Customer Info'[CASE_ID])
        ) > 6
    )
)

 

If you had a measure that counted case_ids

Case Count = COUNT('Customer Info'[CASE_ID])

 

Then you could simplify this to remove the call to calculate (as measures are wrapped in an implied calculate )

Qualified Customer = 
COUNTROWS(
    FILTER(
        VALUES('Customer Info'[Account_NBR]),   -- gets a distinct list of account_nbr
        [Case Count] > 6      
    )
)
Anonymous
Not applicable

I do have one more question. I created the DAX below and got the same outcome as you. However, I like how much more simple yours is. Both of our DAX formulas are coming up with incorrect total rows.

 

Qualified Customer = 
var CEMIn = SELECTEDVALUE(CEMI_Threshold[CEMIn], 6)
var cust_table = 
GROUPBY(
FILTER (
    SUMMARIZE (
        'Customer Info',
        'Customer Info'[Account_NBR],
        "Count records", COUNTX('Customer Info', COUNT('Customer Info'[CASE_ID]))
    ),
    [Count records] >= CEMIn
), 'Customer Info'[ACCOUNT_NBR])
return CALCULATE(DISTINCTCOUNT('Customer Info'[ACCOUNT_NBR]), 'Customer Info'[ACCOUNT_NBR] in cust_table)

 

 

 

Incorrect Totals.png

Do you have any accounts that have cases with different legal entities? For example if an account had 4 cases with legal entity 1 and 4 with legal entity 2 they will fall under the threashold when split by legal entity, but at the total level they will have 8 cases so will qualify there.

Anonymous
Not applicable

No, there shouldn't be any accounts with multiple legal entities. 


@Anonymous wrote:

No, there shouldn't be any accounts with multiple legal entities. 


So shouldn't seems a bit vague - do you mean "in theory this should not happen" or "I've double checked and this is definitely not the case"?

 

Assuming this is not the case I'm not sure what else could cause the higher total count. I tried mocking up a simple model and I can't make it behave like your screenshot. I'm wondering if there is some bi-directional relationship in your model or some filter on the visual that is causing this. Can you create a test file with some dummy data and reproduce this issue? If so it would help if you could post such a file back to this thread. 

Anonymous
Not applicable

No need to wait until tomorrow, I was too eager to find out. So there are cases where the account number is in multiple legal entities. 


@Anonymous wrote:

No need to wait until tomorrow, I was too eager to find out. So there are cases where the account number is in multiple legal entities. 


So that sounds like it probably explains this issue then and it's either a data quality issue that needs cleaning up or maybe just a fact of life that users need to be trained on when using this metric.

Anonymous
Not applicable

I got the 'Total' row to calculate correctly. It was a user limited knowledge error. There are two account# fields, the one I didn't use in my measure changed as the legal entity changed. So everything is good now.

Anonymous
Not applicable

Please be on tomorrow, I'll have a more definite answer then.

Greg_Deckler
Super User
Super User

What does your source data look like? Please see this post regarding How to Get Your Question Answered Quickly: https://community.powerbi.com/t5/Community-Blog/How-to-Get-Your-Question-Answered-Quickly/ba-p/38490



Follow on LinkedIn
@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
Power BI Cookbook Third Edition (Color)

DAX is easy, CALCULATE makes DAX hard...

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!

Dec Fabric Community Survey

We want your feedback!

Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions.

ArunFabCon

Microsoft Fabric Community Conference 2025

Arun Ulag shares exciting details about the Microsoft Fabric Conference 2025, which will be held in Las Vegas, NV.

December 2024

A Year in Review - December 2024

Find out what content was popular in the Fabric community during 2024.