Это правда, что GENERATE_SERIES
это предположительно не поддерживается Redshift (здесь Документация Redshift говорит о том, что он не поддерживается), и поэтому всякий раз, когда вам нужно генерировать строки, вы должны создайте их на лету (как показано ниже):
WITH ten as (
select 1 union all
select 1 union all
select 1 union all
select 1 union all
select 1 union all
select 1 union all
select 1 union all
select 1 union all
select 1 union all
select 1
), ten_k as (
select row_number() over () as x
from ten a cross join
ten b cross join
ten c cross join
ten d
)
SELECT to_char(('2012-01-01'::date + x)::date,'yyyymmdd')
FROM ten_k limit 365*15;
В качестве альтернативы вы можете выбрать строки где-то:
SELECT x FROM (SELECT row_number() over () as x FROM arbitrary_table limit 10000) as ten_k
Действительно ли GENERATE_SERIES
не поддерживается?
Я был в шоке , увидев, что вы отправили запрос:
SELECT to_char(('2012-01-01'::date + x)::date,'yyyymmdd')
FROM generate_series(1, 365*15, 1) x;
фактически работал, когда работал против нашего Redshift (в версии 1.0.7078). Примечания к выпуску не упоминают никаких новых функциональных возможностей в этой области [: puzzled:].
EDIT:
Очевидно, на этот вопрос , generate_series
работает только на узле-лидере , но завершается неудачно, когда ваш запрос должен достичь вычислительных узлов.
Следовательно, не полная поддержка этой функции означает, что не поддерживается .