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!To celebrate FabCon Vienna, we are offering 50% off select exams. Ends October 3rd. Request your discount now.
Hello All,
I'm replacing a PowerBI consultant and I'm having trouble understanding his formula, can someone help me? Why in the result do * 1000 etc ....
Thanks for your help.
Vanessa
Solved! Go to Solution.
Hello @Anonymous ,
Instead of creating another variable SecondsPerHour, we can easily write in another way.
[_avg_duration] =
var AvgClosureEnd = AVERAGE( T[closure_end] )
var AvgPerformStart = average( T[perform_stat] )
var DifferenceInSeconds =
DATEDIFF(
AvgPerformStart,
AvgClosureEnd,
second
) / 3600
return
DifferenceInSeconds
OR
[_avg_duration] =
var AvgClosureEnd = AVERAGE( T[closure_end] )
var AvgPerformStart = average( T[perform_stat] )
var DifferenceInSeconds =
DIVIDE(
DATEDIFF(
AvgPerformStart,
AvgClosureEnd,
second
),
3600
)
return
DifferenceInSeconds
First of all, I have to tell you I would never employ a consultant that would write such ugly and foggy code; such consultants are total rubbish and employing them is shooting onself in the foot.
Second of all, this code calculates the number of hours (as a float) between s_Tm and c_Tm.
Here is what it should look like:
// T is your table
[_avg_duration] =
var SecondsPerMinute = 60
var MinutesPerHour = 60
var SecondsPerHour = MinutesPerHour * SecondsPerMinute
var AvgClosureEnd = AVERAGE( T[closure_end] )
var AvgPerformStart = average( T[perform_stat] )
var DifferenceInSeconds =
DATEDIFF(
AvgPerformStart,
AvgClosureEnd,
second
)
var HoursInDifference =
int( DifferenceInSeconds / SecondsPerHour )
var MinutesInDifference =
int(
divide(
DifferenceInSeconds
- HoursInDifference * SecondsPerHour,
SecondsPerMinute
)
)
var RemainingSeconds =
DifferenceInSeconds
- HoursInDifference * SecondsPerHour
- MinutesInDifference * SecondsPerMinute
var TimeInHoursAsFloat =
HoursInDifference
+ MinutesInDifference / MinutesPerHour
+ SecondsInDifference / SecondsPerHour
return
TimeInHoursAsFloat
The code, even though longer, is clearer and easily understandable due to the names of the variables.
Would you agree?
And here is an even better version...
[_avg_duration] =
var AvgClosureEnd = AVERAGE( T[closure_end] )
var AvgPerformStart = average( T[perform_stat] )
var DifferenceInSeconds =
DATEDIFF(
AvgPerformStart,
AvgClosureEnd,
second
)
var SecondsPerHour = 60 * 60
return
DifferenceInSeconds / SecondsPerHour
Hello @Anonymous ,
Instead of creating another variable SecondsPerHour, we can easily write in another way.
[_avg_duration] =
var AvgClosureEnd = AVERAGE( T[closure_end] )
var AvgPerformStart = average( T[perform_stat] )
var DifferenceInSeconds =
DATEDIFF(
AvgPerformStart,
AvgClosureEnd,
second
) / 3600
return
DifferenceInSeconds
OR
[_avg_duration] =
var AvgClosureEnd = AVERAGE( T[closure_end] )
var AvgPerformStart = average( T[perform_stat] )
var DifferenceInSeconds =
DIVIDE(
DATEDIFF(
AvgPerformStart,
AvgClosureEnd,
second
),
3600
)
return
DifferenceInSeconds
Hello,
First all thanks for your help & time !
The second query it's ok and perfect but for the one I have one issue