Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
02-16-2019 09:47 AM - last edited 04-09-2024 10:32 AM
This Quick Measure breaks a start and end time down into the number of minutes for each hour of the day. There are actually two measures included in order to demonstrate how to use the techniques in Measure Totals, The Final Word to display the correct totals and subtotals within a matrix.
Hour Breakdown = VAR __currentHour = HOUR(MAX('Hours'[Hour])) VAR __startHour = HOUR(MIN('Data'[Start])) VAR __endHour = HOUR(MAX('Data'[End])) VAR __table = GENERATESERIES(__startHour,__endHour,1) VAR __table1 = ADDCOLUMNS(__table,"__minutes", SWITCH(TRUE(), __startHour < __endHour && [Value] <> __endHour && [Value] <> __startHour,60, __startHour < __endHour && [Value] = __endHour,MINUTE(MAX('Data'[End])), 60-MINUTE(MAX(Data[Start])) ) ) VAR __table2 = FILTER(__table1,[__minutes]>0) RETURN SUMX(FILTER(__table2,[Value] = __currentHour),[__minutes])
Hour Breakdown Total = VAR __table = SUMMARIZE('Data',[Date],[ID]) VAR __table1 = GENERATE(__table,Hours) VAR __table2 = ADDCOLUMNS(__table1,"__duration",[Hour Breakdown]) RETURN IF(HASONEVALUE(Hours[Hour]) && HASONEVALUE(Data[ID]),[Hour Breakdown],SUMX(__table2,[__duration]))
eyJrIjoiZjYxYjUzYTEtMTM5ZS00NjAwLWEyZjgtNmM4MmFjMzEyODBhIiwidCI6Ijg3NDlmOWI5LWYzMmQtNDdhMS1hMjI0LTM2OTQxOGFlMmY1MSJ9
Hi @Greg_Deckler,
Wouldn't this be 36 instead of 24? If they started at 5:24 PM, they had 36 minutes in the 5 PM hour correct? Making the total 96 for 140 & 141 for the 5PM hour.
The 9:14 PM end time makes sense as they only had 14 minutes into the 9 PM hour.
@dcrow5378 Good catch. Easily fixed:
Hour Breakdown =
VAR __currentHour = HOUR(MAX('Hours'[Hour]))
VAR __startHour = HOUR(MIN('Data'[Start]))
VAR __endHour = HOUR(MAX('Data'[End]))
VAR __table = GENERATESERIES(__startHour,__endHour,1)
VAR __table1 = ADDCOLUMNS(__table,"__minutes",
SWITCH(TRUE(),
__startHour < __endHour && [Value] <> __endHour && [Value] <> __startHour,60,
__startHour < __endHour && [Value] = __endHour, MINUTE(MAX('Data'[End])),
60 - MINUTE(MAX(Data[Start]))
)
)
VAR __table2 = FILTER(__table1,[__minutes]>0)
RETURN
SUMX(FILTER(__table2,[Value] = __currentHour),[__minutes])
Will update.
@Anonymous Sure, if you could post that as text that would assist greatly.
Hello @Greg_Deckler ,
I am learning powerBI. I followed the above solution but somehow it's not working for my data. I wanted to show employee count by the hour and date. Here is what the sample data look like:
Could you please help me? Any help on this is appreciated
Thanks
Richa