如何在SSAS中的多维数据集中将时间间隔与度量值组结合起来?

时间:2019-04-12 06:38:29

标签: ssas multidimensional-cube

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

  

客户编号|客户级别|起始日期|截止日期

     

1234 | 1级| 01.01.2018 | 2018年12月31日

     

1234 | 2级| 01.01.2019 | 2019年5月31日

还有一个度量值组,如下所示:

  

已购买的产品|购买日期

     

廉价啤酒| 01.06.2018

     

廉价啤酒| 01.04.2019

实际上,我坚持定义适合自己目的的关系。我考虑过重新定义维度表,以便代替第一行的时间间隔,而有了这样的表:

  

客户编号|客户级别|层级日期

     

1234 | 1级| 01.01.2018

     

1234 | 1级| 02.01.2018

     

...

     

1234 | 1级| 2018年12月31日

但是如果我的桌子有60万个客户,并且我想定义一个“直到世界末日”的时间关系,那么桌子的大小将太大。

最后,我希望将同一个客户(ID = 1234)分配给1级和6月18日以及2级和19年4月。我想请您帮我如何建立尺寸表(或确认我的正确),以及如何在Visual Studio中定义时间关系,以便考虑购买日期之后的客户级别。

1 个答案:

答案 0 :(得分: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 | 01.01.2018

    在此度量值组上-命名为Customer Level Date Bridge-定义计数度量值。然后,在SSDT中的多维数据集设计器的“维度使用情况”选项卡上,您可以将购买度量值组的“客户级别Dim”(假设它与“日期”和“客户维度”有直接关系)设置为带有桥Customer Level Date Bridge的M2M维度。有关MS Docs的更多详细信息。

    优点-M2M方法非常灵活。顾名思义,您可以在客户及其级别之间进行1-1以上的直接分配。例如,您可以将客户划分为具有某些交叉点的​​组。
    缺点-它需要建立一个桥接表,并为关系间隔内的每个日期填充一条记录。它可能会影响ETL,多维数据集大小和多维数据集处理。