Microsoft is giving away 50,000 FREE Microsoft Certification exam vouchers!
Enter the sweepstakes now!Prepping for a Fabric certification exam? Join us for a live prep session with exam experts to learn how to pass the exam. Register now.
I am having difficulty with creating a measure to count records filtered by the most recent record per the PRIOR year/month chosen by a date slicer. I seem to have it working for the CURRENTyear/month, but not for the PRIOR month.
Measure _CountDistinctCurrentMonth seems to be working.
Measure _CountDistinctPreviousMonth is not working. It returns ZERO for everything.
My record set has an entry for every day of every month for every ID. I need to get the most recent entry for each ID depending on the month selected in the year/month slicer. If I choose september, it should return the record dated 30th September. If choose October, and today is the 4th October, then it should return the record dated 4th October.
To ensure I get the most recent record per ID I created a measure called __Rank. This appears to work correctly from what I can see, and flags the most recent record with a "1" and will change depending on the year/month I select from the year/month slicer.
__Rank =
RANKX (
FILTER (
ALL ( 'Work Items' ),
'Work Items'[Work Item Id] = MAX ( 'Work Items'[Work Item Id] )
&& 'Work Items'[__YearMonth] = MAX ( 'Work Items'[__YearMonth] )
),
CALCULATE ( MAX ( ( 'Work Items'[Date] ) ) ),
,
DESC
)
The measure _CountDistinctCurrentMonth seems to work, giving me the correct result based on what year/month I choose from the year/month slicer on the page.
_CountDistinctCurrentMonth =
CALCULATE(
COUNTROWS( DISTINCT('Work Items'[Work Item Id]) ),
FILTER('Work Items',[__Rank] = 1)
)+ 0
The measure _CountDistinctPreviousMonth does not work and it is this measure that I am wanting help with.
_CountDistinctPreviousMonth =
CALCULATE(
COUNTROWS( DISTINCT('Work Items'[Work Item Id]) ),
FILTER('Work Items',[__Rank] = 1),
PREVIOUSMONTH('Date'[Date])
)+ 0
I guess the way I have the filtering logic is cancelling itself out and not returning anything at all.
Hi @David_Morris ,
Please try below measure, thanks.
_CountDistinctPreviousMonth =
CALCULATE(
COUNTROWS( DISTINCT('Work Items'[Work Item Id]) ),
FILTER(ALL('Work Items'),[__Rank] = 1),
PREVIOUSMONTH('Date'[Date])
)+ 0
Thank you for your suggestion. Unfortunately that presented an error on the table visual.
Your suggestion got me thinking, and I may have resolved it though. I decided to get rid of the RANKXX field, and created a field to flag if the last date of each month, or if last record altogether.
__IsLastTransactionDateOfMonth =
// If the date of the record is the last date of the month (such as 30th Sept)
// OR
// If the date is the latest record alltogether (such as the 15th with no other records after the 15th)
// Then return 1, else return 0
var _EOM = EOMONTH('Work Items'[Date],0)
return if( max('Work Items'[Date]) = 'Work Items'[Date] || 'Work Items'[Date] = _EOM, 1, 0)
Then I changed my two measures to the below.
_CountDistinct =
CALCULATE(
COUNTROWS( DISTINCT('Work Items'[Work Item Id]) ),
'Work Items'[__IsLastTransactionDateOfMonth] = 1
)+ 0
_CountDistinctPreviousMonth =
CALCULATE(
COUNTROWS( DISTINCT('Work Items'[Work Item Id]) ),
'Work Items'[__IsLastTransactionDateOfMonth] = 1,
PREVIOUSMONTH('Date'[Date])
)+ 0
Now it seems to be working.
Check out the April 2025 Power BI update to learn about new features.
Explore and share Fabric Notebooks to boost Power BI insights in the new community notebooks gallery.
User | Count |
---|---|
72 | |
71 | |
68 | |
42 | |
42 |
User | Count |
---|---|
46 | |
40 | |
28 | |
27 | |
26 |