今天我们有一个名为Customer的维度。
我们有几个SCD2属性,因此有DateFrom和DateTo列来指示记录处于活动状态的perid。创建客户时我们还有一个CreationDate,当客户被删除时我们也有一个RemoveDate。
现在我想创建一个在excel中可以显示给定时期内唯一客户数量的多维数据集。比如我每个月想要显示未删除的客户数量。在excel中它可能看起来像这样
2013-01 2013-02 2013-03
100 120 80
2013-02我们共有120位客户。这并不意味着我们从2013-01获得了20个新客户,因为我们可能已经失去了几个客户。也许我们得到了30个新的10个。
如何做到这一点? 我读过的所有示例都显示了与销售事实表的连接。但我想知道客户的数量。我想通过使用一个无事实的事实表并使用一个计数(不同的CustomerId)来设法解决一些问题。但这只能分割客户总数。我想看看每个月的客户数量。所以我认为我需要以某种方式连接Date-dimension。但是我不能将它与creationdate或者removeate连接起来,因为那时它只会计算在特定日期。
谢谢!
答案 0 :(得分:0)
看起来很简单......创建一个聚合事实表,它只记录您想要跟踪的任何时间段内给定客户的“第一个”事务。我假设你的销售事实表有销售日期?
客户SCD的日期不应与销售日期有任何关系......
AGG_CUSTOMER_SHOP
------------------------
MONTH_NUMBER INTEGER
CUSTOMER_ID INTEGER
您的ETL过程通过执行类似
的操作来构建此过程SELECT distinct month_number, customer_id
FROM fact_sales s
JOIN dim_date d on (s.date_id = d.date_id)
JOIN dim_customer c on (c.customer_id = s.customer_id)
您的约会日期会获得月份编号(201301)或其他任何内容,您只需将其存储在聚合表中即可。