Есть проблема, которую я недавно решил, но хотел бы посмотреть, есть ли лучшая альтернатива.
В настоящее время у меня есть таблица красного смещения, в которой указана месячная цель продаж для каждого продукта.Таблица выглядит следующим образом:
Start date Product_id Target
2018-08-01 100001 15000
2018-08-01 100002 12500
2018-08-01 100003 17500
2018-08-01 100004 16500
2018-08-01 100005 10000
2018-09-01 100001 15500
2018-09-01 100002 13500
2018-09-01 100003 18500
2018-09-01 100004 14500
2018-09-01 100005 14000
.... ... ...
2018-12-31 100005 10000
И я хочу повторить таблицу, чтобы изменить гранулярность с ежемесячной на ежедневную и повторять данные каждую дату, т.е.
Start date Product_id Target
2018-08-01 100001 15000
2018-08-01 100002 12500
2018-08-01 100003 17500
2018-08-01 100004 16500
2018-08-01 100005 10000
2018-08-02 100001 15000
2018-08-02 100002 12500
2018-08-02 100003 17500
2018-08-02 100004 16500
2018-08-02 100005 10000
.... ... ...
2018-12-31 100005 20000
* 1008.* В настоящее время решение состоит в том, что я использую левое соединение с другой таблицей, которая содержит значение даты на уровне дня, например
Date
2018-08-01
2018-08-02
2018-08-03
....
2018-12-31
И я выполняю левое соединение таким образом.Я использую свойство left join для репликации.
SELECT
date_trunc('month', sales_tar.start_date),
dat.datevalue,
sales_tar.product_id,
sales_tar.target
FROM
sales.sales_target sales_tar
LEFT JOIN
datedata.caleanderdate dat ON sales_tar.start_date::date =
date_trunc('month', dat.datevalue)::date
WHERE
tar.start_date::date BETWEEN '2018-08-01' AND '2018-12-31'
Но я думаю, что, возможно, существует более оптимизированный метод решения проблемы, о котором я не знаю.Есть ли кто-нибудь, у кого есть лучшее решение для репликации данных от месяца к месяцу в течение всего года?
Большое спасибо за вашу помощь