如何在SSAS中的多维数据集中使用度量组加入时间间隔?

问题描述 投票:0回答:1

我想在具有以下属性的维度之间创建交集:

客户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中定义时间关系,以便考虑购买日期之间的客户级别。

ssas multidimensional-cube
1个回答
0
投票

好吧,我看到了两种可能的方法来完成你的任务。

  1. 在客户级别分配未更改时,将客户主数据拆分为间隔,为该间隔分配客户ID并在交易数据中引用它。就像你的例子 客户ID |客户等级|日期来自|日期到 12341 | 1级| 01.01.2018 | 2018年12月31日 12342 | 2级| 01.01.2019 | 2019年5月31日 优点 - 在SSAS方面易于实施,SSAS的数据规模相对较小。 缺点 - 所有ID逻辑都必须在ETL级别实现。分析属性的结构是固定的。
  2. 从客户维度中删除客户级别并单独设置客户级别。您将获得相同的客户表和客户级表 客户级别ID |客户级别名称 1 | 1级 2 | 2级 然后 - 在Customer Dim,Customer Level Dim和Date Dim之间创建一个M2M关系。为此 - 添加具有以下结构的度量值组 客户ID |客户级别ID |日期ID 1234 | 1 | 2018年1月1日 在此度量组上 - 将其命名为Customer Level Date Bridge - 定义计数度量。然后,在SSDT中多维数据集设计器的“维度用法”选项卡上 - 您可以将采购度量组的客户级别暗淡(假设它与日期和客户维度有直接关系)设置为具有桥接Customer Level Date Bridge的M2M维度。关于MS Docs的更多细节。 优点 - M2M方法非常灵活。顾名思义,您可以在客户及其级别之间进行更多1-1直接分配。例如,您可以将客户划分为具有某些交叉点的​​组。 缺点 - 它需要构建一个桥表并在关系间隔内为每个日期填充一个记录。它可能会影响ETL,多维数据集大小和多维数据集处理。
© www.soinside.com 2019 - 2024. All rights reserved.