Microsoft Fabric Community Conference 2025, March 31 - April 2, Las Vegas, Nevada. Use code MSCUST for a $150 discount.
Register nowThe Power BI DataViz World Championships are on! With four chances to enter, you could win a spot in the LIVE Grand Finale in Las Vegas. Show off your skills.
Good Morning,
I have an issue with time calculation in Power BI. In my case, I’ve determined the production lead time for multiple orders and stored it in a table column in the time format "hh:mm:ss." Each of the orders has a different quantity, so my next step is to calculate the production time per unit.
My approach for this is:
Time per Unit = SUM('Production Orders'[Production Time])/SUM('Production Orders'[Quantity])
However, the result is incorrect. I’ve also tried saving the lead time in decimal format, but the result remains the same. The solution should be 00:00:55, but the result I am getting is 19:52:07.
Perhaps someone has an idea of where my mistake might be.
A sample file is attached.
Order | Quantity | Production Time |
1 | 2 | 00:03:10 |
2 | 3 | 00:02:05 |
3 | 4 | 00:04:52 |
4 | 2 | 00:01:44 |
5 | 4 | 00:02:36 |
6 | 2 | 00:02:16 |
Thank you!
Solved! Go to Solution.
Hi @timbckr812 - First, convert the production time to a numerical value, i.e., seconds, to ensure proper summing.
create a measure as follows;
Production Time per Unit =
VAR TotalTimeSeconds = SUMX('Production Orders',
(HOUR('Production Orders'[Production Time]) * 3600) +
(MINUTE('Production Orders'[Production Time]) * 60) +
SECOND('Production Orders'[Production Time]))
VAR TotalQuantity = SUM('Production Orders'[Quantity])
VAR TimePerUnitSeconds = TotalTimeSeconds / TotalQuantity
RETURN
FORMAT(TIME(0,0,TimePerUnitSeconds), "hh:mm:ss")
It sum the total production time in seconds and divide by the total quantity. please check the above and let know.
Proud to be a Super User! | |
Hello @timbckr812 ,
You can try below dax :
Time per Unit =
VAR TotalMinutes = SUMX(
'Production Orders',
HOUR('Production Orders'[Production Time]) * 60 +
MINUTE('Production Orders'[Production Time]) +
SECOND('Production Orders'[Production Time]) / 60
)
VAR TotalQuantity = SUM('Production Orders'[Quantity])
VAR MinutesPerUnit = TotalMinutes / TotalQuantity
RETURN
TIME(INT(MinutesPerUnit / 60), INT(MOD(MinutesPerUnit, 60)), 0)
Cheers
Hi @timbckr812
I can't replicate your expected result using your sample data even if the time per unit is evaluated separately for each order and then summed up in the total row but I am definitely not getting 19:52:07
Attached is the sample pbix used in the screenshot.
Proud to be a Super User!
Hi @timbckr812
I can't replicate your expected result using your sample data even if the time per unit is evaluated separately for each order and then summed up in the total row but I am definitely not getting 19:52:07
Attached is the sample pbix used in the screenshot.
Proud to be a Super User!
First of all thanks for your reply 🙂
This is my solution. As soon as I format the time as a decimal number, I get results that differ from yours. There's always a "1" before the decimal point—could that be the problem? How do i fix that?
Is an order equivalent to a single record in your data or there are multiple records involved? If there are multiple records which is not in your descrption, that's the only reason I can think of why your sum is overstated.
Proud to be a Super User!
Yes ist equvalent to a single record. I import the files from an Excel file, where the production time is stored in time format. As soon as I load the data into Power BI and then convert it into a decimal number, I get the "1" before the decimal point. Please see the attached images.
I got it now, the import type was datetime and not time, as seen in the picture. My bad thank you!!
Hello @timbckr812 ,
You can try below dax :
Time per Unit =
VAR TotalMinutes = SUMX(
'Production Orders',
HOUR('Production Orders'[Production Time]) * 60 +
MINUTE('Production Orders'[Production Time]) +
SECOND('Production Orders'[Production Time]) / 60
)
VAR TotalQuantity = SUM('Production Orders'[Quantity])
VAR MinutesPerUnit = TotalMinutes / TotalQuantity
RETURN
TIME(INT(MinutesPerUnit / 60), INT(MOD(MinutesPerUnit, 60)), 0)
Cheers
Works perfect, thank!!
Hi @timbckr812 - First, convert the production time to a numerical value, i.e., seconds, to ensure proper summing.
create a measure as follows;
Production Time per Unit =
VAR TotalTimeSeconds = SUMX('Production Orders',
(HOUR('Production Orders'[Production Time]) * 3600) +
(MINUTE('Production Orders'[Production Time]) * 60) +
SECOND('Production Orders'[Production Time]))
VAR TotalQuantity = SUM('Production Orders'[Quantity])
VAR TimePerUnitSeconds = TotalTimeSeconds / TotalQuantity
RETURN
FORMAT(TIME(0,0,TimePerUnitSeconds), "hh:mm:ss")
It sum the total production time in seconds and divide by the total quantity. please check the above and let know.
Proud to be a Super User! | |
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Prices go up Feb. 11th.
If you love stickers, then you will definitely want to check out our Community Sticker Challenge!
User | Count |
---|---|
140 | |
71 | |
64 | |
52 | |
50 |
User | Count |
---|---|
209 | |
92 | |
64 | |
59 | |
56 |