The ultimate Fabric, Power BI, SQL, and AI community-led learning event. Save €200 with code FABCOMM.
Get registeredCompete to become Power BI Data Viz World Champion! First round ends August 18th. Get started.
I can't figure out how to do this in dax column, getting the duration difference from the next row per name.
The table is already sorted by Name then by shift date then by punch time in ascending order.
Solved! Go to Solution.
Hi @JCKong
please try
Duration =
VAR CurrentTime = 'Table'[Punch Time]
VAR CurrentNameDateTable =
CALCULATETABLE (
VALUES ( 'Table'[Punch Time] ),
ALLEXCEPT ( 'Table', 'Table'[Name], 'Table'[Short Date] )
)
VAR TableAfter =
FILTER ( CurrentNameDateTable, 'Table'[Punch Time] > CurrentTime )
VAR NextTime =
MINX ( TableAfter, 'Table'[Punch Time] )
RETURN
COALESCE ( NextTime, CurrentTime ) - CurrentTime
Hi @tamerj1 ,
Encountered an issue when the time stamp passed the next day, example:
Shift Date: 11/10/2023 Punch Time 1: 11:00 PM
Shift Date: 11/11/2023 Punch Time 2: 12:30 AM
Ctreate a Punch DateTime column by adding Date and Time then use the following
Duration =
VAR CurrentTime = 'Table'[Punch Time]
VAR CurrentNameTable =
CALCULATETABLE (
VALUES ( 'Table'[Punch Time] ),
ALLEXCEPT ( 'Table', 'Table'[Name] )
)
VAR TableAfter =
FILTER ( CurrentNameTable, 'Table'[Punch DateTime] > CurrentTime )
VAR NextTime =
MINX ( TableAfter, 'Table'[Punch DateTime] )
RETURN
IF (
'Table'[Activity] = "Logout",
0,
COALESCE ( NextTime, CurrentTime ) - CurrentTime
)
Currently I use this but some of the Names doesn't show their duration:
Duration = VAR NextRow = CALCULATE ( SUM (Table[PunchTime]), FILTER (Table, Table[Index] = EARLIER (Table[Index]) + 1))) RETURN IF(Table[Activity] = "Logout", 0 , NextRow - Table[PunchTime])
Hi @JCKong
please try
Duration =
VAR CurrentTime = 'Table'[Punch Time]
VAR CurrentNameDateTable =
CALCULATETABLE (
VALUES ( 'Table'[Punch Time] ),
ALLEXCEPT ( 'Table', 'Table'[Name], 'Table'[Short Date] )
)
VAR TableAfter =
FILTER ( CurrentNameDateTable, 'Table'[Punch Time] > CurrentTime )
VAR NextTime =
MINX ( TableAfter, 'Table'[Punch Time] )
RETURN
COALESCE ( NextTime, CurrentTime ) - CurrentTime
Thank you @tamerj1 , this did work without the index column which increases the file size.
Used a measurement to Sum(Table[Duration]) as the Duration column above only shows earliest and there's no selection for SUM.
User | Count |
---|---|
28 | |
12 | |
8 | |
7 | |
5 |
User | Count |
---|---|
35 | |
14 | |
12 | |
9 | |
7 |