繁体   English   中英

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

[英]Excel 2010 PowerPivot - Using a PivotTable result as the input for a second PowerPivot

假设我在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获取第一组结果,我猜我可以为每个组值创建一个具有许多重复值的计算字段,以便立即计算Output2 ,但我想知道是否有办法可能会输出第一个输出,然后使用生成的数据透视表作为PowerPivot的输入。

总的来说,我是PowerPivot的新手,所以任何有关如何做到这一点的建议都会非常感激!!

谢谢!!

约翰

有一个称为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执行平均计算)。

在此输入图像描述

不确定我是否完全回答了你的问题,但我确信当你谈到“输出第一个输出的方法然后使用生成的数据透视表作为PowerPivot的输入时”时,需要考虑SUMMARIZE

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

希望这可以帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM