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