This is best Fabric, Power BI, SQL and AI community event. How do we know? The last event sold out! Save €200 with code FABCMTY200.
Register nowJuly 28 - August 9 | Final Round of the Power BI Dataviz World Championships. This is your chance. Learn more
How to calculate rows on a table in Power BI? I want to create a column "started" as below, for each row of this column I need the result like this excel formula: =IF(AND(A3=A2;B3-B2<1);"No";"yes")
part | install date | started |
| PAU-0101 | 26/03/2019 05:17 | yes |
| PAU-0101 | 07/04/2019 18:56 | No |
| PAU-0101 | 07/04/2019 19:56 | yes |
| PAU-0102 | 26/03/2019 05:17 | yes |
| PAU-0102 | 07/04/2019 18:56 | No |
| PAU-0102 | 07/04/2019 19:56 | yes |
Solved! Go to Solution.
JUST PERFECT!!!
started = VAR v_LagPart = CALCULATE( MAX( Data[part] ), FILTER( Data, Data[part] = EARLIER( Data[part] ) && Data[installdate] < EARLIER( Data[installdate] ) ) ) VAR v_LagDate = CALCULATE( MAX( Data[installdate] ), FILTER( Data, Data[part] = EARLIER( Data[part] ) && Data[installdate] < EARLIER( Data[installdate] ) ) ) RETURN IF( Data[part] = v_LagPart && ( DATEDIFF( v_LagDate, Data[installdate], MINUTE ) < 1440 ), "No", "Yes" )
Hi,
Can you try to use this:
started =
VAR v_LagPart = CALCULATE( MAX( Data[part] ),
FILTER( Data, Data[part] = EARLIER( Data[part] ) &&
Data[installdate] < EARLIER( Data[installdate] )
)
)
VAR v_LagDate = CALCULATE( MAX( Data[installdate] ),
FILTER( Data, Data[part] = EARLIER( Data[part] ) &&
Data[installdate] < EARLIER( Data[installdate] )
)
)
RETURN IF( Data[part] = v_LagPart && ( DATEDIFF( Data[installdate],v_LagDate, DAY ) < 1 && DATEDIFF( Data[installdate],v_LagDate, DAY ) <> 0 ), "No", "Yes" )Thanks.
Thank you, elegant coding.
I tried your suggestion but it does not look right, see my results table:
Hi, thanks a lot for the help so far!!
First the table columns must be sorted, Column "Part" ascending and column "Installdate-time" also ascending.
the column "started" intents to return a "no" if:
the "Part" in row 2 is equal to the "Part" in row 1, and
if the "Installdate-time" of row 2 minus "Installdate-time" of row 1 is less than 1 day.
But, if the difference between the row 2 and row 1 "Installdate-time" is more than 1 day, it must return a "yes".
So for the same "Part", if it runs less than one day it did not started, but if it runs more than one day it is considered as successfully started.
Hi @edgarjb-68 ,
Can you try using this:
started =
VAR v_LagPart = CALCULATE( MAX( Data[part] ),
FILTER( Data, Data[part] = EARLIER( Data[part] ) &&
Data[installdate] < EARLIER( Data[installdate] )
)
)
VAR v_LagDate = CALCULATE( MAX( Data[installdate] ),
FILTER( Data, Data[part] = EARLIER( Data[part] ) &&
Data[installdate] < EARLIER( Data[installdate] )
)
)
RETURN IF( Data[part] = v_LagPart && ( DATEDIFF( v_LagDate, Data[installdate], DAY ) < 1 ), "No", "Yes" )Thanks.
Hi!! Thanks a lot!! Almost there!!!
See that there are a few rows (highlighted) where the response should be "No", because the difference between rows 2 and 1 is less than 1 day (24 hours) for the "Installdate".
Hi @edgarjb-68 ,
This should work:
started =
VAR v_LagPart = CALCULATE( MAX( Data[part] ),
FILTER( Data, Data[part] = EARLIER( Data[part] ) &&
Data[installdate] < EARLIER( Data[installdate] )
)
)
VAR v_LagDate = CALCULATE( MAX( Data[installdate] ),
FILTER( Data, Data[part] = EARLIER( Data[part] ) &&
Data[installdate] < EARLIER( Data[installdate] )
)
)
RETURN IF( Data[part] = v_LagPart && ( DATEDIFF( v_LagDate, Data[installdate], HOUR ) < 24 ), "No", "Yes" )Thanks.
Please accept this as a solution if it satisfies the requirement. Appreciate your Kudos. 🙂
Wow, it is very, very close to it!!!
Though I still find only 5 instances where the response should be "No", see two examples highlighted.
One thing I noticed is that on those cases the "installdate" difference is very close to 24 hours, somthing like 23.5 or higher.
JUST PERFECT!!!
started = VAR v_LagPart = CALCULATE( MAX( Data[part] ), FILTER( Data, Data[part] = EARLIER( Data[part] ) && Data[installdate] < EARLIER( Data[installdate] ) ) ) VAR v_LagDate = CALCULATE( MAX( Data[installdate] ), FILTER( Data, Data[part] = EARLIER( Data[part] ) && Data[installdate] < EARLIER( Data[installdate] ) ) ) RETURN IF( Data[part] = v_LagPart && ( DATEDIFF( v_LagDate, Data[installdate], MINUTE ) < 1440 ), "No", "Yes" )
Join us in Barcelona for FabCon and SQLCon, the Fabric, Power BI, SQL, and AI community event. Save €200 with code FABCMTY200.
If you love stickers, then you will definitely want to check out our community sticker challenge, Barcelona edition!
Check out the July 2026 Power BI update to learn about new features.
| User | Count |
|---|---|
| 25 | |
| 23 | |
| 19 | |
| 17 | |
| 14 |
| User | Count |
|---|---|
| 24 | |
| 20 | |
| 20 | |
| 19 | |
| 19 |