Excel 2010 PowerPivot – 使用数据透视表结果作为第二个PowerPivot的input

假设我在SQL Server数据库中有以下表格我想在Excel PowerPivot( Excel 2010版本 )上执行以下操作:

Date: Grp: Value: 1-Jan a 1 1-Jan a 2 1-Jan b 3 1-Jan c 4 2-Jan a 5 2-Jan b 6 2-Jan a 7 2-Jan b 8 2-Jan c 9 

而且它的工作方式是,我需要,因为缺乏更好的措辞,双重支点。

我需要做的是:

  1. 返回Sum(Value)DateGrp

输出:

 Date: Grp: Value: 1-Jan a 3 1-Jan b 3 1-Jan c 4 2-Jan a 12 2-Jan b 14 2-Jan c 9 

那么,我需要对这个数据执行另一个计算( sum()除外) – 对于每一天得到的值的乘积:

输出2:

 Grp: Value: a 36 b 42 c 36 

所以,我知道如何使用PowerPivot来获得第一组结果,我猜我可以创build一个计算的字段,每个组的值重复许多重复计算Output2 ,但我想知道是否有办法可能会输出第一个输出,然后使用生成的数据透视表作为PowerPivot的input。

总的来说,我是一个PowerPivot的新手,所以如何做到这一点的任何意见将非常感谢!

谢谢!!

约翰

有一个简洁的函数Summarize ,它允许您创build一个“即时”的表,可以通过parameter passing给FILTER或任何其他需要TABLE的 DAX函数。

我已经复制了您的示例数据(表名为basetable ),如果您运行下面的代码,则应该得到与Output1中相同的结果(我build议您使用Dax Studio进行此操作 )。

 SUMMARIZE ( basetable, 'basetable'[Date], 'basetable'[Grp], "Value", SUM('basetable'[Value]) ) 

现在对于Output2来说,计算产品的Grp值是非常棘手的,因为没有PRODUCTX函数。 但要获得日常的平均水平,你可以使用这个:

 AVERAGEX ( SUMMARIZE ( basetable, 'basetable'[Date], basetable[Grp] ) , CALCULATE(AVERAGE(basetable[Value])) ) 

结果可能看起来像这样(保持与Output1相同的结构,但是使用Output1来执行平均计算)。

在这里输入图像说明

不知道我是否完全回答了你的问题,但是我确信SUMMARIZE是当你谈论“输出第一个输出,然后使用结果数据透视表作为PowerPivot的input的一种方法时要考虑的事情”。

但是,请注意与性能有关的问题 。 SUMMARIZE可以相当“苛刻”:)

希望这可以帮助!