Reply
avatar user
Anonymous
Not applicable
Partially syndicated - Outbound

count with filter

Dear All,

 

I would like to count id if id date >= 01/07/2020 for both channel. The returned result will be 1 which is id 4. How can I write the measure column for this please help.

Thanks 

kazanim.PNG

1 ACCEPTED SOLUTION
MattAllington
Community Champion
Community Champion

Syndicated - Outbound

it's quite tricky. You should write a measure, not a column. The principle in DAX is "filter first, evaluate second". So you could try this (I haven't tested it).

 

 

=
CALCULATE (
    SUMX ( values(tablename[id]), IF ( calculate(countrows ( tablename[id] )) > 1, 1 ) ),
    FILTER ( tablename, tablename[date] >= DATE ( 2020, 7, 1 ) )
)

 

 



* Matt is an 8 times Microsoft MVP (Power BI) and author of the Power BI Book Supercharge Power BI.
I will not give you bad advice, even if you unknowingly ask for it.

View solution in original post

6 REPLIES 6
MattAllington
Community Champion
Community Champion

Syndicated - Outbound

it's quite tricky. You should write a measure, not a column. The principle in DAX is "filter first, evaluate second". So you could try this (I haven't tested it).

 

 

=
CALCULATE (
    SUMX ( values(tablename[id]), IF ( calculate(countrows ( tablename[id] )) > 1, 1 ) ),
    FILTER ( tablename, tablename[date] >= DATE ( 2020, 7, 1 ) )
)

 

 



* Matt is an 8 times Microsoft MVP (Power BI) and author of the Power BI Book Supercharge Power BI.
I will not give you bad advice, even if you unknowingly ask for it.
avatar user
Anonymous
Not applicable

Syndicated - Outbound

Actually I missed a point in my question that some id has only one channel also I need to check on. For examble below table ,if id has two channles both has to be greater than 01/07/2020 and if only one channel then it has to be greater than 01/07/2020. So for below table it should return 2 which ids 2 and 4. Please help. Thank you

 

new.PNG

 

 

Syndicated - Outbound
=
SUMX (
    VALUES ( Table[id] ),
    VAR countOfChannels =
        CALCULATE ( DISTINCTCOUNT ( Table[channel] ) )
    VAR countAfterDate =
        CALCULATE ( COUNTROWS ( FILTER ( Table, [date] > DATE ( 2020, 7, 1 ) ) ) )
    RETURN
        IF ( countOfChannels = countAfterDate, 1 )
)


* Matt is an 8 times Microsoft MVP (Power BI) and author of the Power BI Book Supercharge Power BI.
I will not give you bad advice, even if you unknowingly ask for it.
avatar user
Anonymous
Not applicable

Syndicated - Outbound

Actually I am getting an error  Thanks syntax.PNG

Syndicated - Outbound

There is nothing wrong with the syntax. What is the name of your table in the model?  Is it Table?  If not, you need to change "table" in this measure to match the name of your table. 



* Matt is an 8 times Microsoft MVP (Power BI) and author of the Power BI Book Supercharge Power BI.
I will not give you bad advice, even if you unknowingly ask for it.
avatar user
Anonymous
Not applicable

Syndicated - Outbound

Actually I did fix the formula but I got blank results. What is wrong with that can you tell me that please? Thank you

 

= SUMX (
    VALUES('Table'[id]);
       VAR countOfChannels 
        = CALCULATE(DISTINCTCOUNT ( 'Table'[channel] ) )
  VAR countAfterDate
       =CALCULATE ( COUNTROWS('Table');FILTER('Table';'Table'[date]> DATE(2020;7;1)))
    RETURN
       IF ( countOfChannels = countAfterDate;1)
)

 

 

 

 

 

 

avatar user

Helpful resources

Announcements
Join our Fabric User Panel

Join our Fabric User Panel

This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.

June 2025 Power BI Update Carousel

Power BI Monthly Update - June 2025

Check out the June 2025 Power BI update to learn about new features.

June 2025 community update carousel

Fabric Community Update - June 2025

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

Top Solution Authors (Last Month)
Top Kudoed Authors (Last Month)