Advance your Data & AI career with 50 days of live learning, dataviz contests, hands-on challenges, study groups & certifications and more!
Get registeredGet Fabric Certified for FREE during Fabric Data Days. Don't miss your chance! Learn more
Hi all,
I Power BI rookie, and need your help for a DAX problem.
The case:
If a person over a 3 week period has more than 70.5 hour combined, then a bonus is paid. The same week can not be counted twice. The starting week is defined be the user in the report.
Example,
week 1-3 = 60 hours (no bonus, so we add move the interval one week)
week 2-4 =80 hours (Bonus paid, now thes weeks can not be counted again)
week 5-7 = 71 hours (bonus paid)
We have given each week an index, and can count the running 3 week total, but I can not seem to figure out how to reset the counter, if a bonus i paid. Down below, there should be a payout in week 45, but not 46
This is my DAX until now
IndeksUge =
Var Aar = SELECTEDVALUE(DatoerBelastning[ISO Year])
Var UgeNr = SELECTEDVALUE(DatoerBelastning[ISO Weeknumber])
Var Indeks =
CALCULATE(
MIN(DatoerBelastning[Indeks])
)
Var Beregning =
CALCULATE(
SUM(BeregningKorrigeretTimer[VarighedKorrigeret]),
FILTER(
All(DatoerBelastning),
DatoerBelastning[Indeks]<=Indeks && DatoerBelastning[Indeks]>=Indeks-2
)
)
Return
Beregning
Can I accomplish what I am trying to do?
Solved! Go to Solution.
Hi, @Thaysenclaes
I simulated your data to make an example, I hope it will help you. Regarding your cumulative summation function can remain unchanged, you can use the IF function to determine that the last 2 weeks above 70.5 are not part of the reward range.
Measure =
VAR Week1 =
SUMX ( TOPN ( 3,
SUMMARIZE (
FILTER ( ALL ( 'Table' ), [Week]<=MAX('Table'[Week] )),'Table'[Week],
"Sum", SUM ( 'Table'[Hours] )
), [Week], DESC ), [Sum] )
VAR Week2 =
SUMX ( TOPN ( 3,
SUMMARIZE (
FILTER ( ALL ( 'Table' ), [Week]<=MAX('Table'[Week] )-1),'Table'[Week],
"Sum", SUM ( 'Table'[Hours] )
), [Week], DESC ), [Sum] )
VAR Week3 =
SUMX ( TOPN ( 3,
SUMMARIZE (
FILTER ( ALL ( 'Table' ), [Week]<=MAX('Table'[Week] )-2),'Table'[Week],
"Sum", SUM ( 'Table'[Hours] )
), [Week], DESC ), [Sum] )
RETURN
IF(Week1>70.5&&Week2>70.5&&Week3>70.5,0,IF(Week1>70.5&&Week2>70.5,0,IF(Week1>70.5,1,0)))
Best Regards,
Community Support Team _Charlotte
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Hi, @Thaysenclaes
I simulated your data to make an example, I hope it will help you. Regarding your cumulative summation function can remain unchanged, you can use the IF function to determine that the last 2 weeks above 70.5 are not part of the reward range.
Measure =
VAR Week1 =
SUMX ( TOPN ( 3,
SUMMARIZE (
FILTER ( ALL ( 'Table' ), [Week]<=MAX('Table'[Week] )),'Table'[Week],
"Sum", SUM ( 'Table'[Hours] )
), [Week], DESC ), [Sum] )
VAR Week2 =
SUMX ( TOPN ( 3,
SUMMARIZE (
FILTER ( ALL ( 'Table' ), [Week]<=MAX('Table'[Week] )-1),'Table'[Week],
"Sum", SUM ( 'Table'[Hours] )
), [Week], DESC ), [Sum] )
VAR Week3 =
SUMX ( TOPN ( 3,
SUMMARIZE (
FILTER ( ALL ( 'Table' ), [Week]<=MAX('Table'[Week] )-2),'Table'[Week],
"Sum", SUM ( 'Table'[Hours] )
), [Week], DESC ), [Sum] )
RETURN
IF(Week1>70.5&&Week2>70.5&&Week3>70.5,0,IF(Week1>70.5&&Week2>70.5,0,IF(Week1>70.5,1,0)))
Best Regards,
Community Support Team _Charlotte
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
@Thaysenclaes This seems like a classic Cthulhu kind of problem. Cthulhu - Microsoft Power BI Community
@Greg_Deckler Thank you for the reply. I am trying to adapt the method from the link, but am somewhat struggling.
Exampel:
Week 1 + 2 + 3 sums to above the threshold for bonus
Likewise for week 2 + 3 + 4.
So max index would be for week 4. But I need to reset after week 3. The next sum should be for 4+5+6. Then 6+5+7, then 7+8+9 until the threshold is reached again.
What calculate expression can execute that query? Right now the method is predicated on skips in the index
@Thaysenclaes On second thought, try adding a columns like this or convert these to measures.:
Column =
VAR __Min = MIN('Table'[ISO Weeknumber])
RETURN
TRUNC(DIVIDE([ISO Weeknumber] - __Min, 3))
Column1 =
VAR __Current = [Column]
VAR __Week = [ISO Weeknumber]
RETURN
SUMX(FILTER('Table',[Column] = __Current && [ISO Weeknumber] <= __Week),[Hours])
Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!
Check out the October 2025 Power BI update to learn about new features.
| User | Count |
|---|---|
| 83 | |
| 48 | |
| 36 | |
| 31 | |
| 29 |