Excel 2010 PowerPivot - 使用透视表结果作为第二个PowerPivot的输入

3
假设我在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. DateGrp 返回 Sum(Value)

输出:

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获得第一组结果,我猜我可以为每个组值创建一个具有许多重复值的计算字段,以立即计算Output2,但我想知道是否有一种方法可能将第一个输出作为结果透视表输出,然后将其作为输入到PowerPivot中。
总的来说,我是PowerPivot的新手,所以任何关于如何做到这一点的建议都将不胜感激!
谢谢!
1个回答

1

John,

有一个很棒的函数叫做Summarize,它可以让您创建一个“即席”表格,该表格可以作为FILTER或任何其他需要TABLE的DAX函数的参数。

我复制了您的样本数据(表名为basetable),如果您运行下面的代码,应该会得到与Output1相同的结果(我建议您使用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执行平均计算)。

enter image description here

我不确定我是否完全回答了你的问题,但我相信当你谈论“一种方法来[...]输出第一个输出,然后将该结果数据透视表用作PowerPivot的输入”时,SUMMARIZE是值得考虑的。

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

希望这可以帮助!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接