Я пытаюсь заполнить ежедневные данные за отсутствующие даты и не могу найти ответ, пожалуйста, помогите.Заполните таблицу данными для отсутствующей даты (postgresql, redshift)
Мой daily_table
пример:
url | timestamp_gmt | visitors | hits | other..
-------------------+---------------+----------+-------+-------
www.domain.com/1 | 2016-04-12 | 1231 | 23423 |
www.domain.com/1 | 2016-04-13 | 1374 | 26482 |
www.domain.com/1 | 2016-04-17 | 1262 | 21493 |
www.domain.com/2 | 2016-05-09 | 2345 | 35471 |
Ожидаемый результат: Я палочка, чтобы заполнить эту таблицу с данными для каждого домена и каждый день, который просто копировать данные из предыдущего date
:
url | timestamp_gmt | visitors | hits | other..
-------------------+---------------+----------+-------+-------
www.domain.com/1 | 2016-04-12 | 1231 | 23423 |
www.domain.com/1 | 2016-04-13 | 1374 | 26482 |
www.domain.com/1 | 2016-04-14 | 1374 | 26482 | <-added
www.domain.com/1 | 2016-04-15 | 1374 | 26482 | <-added
www.domain.com/1 | 2016-04-16 | 1374 | 26482 | <-added
www.domain.com/1 | 2016-04-17 | 1262 | 21493 |
www.domain.com/2 | 2016-05-09 | 2345 | 35471 |
Я могу двигаться часть логики в php, но это нежелательно, потому что у моей таблицы есть миллиарды отсутствующих дат.
РЕЗЮМЕ:
В течение нескольких последних дней я foud, что:
- Amazon-красное смещение работает с 8-й версии PostgreSql, поэтому она не поддерживает такую прекрасную команду как
JOIN LATERAL
- Redshift также не поддерживает
generate_series
иCTEs
- Но он поддерживает простой
WITH
(спасибо @systemjack), ноWITH RECURSIVE
не
Очевидный вопрос: * почему *? Разве не имело бы смысла оставлять пробелы такими, какими они есть, и позволить веб-страницам/независимо выбирать, как отображать это? –
Это требование, потому что наши клиенты используют таблицы напрямую, а не через какой-либо интерфейс. –
Поддерживает ли красное смещение (рекурсивное) CTE? – wildplasser