0

今天我们有一个维度叫做客户。

我们有几个 SCD2 属性,因此有 DateFrom 和 DateTo 列来指示记录在什么期间处于活动状态。我们还有一个创建客户时的 CreationDate 和一个删除客户时的 RemoveDate。

现在我想创建一个多维数据集,它可以在 excel 中显示给定时间段内唯一客户的数量。例如,假设我每个月都想显示未删除的客户数量。在excel中它可能看起来像这样

2013-01     2013-02     2013-03
100         120         80

2013-02我们共有120个客户。这并不意味着我们从 2013-01 年获得了 20 个新客户,因为我们可能已经失去了几个客户。也许我们得到了 30 个新的而失去了 10 个。

如何才能做到这一点?我读过的所有示例都显示了与销售事实表的连接。但我想知道客户的数量。我想我设法通过使用无事实事实表和使用计数度量(不同的 CustomerId)解决了一些问题。但这仅提供了拆分客户总数的可能性。我想查看每个月的客户数量。所以我相信我需要以某种方式连接日期维度。但是我不能将它与创建日期或删除日期联系起来,因为那时它只会计算在那一天。

谢谢!

4

1 回答 1

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

于 2013-04-17T15:08:27.060 回答