多维数据集计算给定时期内的客户数量

时间:2013-04-16 12:56:56

标签: database-design ssas data-warehouse cube

今天我们有一个名为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连接起来,因为那时它只会计算在特定日期。

谢谢!

1 个答案:

答案 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)或其他任何内容,您只需将其存储在聚合表中即可。