Forum Discussion
Minus Breaktime Between Start and End Time
- 4 years ago
Hi, KUMAR_AK
I used other logic to implement it before, so it will be relatively simple
If it must be this logic, Dax is not easy to express. Sometimes the logic of the language is converted into dax, which is not as simple as it seems, it is very complicated.
I hope you provide the sample won't change...😅
Try:
Measure = IF ( HASONEVALUE ( 'Table'[starttime] ), SUMX ( ADDCOLUMNS ( SUMMARIZE ( FILTER ( ALL ( 'Table' ), [name] = "Open" ), [starttime], "enddate", MINX ( FILTER ( ALL ( 'Table' ), [name] = "Close" && [starttime] > EARLIER ( 'Table'[starttime] ) ), [starttime] ) ), "breaktime", SUMX ( FILTER ( ALL ( 'Table' ), [starttime] > EARLIER ( 'Table'[starttime] ) && [starttime] < EARLIER ( [enddate] ) && [breakdetails] = "Breaktime" && [starttime] = SELECTEDVALUE ( 'Table'[starttime] ) ), DATEDIFF ( [starttime], [_Endtime], MINUTE ) ) ), [breaktime] ), SUMX ( ADDCOLUMNS ( SUMMARIZE ( FILTER ( ALL ( 'Table' ), [name] = "Open" ), [starttime], "enddate", MINX ( FILTER ( ALL ( 'Table' ), [name] = "Close" && [starttime] > EARLIER ( 'Table'[starttime] ) ), [starttime] ) ), "breaktime", SUMX ( FILTER ( ALL ( 'Table' ), [starttime] > EARLIER ( 'Table'[starttime] ) && [starttime] < EARLIER ( [enddate] ) && [breakdetails] = "Breaktime" ), DATEDIFF ( [starttime], [_Endtime], MINUTE ) ) ), [breaktime] ) )Did I answer your question ? Please mark my reply as solution. Thank you very much.
If not, please feel free to ask me.
Best Regards,
Community Support Team _ Janey
Hi, KUMAR_AK
According to your description, I think you can create two measures to get your desired result.
Like this:
TOTAL POTENTIAL TIME =
SUMX (
SUMMARIZE (
'Table',
[startdate],
[enddate],
[name],
"a",
VAR startdate =
CALCULATE ( MAX ( 'Table'[startdate] ), 'Table'[name] = "start" )
VAR enddate =
IF (
SELECTEDVALUE ( 'Table'[name] ) = "start",
MINX (
FILTER (
ALL ( 'Table' ),
[name] = "end"
&& [startdate] > SELECTEDVALUE ( 'Table'[startdate] )
),
[startdate]
)
)
RETURN
DATEDIFF ( SELECTEDVALUE ( 'Table'[startdate] ), enddate, MINUTE )
),
[a]
)
NPT DURING TOTAL POTENTIAL TIME =
SUMX (
SUMMARIZE (
'Table',
[startdate],
[enddate],
[name],
"a",
VAR minstart =
CALCULATE (
MIN ( 'Table'[startdate] ),
FILTER ( ALL ( 'Table' ), 'Table'[name] = "start" )
)
VAR maxend =
CALCULATE (
MAX ( 'Table'[startdate] ),
FILTER ( ALL ( 'Table' ), 'Table'[name] = "end" )
)
VAR maxdate =
MAXX (
FILTER (
ALL ( 'Table' ),
[name] <> "breaktime"
&& [startdate] < SELECTEDVALUE ( 'Table'[startdate] )
),
[startdate]
)
VAR statename =
MAXX ( FILTER ( ALL ( 'Table' ), [startdate] = maxdate ), [name] )
RETURN
IF (
SELECTEDVALUE ( 'Table'[name] ) = "breaktime"
&& SELECTEDVALUE ( 'Table'[startdate] ) > minstart
&& SELECTEDVALUE ( 'Table'[startdate] ) < maxend
&& statename = "start",
DATEDIFF (
SELECTEDVALUE ( 'Table'[startdate] ),
SELECTEDVALUE ( 'Table'[enddate] ),
MINUTE
)
)
),
[a]
)
Below is my sample. Hope it helps.
Did I answer your question ? Please mark my reply as solution. Thank you very much.
If not, please feel free to ask me.
Best Regards,
Community Support Team _ Janey
- KUMAR_AK4 years ago
Microsoft Employee
Hi v-janeyg-msft
Thanks for the info, it works , just trying to implement the same if Breaktime is in Seperate column like break details
Calculation is same just encountering some error in below piece of codefor npt during potentioal timeVAR maxdate =MAXX (FILTER (ALL ( 'Table' ),[name] <> "breaktime"&& [startdate] < SELECTEDVALUE ( 'Table'[startdate] )),[startdate])VAR statename =MAXX ( FILTER ( ALL ( 'Table' ), [startdate] = maxdate ), [name])
If you can elp me in that thats works Please
Thanks
Kumar- v-janeyg-msft4 years ago
Community Support
Hi, KUMAR_AK
Real breakdetails is better to write logic. I thought about the previous one for a long while.😅
You can try:
Measure = SUMX ( SUMMARIZE ( 'Table', [StartTime], [EndTime], [Name], "a", IF ( SELECTEDVALUE ( 'Table'[BreakDetails] ) = "Breaktime", DATEDIFF ( SELECTEDVALUE ( 'Table'[StartTime] ), SELECTEDVALUE ( 'Table'[EndTime] ), MINUTE ), 0 ) ), [a] )Best Regards,
Community Support Team _ Janey- KUMAR_AK4 years ago
Microsoft Employee
Hi v-janeyg-msft
Really Sorry on last thing there was a small typo in my screenshot , i have breaktime before start and after end also
and in between end and start , i want only breaktime in between start and end
Below is the screen hot for exact Expectedoutput hilighited in column last one and red highlited are breaktime before start and after endStartTime EndTime ID Name BreakDetails Expected Output 10/13/2021 6:55:00 AM null A-125698 Login No Breaktime 0 10/13/2021 7:00:00 AM 10/13/2021 7:30:00 AM B-125698 Issues Breaktime 0 10/13/2021 9:00:00 AM null C-125698 Start No Breaktime 0 10/13/2021 10:00:00 AM 10/13/2021 11:00:00 AM D-125698 Issue waiting 0 10/13/2021 11:30:00 AM 10/13/2021 11:45:00 AM E-125698 Issues Breaktime 15 10/13/2021 1:00:00 PM null F-125698 XOOJ waiting time 0 10/13/2021 1:10:00 PM null G-125698 End No Breaktime 0 10/13/2021 1:45:00 PM 10/13/2021 2:40:00 PM H-125698 Next Breaktime 0 10/13/2021 3:00:00 PM null C-125698 Start waiting time 0 10/13/2021 3:15:00 PM 10/13/2021 3:30:00 PM I-125698 RIT No Breaktime 0 10/13/2021 4:00:00 PM 10/13/2021 16:30 F-125698 Inject Breaktime 30 10/13/2021 5:00:00 PM 10/13/2021 5:30:00 PM K-125698 RIH waiting time 0 10/13/2021 6:00:00 PM null C-125698 Mill waiting time 0 10/13/2021 6:30:00 PM 10/13/2021 7:00:00 PM M-125698 Tag waiting time 0 10/13/2021 7:30:00 PM null F-125698 End No Breaktime 0 10/13/2021 8:00:00 PM 10/13/2021 20:30 S-125698 Down Breaktime 0 10/13/2021 21:00 null t-125698 Job Ticket No Breaktime 0 45
Thanks
Kumar