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

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.

Reply
kmkwongaa
Helper I
Helper I

A function 'CALCULATE' has been used in a True/False expression that is used as a table filter expre

I have the following column added. 

Cat1 = IF('Follow_Up_Item_Summary_Status (Overdue)'[Category]=="1", CALCULATE(DISTINCTCOUNT('Follow_Up_Item_Summary_Status (Overdue)'[Batch no]),'Follow_Up_Item_Summary_Status (Overdue)'[timespent]<14),IF('Follow_Up_Item_Summary_Status (Overdue)'[Category]=="2", CALCULATE(DISTINCTCOUNT('Follow_Up_Item_Summary_Status (Overdue)'[Batch no]),'Follow_Up_Item_Summary_Status (Overdue)'[timespent]<30), IF('Follow_Up_Item_Summary_Status (Overdue)'[Category]=="3", CALCULATE(DISTINCTCOUNT('Follow_Up_Item_Summary_Status (Overdue)'[Batch no]),'Follow_Up_Item_Summary_Status (Overdue)'[timespent]<30),0)))
 
 
It works and when I want to add another column
 
 
Cat2 = IF('Follow_Up_Item_Summary_Status (Overdue)'[Category]=="1", CALCULATE(DISTINCTCOUNT('Follow_Up_Item_Summary_Status (Overdue)'[Batch no]),FILTER(ALL('Follow_Up_Item_Summary_Status (Overdue)'),'Follow_Up_Item_Summary_Status (Overdue)'[timespent]>14 && 'Follow_Up_Item_Summary_Status (Overdue)'[timespent]<21),if('Follow_Up_Item_Summary_Status (Overdue)'[Category]=="2", CALCULATE(DISTINCTCOUNT('Follow_Up_Item_Summary_Status (Overdue)'[Batch no]),FILTER(ALL('Follow_Up_Item_Summary_Status (Overdue)'),'Follow_Up_Item_Summary_Status (Overdue)'[timespent]>30 && 'Follow_Up_Item_Summary_Status (Overdue)'[timespent]<45), IF('Follow_Up_Item_Summary_Status (Overdue)'[Category]=="3", CALCULATE(DISTINCTCOUNT('Follow_Up_Item_Summary_Status (Overdue)'[Batch no]),FILTER(ALL('Follow_Up_Item_Summary_Status (Overdue)'),'Follow_Up_Item_Summary_Status (Overdue)'[timespent]>90 && 'Follow_Up_Item_Summary_Status (Overdue)'[timespent]<135)),0)))))
 
The following error occur: A function 'CALCULATE' has been used in a True/False expression that is used as a table filter expression. This is not allowed.
 
Is there any way to solve this problem?
 
2 ACCEPTED SOLUTIONS
amitchandak
Super User
Super User

@kmkwongaa , Try like

 IF('Follow_Up_Item_Summary_Status (Overdue)'[Category]=="1", CALCULATE(DISTINCTCOUNT('Follow_Up_Item_Summary_Status (Overdue)'[Batch no]),FILTER(ALL('Follow_Up_Item_Summary_Status (Overdue)'),'Follow_Up_Item_Summary_Status (Overdue)'[timespent]>14 && 'Follow_Up_Item_Summary_Status (Overdue)'[timespent]<21)),
 if('Follow_Up_Item_Summary_Status (Overdue)'[Category]=="2", CALCULATE(DISTINCTCOUNT('Follow_Up_Item_Summary_Status (Overdue)'[Batch no]),FILTER(ALL('Follow_Up_Item_Summary_Status (Overdue)'),'Follow_Up_Item_Summary_Status (Overdue)'[timespent]>30 && 'Follow_Up_Item_Summary_Status (Overdue)'[timespent]<45)), IF('Follow_Up_Item_Summary_Status (Overdue)'[Category]=="3", CALCULATE(DISTINCTCOUNT('Follow_Up_Item_Summary_Status (Overdue)'[Batch no]),FILTER(ALL('Follow_Up_Item_Summary_Status (Overdue)'),'Follow_Up_Item_Summary_Status (Overdue)'[timespent]>90 && 'Follow_Up_Item_Summary_Status (Overdue)'[timespent]<135)),0)))

View solution in original post

v-xicai
Community Support
Community Support

Hi @kmkwongaa ,

 

The error is caused by using a TRUE/FALSE expression, something that evaluates to TRUE or FALSE, to filter the table in a way that CALCULATE or CALCULATETABLE doesn’t support.  So the error is saying you can’t use a Boolean comparison to filter your table except in very specific circumstances.

 

You may change your formulas like DAX below.

Cat1 =
SWITCH (
    'Follow_Up_Item_Summary_Status (Overdue)'[Category],
    "1", CALCULATE (
        DISTINCTCOUNT ( 'Follow_Up_Item_Summary_Status (Overdue)'[Batch no] ),
        'Follow_Up_Item_Summary_Status (Overdue)'[timespent] < 14
    ),
    "2", CALCULATE (
        DISTINCTCOUNT ( 'Follow_Up_Item_Summary_Status (Overdue)'[Batch no] ),
        'Follow_Up_Item_Summary_Status (Overdue)'[timespent] < 30
    ),
    "3", CALCULATE (
        DISTINCTCOUNT ( 'Follow_Up_Item_Summary_Status (Overdue)'[Batch no] ),
        'Follow_Up_Item_Summary_Status (Overdue)'[timespent] < 30
    ),
    0
)



