У меня есть таблица в Redshift, который имеет столбец даты плюс некоторые другие данные:Получить недостающие даты из таблицы в Redshift
+------------+-------+
| Date | Value |
+------------+-------+
| 2016-09-25 | 1 |
| 2016-09-28 | 2 |
| 2016-09-29 | 3 |
+------------+-------+
Я хочу, чтобы получить «недостающую» дату из этой таблицы. Таким образом, из примера выше, если бы я хотел, чтобы получить все недостающие даты от 7 дней назад до сих пор, я хотел бы, чтобы произвести запрос, который возвращает:
2016-09-22
2016-09-23
2016-09-24
2016-09-26
2016-09-27
Я пытаюсь использовать generate_series (..) чтобы произвести все даты, а затем отфильтровать их для того, что уже существует в моей таблице. Итак, что-то вроде:
select CURRENT_DATE + i as MyDate
from generate_series(date '2016-09-22'- CURRENT_DATE, date '2016-09-29' - CURRENT_DATE) i
where MyDate not in (select [Date] from MyTable)
В этом случае у меня есть ошибка «MyDate» не существует. Я пытался также с помощью и за исключением пункта, который затем производит ошибку:
INFO: Function "generate_series(integer,integer)" not supported.
[Err] ERROR: Specified types or functions (one per INFO message) not supported on Redshift tables.
Различные другие вещи, которые я пробовал производить эту ошибку, я могу запустить generate_series (..), когда его самостоятельно, но если я попробовать с любой другой оговоркой и т. д. она падает.
Возможно ли это в Redshift?
Ah okay пытался избежать этого, но похоже, что выбора не так много. Я попробовал загружать даты в временную таблицу, но, как вы говорите, если вы ее сочетаете с чем угодно - даже вставкой, она не работает – MartinM
Я дал ответ, который может быть интересен :) – MartinM