2017-02-07 3 views
1

Мне нужно подсчитывать количество пользователей в каждом месяце. Я написал запрос.Ошибка в запросе на Redshift

SELECT COUNT(distinct user_id) 
from (
select TO_CHAR((current_date - interval '1 month' * a),'YYYY-MM') as MyMonth 
from generate_series(1,60,1) AS s(a) 
) months 
LEFT OUTER JOIN database.users 
ON months.MyMonth=to_char(created_at, 'YYYY-MM') 
GROUP BY months.MyMonth 

Но когда я пытаюсь выполнить его, появляется ошибка: «Фиксированными типы или функции (по одному на информационное сообщение) не поддерживается на RedShift таблиц.» Можно ли как-то переписать этот запрос или указать, пожалуйста, где ошибка?

+0

Это не дало вам больше? Обычно будет сообщение INFO, непосредственно предшествующее «Указанным типам или функциям ...», сообщающее вам, какая функция, в частности, вызывала проблему. –

+0

http://docs.aws.amazon.com/redshift/latest/dg/c_redshift-and-postgres-sql.html специально: http://docs.aws.amazon.com/redshift/latest/dg/c_unsupported- PostgreSQL-functions.html –

ответ

1

Команда generate_series() не поддерживается полностью на Amazon Redshift.

Он может использоваться для запросов, которые выполняются исключительно на узле Leader, но не могут использоваться в запросах, связанных с таблицами, поскольку они связаны с узлами кластера. Единственным обходным решением является создание большой таблицы с большим количеством значений и присоединение к ней для получения диапазона чисел. (Немного работы спереди, но тогда он отлично работает.)

Вы найдете много похожих вопросов по StackOverflow, связанных с generate_series().

Смежные вопросы