Forum Discussion
ziyabikram96
5 years agoHelper V
Time Difference between consecutive rows
I am getting error when ever consective c/in or C/out occure in calaculating time difference but whenever consecutive occure I want to pick maximum from the C/out and minimum from C/In for further cl...
- 5 years ago
Hi, ziyabikram96
To create a calculated column like this:
isIN_is0 = VAR _previouIn = CALCULATE ( MIN ( [Index] ), FILTER ( ALL ( 'Table' ), [State] = "C/In" && [Index] = EARLIER ( [Index] ) - 1 ) ) VAR _if = IF ( 'Table'[State] = "C/In", IF ( [Index] - _previouIn = 1, 1 ) ) RETURN _ifthen the test3 would be like this:
test_3 = VAR _CurrentIndex = FIRSTNONBLANK ('Table'[Index], 1 ) VAR _CurrentStatus = FIRSTNONBLANK ( 'Table'[State], 1 ) VAR _IndexOfPreviousCheckIN = CALCULATE ( MAX ( 'Table'[Index] ), FILTER ( ALL ( 'Table' ), AND ( 'Table'[Index] < _CurrentIndex, 'Table'[State] = "C/In" ) ) //,OR('InOutData(PAK)'[Index] < CurrentIndex, // 'InOutData(PAK)'[State] = "C/Out") ) //***************************************************************************************** var _lastOut= CALCULATE( LASTNONBLANK('Table'[Index],MAX('Table'[State])="C/Out"), FILTER(ALL('Table'),AND ( 'Table'[Index] < _CurrentIndex, 'Table'[State] = "C/Out" )) ) //***************************************************************************************** //***************************************************************************************** var _firstIn= IF(MAX('Table'[State])="C/In",_lastOut+1) //***************************************************************************************** VAR _IndexOfFollowingCheckOut = IF ( ISBLANK ( _IndexOfPreviousCheckIN ), 0, // _IndexOfPreviousCheckIN+1 //***************************************************************************************** _lastOut //***************************************************************************************** ) var _result= IF ( OR( //***************************************************************************************** OR ( _CurrentIndex = 0, _CurrentStatus = "C/Out" ),MAX('Table'[isIN_is0])=1), //***************************************************************************************** 0, DATEDIFF ( CALCULATE ( FIRSTNONBLANK ( 'Table'[Date & Time State], 0 ), FILTER ( ALL ( 'Table' ), 'Table'[Index] = _IndexOfFollowingCheckOut ) ), // FIRSTNONBLANK ( 'Table'[Date & Time State], 1 ), //***************************************************************************************** CALCULATE( MAX('Table'[Date & Time State]), FILTER( ALL('Table'), 'Table'[Index]=_firstIn ) ), //***************************************************************************************** MINUTE ) ) RETURN _resultresult:
Please refer to the attachment below for details
Hope this helps.
Best Regards,
Community Support Team _ Zeon Zheng
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
sm_talha
5 years agoResolver II
Can you please show how are you calculating the time difference?
ziyabikram96
5 years agoHelper V
Here it is
test =
VAR CurrentIndex = FIRSTNONBLANK('InOutData(PAK)'[Index],1)
VAR CurrentStatus = FIRSTNONBLANK('InOutData(PAK)'[State],1)
VAR IndexOfPreviousCheckIN =
CALCULATE(
MAX('InOutData(PAK)'[Index]),
FILTER(
ALL('InOutData(PAK)'),
AND(
'InOutData(PAK)'[Index] < CurrentIndex ,
'InOutData(PAK)'[State] = "C/In"
)
)//,OR('InOutData(PAK)'[Index] < CurrentIndex,
// 'InOutData(PAK)'[State] = "C/Out")
)
VAR IndexOfFollowingCheckOut =
IF(
ISBLANK(IndexOfPreviousCheckIN),
0,
IndexOfPreviousCheckIN +1
)
RETURN
IF(
OR(CurrentIndex = 0, CurrentStatus = "C/Out" ),
0,
DATEDIFF(
CALCULATE(
FIRSTNONBLANK('InOutData(PAK)'[Time],0),
FILTER(
ALL('InOutData(PAK)'),
'InOutData(PAK)'[Index] = IndexOfFollowingCheckOut
)
),
FIRSTNONBLANK('InOutData(PAK)'[Time],1),
MINUTE
)
)