Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!Calling all Data Engineers! Fabric Data Engineer (Exam DP-700) live sessions are back! Starting October 16th. Sign up.
Hello,
i want to find a user repeat rate on a specific period.
Basic data :
date | User ID |
15/06/2021 | A |
15/06/2021 | A |
15/06/2021 | B |
16/06/2021 | C |
16/06/2021 | D |
18/06/2021 | E |
And i want to have :
date | Users | reiterating users | reiterating rate | 2 days reiterating rate |
15/06/2021 | 3 | 1 | 33% | 33% |
16/06/2021 | 2 | 0 | 0% | 20% |
18/06/2021 | 1 | 0 | 0% | 0% |
What's the DAX formula for "2 days reitarting rate", please ?
Thanks
Solved! Go to Solution.
Hi @viggo71
First add an Index column to the table to rank the dates.
Index = RANKX('Table','Table'[date],,ASC,Dense)
Then create the following measure.
Measure 2 =
VAR _currentDateIndex = MAX('Table'[Index])
VAR _startDateIndex = _currentDateIndex - 1
VAR _table = FILTER(ALL('Table'),'Table'[Index]>=_startDateIndex && 'Table'[Index]<=_currentDateIndex)
VAR _table2 = SUMMARIZE(_table,'Table'[User ID],"Occurrences",COUNT('Table'[User ID]))
VAR _allrecords = COUNTROWS(_table)
VAR _repeatedUsers = COUNTROWS(FILTER(_table2,[Occurrences]>1))
RETURN
DIVIDE(_repeatedUsers,_allrecords)+0
Regards,
Community Support Team _ Jing
If this post helps, please Accept it as the solution to help other members find it.
Hi @viggo71
First add an Index column to the table to rank the dates.
Index = RANKX('Table','Table'[date],,ASC,Dense)
Then create the following measure.
Measure 2 =
VAR _currentDateIndex = MAX('Table'[Index])
VAR _startDateIndex = _currentDateIndex - 1
VAR _table = FILTER(ALL('Table'),'Table'[Index]>=_startDateIndex && 'Table'[Index]<=_currentDateIndex)
VAR _table2 = SUMMARIZE(_table,'Table'[User ID],"Occurrences",COUNT('Table'[User ID]))
VAR _allrecords = COUNTROWS(_table)
VAR _repeatedUsers = COUNTROWS(FILTER(_table2,[Occurrences]>1))
RETURN
DIVIDE(_repeatedUsers,_allrecords)+0
Regards,
Community Support Team _ Jing
If this post helps, please Accept it as the solution to help other members find it.
Hi, thanks Pat but it doesn't work. I need a distinct count of duplicate ID on X rolling days.
Thanks
Here's a measure that shows one way to do it. Replace "Reiterate" with your actual table name.
Two Day Rate =
VAR thisdate =
MAX ( Reiterate[date] )
VAR prevdate =
CALCULATE ( MAX ( Reiterate[date] ), Reiterate[date] < thisdate )
VAR result =
CALCULATE (
DIVIDE (
COUNT ( Reiterate[ User ID] ) - DISTINCTCOUNT ( Reiterate[ User ID] ),
COUNT ( Reiterate[ User ID] )
),
FILTER (
ALL ( Reiterate[date] ),
Reiterate[date] <= thisdate
&& Reiterate[date] >= prevdate
)
)
RETURN
result
Pat
To learn more about Power BI, follow me on Twitter or subscribe on YouTube.
Join the Fabric FabCon Global Hackathon—running virtually through Nov 3. Open to all skill levels. $10,000 in prizes!
Check out the October 2025 Power BI update to learn about new features.