Amazon Redshift: как создать таблицу, содержащую временные ряды

Я хочу создать таблицу в Redshift, которая будет иметь столбец date чьи ценности будут с сегодняшнего дня до следующих 3 лет.

        date         
---------------------
 2017-05-03 00:00:00
 2017-05-04 00:00:00
 2017-05-05 00:00:00
 2017-05-06 00:00:00

Я пытаюсь сделать это с помощью create table as select_query заявление.

 create table tmp_date_series as select now()::date::timestamp + generate_series(0, 1000);

Однако приведенный выше запрос завершается с ошибкой -

INFO:  Function "now()" not supported.
INFO:  Function "generate_series(integer,integer)" not supported.
ERROR:  Specified types or functions (one per INFO message) not supported on Redshift tables.

Но если я запускаю запрос на выбор в одиночку - select now()::date::timestamp + generate_series(0, 150) as date;работает без ошибок

        date         
---------------------
 2017-05-03 00:00:00
 2017-05-04 00:00:00
 2017-05-05 00:00:00

Есть идеи, как мне создать такую ​​таблицу?

0 ответов

К несчастью, generate_series не поддерживается в Redshift.

Моя команда использует CTE вот так, чтобы получить серию последовательных дат, начинающихся с определенной даты:

with dates as (
    select
        (trunc(getdate()) + row_number() over (order by 1))::date as date
    from
        large_enough_table
    limit
        150
)

Тогда вы можете использовать его как:

select date
from dates
order by date
limit 5

И получить:

2018-12-13
2018-12-14
...
Другие вопросы по тегам