SESSIONS

Syntax

Description of the illustration sessions.gif

Purpose

The SESSIONS table function groups rows into sessions based on the time between consecutive rows. A new session starts when the time between rows exceeds the specified gap. You can use PARTITION BY to create independent sessions for different values.

Arguments

schema

The schema that contains the input table or view. If you omit schema, then the database uses the schema of the current user.

table | view

The input table or view. The function returns all columns from this row source and adds WINDOW_START and WINDOW_END columns.

query_name

The name of a query block in a WITH clause.

PARTITION BY expr

An optional expression that divides the input into independent groups. You can specify multiple expressions in parentheses separated by commas.

COLUMNS (datetime_column)

Specify exactly one datetime column. The column can have any of these data types:

The function uses this column to order rows and determine session boundaries. You cannot specify an expression, and the function does not implicitly convert a character value to a datetime value.

gap

The positive interval that specifies the maximum time between consecutive datetime values in the same session. The value must be a non-null runtime constant of type INTERVAL DAY TO SECOND or INTERVAL YEAR TO MONTH.

Semantics

Datetime and Calendar Considerations

Examples

The following example creates independent sessions for each data center. Rows that are no more than five seconds apart belong to the same session:

SELECT data_center, visit_time, window_start, window_end
FROM SESSIONS(
  visit PARTITION BY data_center,
  COLUMNS ( visit_time ),
  INTERVAL '5' SECOND
);

The following example counts rows in each data center session:

SELECT data_center, window_start, window_end, COUNT(*)
FROM SESSIONS(
  visit PARTITION BY data_center,
  COLUMNS ( visit_time ),
  INTERVAL '5' SECOND
)
GROUP BY data_center, window_start, window_end
ORDER BY data_center, window_start, window_end;

Restrictions

See Also: