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
...