Cat2 =
SWITCH (
    'Follow_Up_Item_Summary_Status (Overdue)'[Category],
    "1", CALCULATE (
        DISTINCTCOUNT ( 'Follow_Up_Item_Summary_Status (Overdue)'[Batch no] ),
        FILTER (
            ALL ( 'Follow_Up_Item_Summary_Status (Overdue)' ),
            'Follow_Up_Item_Summary_Status (Overdue)'[timespent] > 14
                && 'Follow_Up_Item_Summary_Status (Overdue)'[timespent] < 21
        )
    ),
    "2", CALCULATE (
        DISTINCTCOUNT ( 'Follow_Up_Item_Summary_Status (Overdue)'[Batch no] ),
        FILTER (
            ALL ( 'Follow_Up_Item_Summary_Status (Overdue)' ),
            'Follow_Up_Item_Summary_Status (Overdue)'[timespent] > 30
                && 'Follow_Up_Item_Summary_Status (Overdue)'[timespent] < 45
        )
    ),
    "3", CALCULATE (
        DISTINCTCOUNT ( 'Follow_Up_Item_Summary_Status (Overdue)'[Batch no] ),
        FILTER (
            ALL ( 'Follow_Up_Item_Summary_Status (Overdue)' ),
            'Follow_Up_Item_Summary_Status (Overdue)'[timespent] > 90
                && 'Follow_Up_Item_Summary_Status (Overdue)'[timespent] < 135
        )
    ),
    0
)

Best Regards,

Amy 

 

Community Support Team _ Amy

If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

View solution in original post

2 REPLIES 2
v-xicai
Community Support
Community Support

Hi @kmkwongaa ,

 

The error is caused by using a TRUE/FALSE expression, something that evaluates to TRUE or FALSE, to filter the table in a way that CALCULATE or CALCULATETABLE doesn’t support.  So the error is saying you can’t use a Boolean comparison to filter your table except in very specific circumstances.

 

You may change your formulas like DAX below.

Cat1 =
SWITCH (
    'Follow_Up_Item_Summary_Status (Overdue)'[Category],
    "1", CALCULATE (
        DISTINCTCOUNT ( 'Follow_Up_Item_Summary_Status (Overdue)'[Batch no] ),
        'Follow_Up_Item_Summary_Status (Overdue)'[timespent] < 14
    ),
    "2", CALCULATE (
        DISTINCTCOUNT ( 'Follow_Up_Item_Summary_Status (Overdue)'[Batch no] ),
        'Follow_Up_Item_Summary_Status (Overdue)'[timespent] < 30
    ),
    "3", CALCULATE (
        DISTINCTCOUNT ( 'Follow_Up_Item_Summary_Status (Overdue)'[Batch no] ),
        'Follow_Up_Item_Summary_Status (Overdue)'[timespent] < 30
    ),
    0
)



Cat2 =
SWITCH (
    'Follow_Up_Item_Summary_Status (Overdue)'[Category],
    "1", CALCULATE (
        DISTINCTCOUNT ( 'Follow_Up_Item_Summary_Status (Overdue)'[Batch no] ),
        FILTER (
            ALL ( 'Follow_Up_Item_Summary_Status (Overdue)' ),
            'Follow_Up_Item_Summary_Status (Overdue)'[timespent] > 14
                && 'Follow_Up_Item_Summary_Status (Overdue)'[timespent] < 21
        )
    ),
    "2", CALCULATE (
        DISTINCTCOUNT ( 'Follow_Up_Item_Summary_Status (Overdue)'[Batch no] ),
        FILTER (
            ALL ( 'Follow_Up_Item_Summary_Status (Overdue)' ),
            'Follow_Up_Item_Summary_Status (Overdue)'[timespent] > 30
                && 'Follow_Up_Item_Summary_Status (Overdue)'[timespent] < 45
        )
    ),
    "3", CALCULATE (
        DISTINCTCOUNT ( 'Follow_Up_Item_Summary_Status (Overdue)'[Batch no] ),
        FILTER (
            ALL ( 'Follow_Up_Item_Summary_Status (Overdue)' ),
            'Follow_Up_Item_Summary_Status (Overdue)'[timespent] > 90
                && 'Follow_Up_Item_Summary_Status (Overdue)'[timespent] < 135
        )
    ),
    0
)

Best Regards,

Amy 

 

Community Support Team _ Amy

If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

amitchandak
Super User
Super User

@kmkwongaa , Try like

 IF('Follow_Up_Item_Summary_Status (Overdue)'[Category]=="1", CALCULATE(DISTINCTCOUNT('Follow_Up_Item_Summary_Status (Overdue)'[Batch no]),FILTER(ALL('Follow_Up_Item_Summary_Status (Overdue)'),'Follow_Up_Item_Summary_Status (Overdue)'[timespent]>14 && 'Follow_Up_Item_Summary_Status (Overdue)'[timespent]<21)),
 if('Follow_Up_Item_Summary_Status (Overdue)'[Category]=="2", CALCULATE(DISTINCTCOUNT('Follow_Up_Item_Summary_Status (Overdue)'[Batch no]),FILTER(ALL('Follow_Up_Item_Summary_Status (Overdue)'),'Follow_Up_Item_Summary_Status (Overdue)'[timespent]>30 && 'Follow_Up_Item_Summary_Status (Overdue)'[timespent]<45)), IF('Follow_Up_Item_Summary_Status (Overdue)'[Category]=="3", CALCULATE(DISTINCTCOUNT('Follow_Up_Item_Summary_Status (Overdue)'[Batch no]),FILTER(ALL('Follow_Up_Item_Summary_Status (Overdue)'),'Follow_Up_Item_Summary_Status (Overdue)'[timespent]>90 && 'Follow_Up_Item_Summary_Status (Overdue)'[timespent]<135)),0)))

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.