lag¶
Description¶
Return the value of one column in a previous row across an ordered group.
offset
is the number of rows backwards from the current row to obtain a value.
If no ordering is specified, the default ordering is that of the invoking verb,
which is generally the valid_from
timestamp, ascending. In this case,
lag(col, 1)
returns the most recent prior value for column col
.
Return type¶
value
Domain¶
This is a window function (calculates over a group of multiple input rows using windowing.)
Categories¶
Usage¶
lag(value, lagby)
Argument |
Type |
Optional |
Repeatable |
Restrictions |
---|---|---|---|---|
value |
storable |
no |
no |
none |
lagby |
int64 |
no |
no |
constant |
Examples¶
make_col prev_value:window(lag(value, 1), group_by(key))
Obtain the most recent value
within the group identified by key
and store
the results in a new column named prev_value
. Because we did not specify a
order_by
clause in the window function nor in the verb, the lag
function
would use the default ordering, which is time ascending.
timestamp |
key |
value |
prev_value |
---|---|---|---|
100 |
A |
5 |
null |
150 |
B |
6 |
null |
180 |
A |
4 |
5 |
300 |
B |
5 |
6 |
400 |
A |
3 |
4 |
make_col high_value:window(lag(value, 2), order_by(value, false), group_by(key))
Obtain the second highest value
below the current value
within the group
identified by key
and store the results in a new column named high_value
. We
use an order_by
function to order the rows by value ascending.
timestamp |
key |
value |
high_value |
---|---|---|---|
100 |
A |
5 |
3 |
200 |
B |
6 |
2 |
200 |
A |
4 |
null |
300 |
B |
5 |
null |
400 |
A |
3 |
null |
400 |
B |
2 |
null |
500 |
A |
7 |
4 |
make_col prev_value:window(lag(value, 1), group_by(key), frame_exact(back:100ns))
Obtain the most recent value
within the group identified by key
and store
the results in a new column named prev_value
. Because a frame_exact
is
specified for the window function, prev_value
would be null if the most recent
value is found outside the window frame.
timestamp |
key |
value |
prev_value |
---|---|---|---|
100 |
A |
5 |
null |
150 |
B |
6 |
null |
180 |
A |
4 |
5 |
300 |
B |
5 |
null |
400 |
A |
3 |
null |