row_window_session()
Calculates session start values of a column in a serialized row set.
Syntax
row_window_session
(
Expr
,
MaxDistanceFromFirst
,
MaxDistanceBetweenNeighbors
[,
Restart
] )
Expr
is an expression whose values are grouped together in sessions. Null values produce null values, and the next value starts a new session.Expr
must be a scalar expression of typedatetime
.MaxDistanceFromFirst
establishes one criterion for starting a new session: The maximum distance between the current value ofExpr
and the value ofExpr
at the beginning of the session. It's a scalar constant of typetimespan
.MaxDistanceBetweenNeighbors
establishes a second criterion for starting a new session: The maximum distance from one value ofExpr
to the next. It's a scalar constant of typetimespan
.Restart is an optional scalar expression of type
boolean
. If specified, every value that evaluates totrue
will immediately restart the session.
Learn more about syntax conventions.
Returns
The function returns the values at the beginning of each session.
The function has the following conceptual calculation model:
Goes over the input sequence of
Expr
values in order.For every value, determines if it establishes a new session.
If it establishes a new session, it emits the value of
Expr
. Otherwise, emits the previous value ofExpr
.
Note
The condition that determines if the value represents a new session is a logical OR one of the following conditions:
- If there was no previous session value, or the previous session value was null.
- If the value of
Expr
equals or exceeds the previous session value plusMaxDistanceFromFirst
. - If the value of
Expr
equals or exceeds the previous value ofExpr
plusMaxDistanceBetweenNeighbors
. - If
Restart
condition is specified and evaluates totrue
.
Examples
The following example shows how to calculate the session start values for a table
with two columns: an ID
column that identifies a sequence, and a Timestamp
column that gives the time at which each record occurred. In this example,
a session can't exceed 1 hour, and it continues as long as records are less than
5 minutes apart.
datatable (ID:string, Timestamp:datetime) [
// ...
]
| sort by ID asc, Timestamp asc
| extend SessionStarted = row_window_session(Timestamp, 1h, 5m, ID != prev(ID))
Related content
Feedback
https://aka.ms/ContentUserFeedback.
Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see:Submit and view feedback for