This analytic function lets you query more than one row in a table at a time without having to join the table to itself


func.lag(field, 1).over(partition_by=field, order_by=field)


This is an example of using the lag() capability to calculate the time interval in time series data where each event is on a distinct row.

This assumes you have a table of time series data that looks like this:

Building AJohn Doe2022-01-05 15:34:31
Building AJohn Doe2022-01-05 15:44:31
Building AJohn Doe2022-01-05 15:46:41
table.timestamp - func.lag(table.timestamp, 1).over(partition_by=[table.location, table.employee], order_by=table.timestamp)

Adding the expression above to an Interval column called delta would result in an output table like this:

Building AJohn Doe2022-01-05 15:34:31null
Building AJohn Doe2022-01-05 15:44:3100:10:00
Building AJohn Doe2022-01-05 15:46:4100:02:10
Last modified April 06, 2022 at 10:08 AM EST: Initial Documentation Commit (371ae8f)