如何最好地计算第N个订阅续订?

时间:2018-10-05 05:09:23

标签: database postgresql etl data-warehouse

因此,我有一个事务表(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个续约。 (还有一个后续问题:在我的数据仓库中可以有事务表的副本吗?)

0 个答案:

没有答案