在Excel Powerpivot中处理(多个)many2many关系

时间:2016-08-10 09:40:16

标签: excel many-to-many powerpivot dax

我有一个关于如何在Powerpivot中处理多个many2many关系的问题。这是我的场景:我有一堆产品,每个产品被分配到至少一个但可能更多的类别,所以例如我的第一个表是

Products | Category  
   P1    |    C1  
   P1    |    C2  
   P2    |    C1

接下来,我有一张每个产品和季节(时间)收入的表格

Product | Season | Revenue  
  P1    | 201606 |   10  
  P1    | 201607 |   20  
  P2    | 201606 |   15  
  P2    | 201607 |   25

我想要的是创建一个度量,以便我的收入可以按时间和类别划分(因此我会创建具有时间和类别层次结构的其他表)。完全展开后,我的最终结果应该是

Cat / Season | 06 | 07 | 2016  
    C        | 25 | 45 |  70  
    1        | 25 | 45 |  70  
    2        | 10 | 15 |  25  

例如,当我没有时间维度时,我找到了解决方案 http://www.powerpivotpro.com/2012/11/a-mystifying-and-awesome-solution-for-many-2-manyhttp://sqlblog.com/blogs/marco_russo/archive/2009/12/07/many-to-many-relationships-in-powerpivot.aspx,但由于时间维度,我无法生成预期的解决方案。有人可以开导我吗?

1 个答案:

答案 0 :(得分:0)

正如您在问题中添加的帖子中所看到的,有必要创建辅助表来建模M-to-M关系。

创建一个名为DistinctProduct的表,其中一列名为Product,其中包含不同的产品。

enter image description here

在“收入”表中,创建两个名为MonthYear的列。还要创建一个名为TotalRevenue的度量。

Month = RIGHT(RevenueTable[Season],2) 

Year = LEFT(RevenueTable[Season],4)

TotalRevenue = SUM(Revenue[Revenue])

然后将这些表关联起来,如E-R图所示:

enter image description here

完成此模型后,您可以使用数据透视表,将Month列添加到数据透视表列,将Category添加到行,它将生成一个类似于此的表。

enter image description here

如果有帮助,请告诉我。