HOP

Syntax

Description of the illustration hop.gif

Purpose

The HOP function assigns rows to fixed-size, time-based windows that start at regular slide intervals. When the slide is shorter than the window size, the windows overlap and a row can belong to more than one window. When the slide is longer than the window size, gaps can occur between windows.

Use HOP when you need regularly advancing windows for rolling analysis of time-based data.

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.

COLUMNS (datetime_column)

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

You cannot specify an expression. The function does not implicitly convert a character value to a datetime value. Convert the value before you pass the table or view to HOP.

slide

The positive interval between the starts of consecutive windows.

size

The positive interval that specifies the duration of each window.

offset

An optional interval that shifts the window alignment. The value must be a non-null runtime constant.

All interval arguments must be non-null runtime constants of type INTERVAL DAY TO SECOND or INTERVAL YEAR TO MONTH.

Semantics

Datetime and Calendar Considerations

Examples

The following example creates 10-second windows that start every 5 seconds. Because the slide is shorter than the window size, a row can belong to more than one window:

SELECT ip, visit_time, window_start, window_end
FROM HOP(
  visit,
  COLUMNS ( visit_time ),
  INTERVAL '5' SECOND,
  INTERVAL '10' SECOND
)
ORDER BY visit_time, window_start;

The following example counts rows in each window:

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

Restrictions

See Also: