Функция DATEADD не допускается при ошибке Redshift - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь запустить следующее:

DROP TABLE IF exists timestamp_15min;
Create TEMP TABLE timestamp_15min AS 
SELECT 
    dateadd(minute,min_15,dateadd(hour,hours,dateadd(day,days,start_date::timestamp))) AS date_time,
    TO_CHAR(date_time,'HH24') || ':' || TO_CHAR(date_time,'MI')  || ':' || '00' AS mins15
FROM 
    (SELECT trunc(sysdate-14) AS start_date)
    CROSS JOIN (SELECT generate_series(0,14,1) AS days)
    CROSS JOIN (SELECT generate_series(0,24,1) AS hours)
CROSS JOIN (SELECT generate_series(0,60,15) as min_15)
;

И я получаю эту ошибку

Specified types or functions (one per INFO message) not supported on Redshift tables.

Если я удаляю DROP И CREATE TABLE, и просто запустите приведенную ниже команду с SELECT, она отлично работает

SELECT 
    dateadd(minute,min_15,dateadd(hour,hours,dateadd(day,days,start_date::timestamp))) AS date_time,
    TO_CHAR(date_time,'HH24') || ':' || TO_CHAR(date_time,'MI')  || ':' || '00' AS mins15
FROM 
    (SELECT trunc(sysdate-14) AS start_date)
    CROSS JOIN (SELECT generate_series(0,14,1) AS days)
    CROSS JOIN (SELECT generate_series(0,24,1) AS hours)
CROSS JOIN (SELECT generate_series(0,60,15) as min_15)

Может кто-нибудь объяснить, какая функция или тип блокирует Redshift?

1 Ответ

1 голос
/ 22 января 2020

generate_series не поддерживается в запросах, которые ссылаются на пользовательские таблицы Redshift. Он будет работать только при запросе таблиц каталога.

Вы можете использовать функцию ROW_NUMBER() для генерации серии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...