generate_series

View as Markdown

generate_series (Integers)

Generate a series of integer values.

SELECT * FROM TABLE(
generate_series(
<series_start>,
<series_end>
[, <increment>]
)

Input Arguments

ParameterDescriptionData Types
<series_start>Starting integer value, inclusive.BIGINT
<series_end>Ending integer value, inclusive.BIGINT
<series_step> (optional, defaults to 1)Increment to increase or decrease and values that follow. Integer.BIGINT

Output Columns

NameDescriptionData Types
generate_seriesThe integer series specified by the input arguments.Column<BIGINT>

Example

heavysql> select * from table(generate_series(2, 10, 2));
series
2
4
6
8
10
5 rows returned.
heavysql> select * from table(generate_series(8, -4, -3));
series
8
5
2
-1
-4
5 rows returned.

generate_series (Timestamps)

Generate a series of timestamp values from start_timestamp to end_timestamp .

1SELECT * FROM TABLE(
2 generate_series(
3 <series_start>,
4 <series_end>,
5 <series_step>
6 )
7)

Input Arguments

ParameterDescriptionData Types
series_startStarting timestamp value, inclusive.TIMESTAMP(9) (Timestamp literals with other precisions will be auto-casted to TIMESTAMP(9) )
series_endEnding timestamp value, inclusive.TIMESTAMP(9) (Timestamp literals with other precisions will be auto-casted to TIMESTAMP(9) )
series_stepTime/Date interval signifying step between each element in the returned series.INTERVAL

Output Columns

NameDescriptionOutput Types
generate_seriesThe timestamp series specified by the input arguments.COLUMN<TIMESTAMP(9)>

Example

SELECT
generate_series AS ts
FROM
TABLE(
generate_series(
TIMESTAMP(0) '2021-01-01 00:00:00',
TIMESTAMP(0) '2021-09-04 00:00:00',
INTERVAL '1' MONTH
)
)
ORDER BY ts;
ts
2021-01-01 00:00:00.000000000
2021-02-01 00:00:00.000000000
2021-03-01 00:00:00.000000000
2021-04-01 00:00:00.000000000
2021-05-01 00:00:00.000000000
2021-06-01 00:00:00.000000000
2021-07-01 00:00:00.000000000
2021-08-01 00:00:00.000000000
2021-09-01 00:00:00.000000000