PowerPivot计算过滤器不起作用

时间:2014-10-09 12:33:24

标签: sql excel powerpivot

我有以下表格

订单:

OrderID|Cost|Quarter|User
-------------------------
   1   | 10 |   1   | 1
   2   | 15 |   1   | 2
   3   |  3 |   2   | 1
   4   |  5 |   3   | 3
   5   |  8 |   4   | 2
   6   |  9 |   2   | 3
   7   |  6 |   3   | 3

目标:

UserID|Name |Goal|Quarter|Sum
-----------------------------
   1  |John | 20 |   1   | x
   1  |John | 15 |   2   | x
   2  |Bob  | 12 |   2   | x
   2  |Bob  | 15 |   3   | x
   3  |Homer|  5 |   3   | x
   3  |Homer|  7 |   4   | x

现在我要做的是在第二个表中总结所有具有当前行的UserID并且位于当前行四分之一的订单。

我的第一次尝试是:

  

= CALCULATE(总和(订单[费用]);订单[季度] = [季度];订单[用户] = [用户名])

结果应为:

UserID|Name |Goal|Quarter|Sum
-----------------------------
   1  |John | 20 |   1   | 10
   1  |John | 15 |   2   |  3
   2  |Bob  | 12 |   2   | 15
   2  |Bob  | 15 |   3   |  8
   3  |Homer|  5 |   3   | 11
   3  |Homer|  7 |   4   |  0

但是我收到错误:Column "User ID" cannot be found or may not be used in this expression.

为了尝试一下,我使用了固定值:

  

= CALCULATE(总和(订单[费用]);订单[季度] = 2;订单[用户] = 1)

这导致没有出现错误信息,但也没有完全正常工作。我现在得到了

UserID|...|Sum
   1  |...| 3
   1  |...| 3
   2  |...| 
   2  |...| 
   3  |...| 
   3  |...| 
FYI: the empty space in SUM is really empty.

如果我做以下事情,那就是疯狂的事情:

  

= CALCULATE(总和(订单[费用]);订单[季度] = 2;订单[用户] =订单[用户])

我明白了:

UserID|...|Sum
   1  |...|  3
   1  |...|  3
   2  |...| 
   2  |...| 
   3  |...| 11
   3  |...| 11

这几乎是我想要的。但我不明白,为什么有些细胞在工作。

有没有办法按我的意愿完成这项工作?

1 个答案:

答案 0 :(得分:4)

<强> Urganot

如果您充分利用PowerPivot中的所有功能,那么所需的输出非常简单 - 主要是创建relationships between datatables的能力。

我已经复制了你的数据,但有一件事遗失了 - 一个用户表。您可以从数据库/ IT部门获取一个,或从您已有的数据中获取简单create it in Excel。只要确保它不包含任何重复项,否则您将无法定义关系。

我在接下来的步骤中使用的数据表看起来像这样(用户表位于右侧):

enter image description here

将所有表格添加到Powerpivot数据模型(PowerPivot功能区 - >添加到数据模型),切换到图表视图connect Orders and Goals tables to User table(只需从表格中拖动UserID订单和目标到用户表)。它应该是这样的:

enter image description here

完成此操作后,您可以轻松获得所需的数字。只需定义两个新的计算字段(Powerpivot功能区 - &gt;计算字段 - &gt; 新计算字段)。确保选择用户的目标表并输入以下公式:

订单价值总和

=SUM(Orders[Cost])

总和或目标目标

=SUM(Goals[Goal])

在Excel 2013中,界面如下所示。

enter image description here

为了按季度查看数字,您还需要一张包含唯一季度数字的表格 - 只需按照创建用户表格的步骤操作即可。再次,将图表视图链接到其他表格,您应该最终得到:

enter image description here

将Quarter表用作slicer,这可能是分析/过滤数字的最佳方式:

enter image description here

这就是答案: PowerPivot中的关系

否则这可能非常困难,更不用说一旦开始处理数千行就会变慢。我相信这种方法与“旧方法”(嵌套的LOOKUP和IF)相比要好得多。

另外,请记住,您使用的数据并非以最佳方式构建 - 尤其是季度不按年份区分等。

无论如何,我希望这有帮助 - 如果有任何不清楚的地方,请在评论部分告诉我。或者只需继续下载my source Excel file (2013 version)