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?
- ziyabikram965 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)RETURNIF(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))