我想在具有以下属性的维度之间创建交集:
客户ID |客户等级|日期来自|日期到
1234 | 1级| 01.01.2018 | 2018年12月31日
1234 | 2级| 01.01.2019 | 2019年5月31日
以及如下的度量组:
购买产品|购买日期
便宜的啤酒| 2018年6月1日
便宜的啤酒| 2019年4月1日
实际上我一直坚持定义适合我目的的关系。我想重新定义维度表,以便代替第一行的时间间隔,我会有这样的表:
客户ID |客户等级|等级日期
1234 | 1级| 2018年1月1日
1234 | 1级| 2018年2月1日
…
1234 | 1级| 2018年12月31日
但如果我有60万客户的桌子,我想定义一个时间关系“直到世界末日”,那么桌子的大小将太大。
最后,我希望将同一客户(ID = 1234)分配到1级和6月18日以及2级和4月19日。我想请教您如何构建维度表(或确认我的正确)以及如何在Visual Studio中定义时间关系,以便考虑购买日期之间的客户级别。
好吧,我看到了两种可能的方法来完成你的任务。
Customer Level Date Bridge
- 定义计数度量。然后,在SSDT中多维数据集设计器的“维度用法”选项卡上 - 您可以将采购度量组的客户级别暗淡(假设它与日期和客户维度有直接关系)设置为具有桥接Customer Level Date Bridge
的M2M维度。关于MS Docs的更多细节。
优点 - M2M方法非常灵活。顾名思义,您可以在客户及其级别之间进行更多1-1直接分配。例如,您可以将客户划分为具有某些交叉点的组。
缺点 - 它需要构建一个桥表并在关系间隔内为每个日期填充一个记录。它可能会影响ETL,多维数据集大小和多维数据集处理。