Как лучше всего рассчитать продление N-й подписки? - PullRequest
0 голосов
/ 05 октября 2018

Итак, у меня есть таблица транзакций (postgres), которая вставляет новую строку всякий раз, когда пользователь продлевает свою подписку на наш сервис.Таблица subscription выглядит следующим образом:

+--------+--------+------------+
| userId | prodId | renew_date |
+--------+--------+------------+
|      1 |      1 | 2018-05-01 |
|      1 |      1 | 2018-06-01 |
|      1 |      1 | 2018-07-01 |
|      2 |      3 | 2017-04-16 |
|      2 |      3 | 2017-05-16 |
+--------+--------+------------+

Если аналитики хотят выяснить N-е обновление или последнее обновление для конкретного пользователя или продукта, у меня есть два решения, чтобы дать им следующее:

1.) Во время процесса ETL я усекаю целевую таблицу хранилища DW и заново заполняю ее:

select *
  , row_number() over (partition by userId, productId order by renew_date asc) as nth_renewal
from subscription

Я не могу придумать, как можно +1 к предыдущемупродление, если я буду делать инкрементные обновления, что если это будет первое обновление клиентов?

2.) Я просто копирую точную таблицу OLTP в хранилище данных и выполняю инкрементные обновления каждый день.Таким образом, я позволил аналитикам самостоятельно рассчитать n-е обновление.(также в качестве дополнительного вопроса: можно ли когда-нибудь иметь дубликат таблицы транзакций в моем хранилище данных?)

...