В настоящее время у меня есть следующие необработанные данные в redshift.Временной интервал Redshift GROUP BY
timestamp ,lead
==================================
"2008-04-09 10:02:01.000000",true
"2008-04-09 10:03:05.000000",true
"2008-04-09 10:31:07.000000",true
"2008-04-09 11:00:05.000000",false
...
Итак, я хотел бы сгенерировать агрегированные данные с интервалом в 30 минут. Мой результат пожелал
timestamp ,count
==================================
"2008-04-09 10:00:00.000000",2
"2008-04-09 10:30:00.000000",1
"2008-04-09 11:00:00.000000",0
...
я упомянул https://stackoverflow.com/a/12046382/3238864, который действителен для PostgreSQL.
Я стараюсь, чтобы имитировать код размещен, используя
with thirty_min_intervals as (
select
(select min(timestamp)::date from events) + (n || ' minutes')::interval start_time,
(select min(timestamp)::date from events) + ((n+30) || ' minutes')::interval end_time
from generate_series(0, (24*60), 30) n
)
select count(CASE WHEN lead THEN 1 END) from events e
right join thirty_min_intervals f
on e.timestamp >= f.start_time and e.timestamp < f.end_time
group by f.start_time, f.end_time
order by f.start_time;
Однако я получаю ошибку
[0A000] ERROR: Specified types or functions (one per INFO message) not supported on Redshift tables.
Могу ли я узнать, что это хороший способ для выполнения расчета данных агрегации, от N интервала, в redshift.
Amazon-красное смещение не поддерживает 'generate_series()' функцию. [Обратите внимание, что для неподдерживаемых функций postgresql] (http://docs.aws.amazon.com/redshift/latest/dg/c_unsupported-postgresql-functions.html) – Viki888
Но если вы запустили голую команду 'select * from generate_series (0 , (24 * 60), 30) n; 'в красном смещении, он работает нормально. –
Да. 'Generate_series' будет работать в родительском узле. Если вы попытаетесь получить доступ к таблице красного смещения в запросе, у которого есть generate_series, она проведет через вас эту ошибку, поскольку дочерний узел не будет поддерживать функцию generate_series(). Если ваш запрос не имеет доступа к таблицам красного смещения, функция generate_series() даст вам результат. – Viki888