PowerPivot基于组的聚合值

时间:2014-03-03 07:28:41

标签: powerpivot

我在一个表中有两个日期列

Coolumn听说:活动|城市| Start_Date | End_Date

第1行:A1 | C1 | 01/01/2014 | 05/01/2014

第2行:A1 | C1 | 06/01/2014 | 07/01/2014

第3行:A2 | C2 | 06/01/2014 | 07/01/2014

第4行:A3 | C3 | 03/01/2014 | 04/01/2014

预期输出如 - 如果用户选择日期范围02/01/2014至07/01/2014

列标题

城市| #StartCount | #EndCount

第1行:C1 | 1 | 2

第2行:C2 | 1 | 1

第2行:C3 | 1 | 1

这里#StartCount是 - 需要按城市分组。 - 它的不同活动计数 - 它应该将日期边界视为:所有活动的开始日期'更大或更有效(> =)'输入开始日期和(小于'<')结束日期

这里#EndCount是 - 需要按城市分组。 - 它的不同活动计数 - 它应将日期边界视为:所有活动的结束日期'较少或较少(或<=)'输入结束日期和(大于'&gt;')结束日期

请你建议我用这种情况表达。 可以使用计算的度量或dax ..

1 个答案:

答案 0 :(得分:0)

这里的关键是使用断开连接的切片器,因为如果你使用“常规”切片器,那么执行COUNT计算将无法工作,因为它们只是过滤掉了不适合的行。

我已使用您的数据创建3个表:

  • 来源表 - 与您的完全相同
  • 启动表 - 包含名为开始的单个列,其中包含的开始日期
  • 结束表 - 包含名为 End 的单一列,其中包含来源的结束日期

然后我添加了两个计算字段:

开始计数

=CALCULATE(COUNTA(Source[City]),FILTER(Source,Source[Start]>=MIN('Start'[Start])))

结束计数

=CALCULATE(COUNTA(Source[City]),FILTER(Source,Source[Start]<=MIN('End'[End])))

这两个命令的作用是计算非空的City行,并按(使用FILTER命令) Start End 列过滤它们。详细了解disconnected slicers here

要获取报告:创建新的PowerPivot表,将 City 放在行上,然后将开始计数结束计数拖到值。然后为 Start End 表添加切片器。选择您的日期,您将获得所需的结果。

附件是我使用的屏幕(这将在Excel 2013以及带有PowerPivot插件的Excel 2010中使用):

enter image description here

使用断开连接的切片器有时可能会很棘手 - 但如果您使用新的Excel应用程序(如CreateTimeDimension(免费)或pre-prepared DateTables创建它们),那么您应该只是细

希望这有帮助!