4

我需要确定 PowerPivot 连接的数据透视表中每个已定义组的最大值和最小值。

请参考以下链接到相应 PowerPivot 表的基本 Excel 表(通过 ASCII 发布):

-------------------------------------------------
Customer   |  Store  |  Transaction Sequence No | 
-------------------------------------------------       
     A           1                  1
     A           1                  2
     A           1                  3
     A           2                  1
     A           2                  2
     B           1                  1
     B           1                  2
     B           2                  1

可以看到,上面有 2 列唯一地定义了一个

  1. 顾客
  2. 店铺

对于每个组,可以有一个或多个事务,每个事务都具有关联的 [事务序列号]值,如上文所述。

在通过 2 个 DAX 度量生成的数据透视表中,我想列出与每个唯一组相关的最小最大 [事务序列号]值。

这将产生以下数据透视表:

----------------------------------------------------------------------------
Customer   |  Store  |  Transaction Sequence No |   Max eq No | Min Seq No |
---------------------------------------------------------------------------- 
     A           1                  1                  3           1
     A           1                  2                  3           1
     A           1                  3                  3           1
     A           2                  1                  2           1
     A           2                  2                  2           1
     B           1                  1                  2           1
     B           1                  2                  2           1
     B           2                  1                  1           1

现在,如果用户通过切片器或过滤器决定对[Transaction Sequence No]列应用过滤器,那么动态更新这两个新的 DAX 度量就很重要。

在此示例中,如果用户选择通过应用的过滤器排除[Transaction Sequence No]3,则数据透视表应更新其数据以反映新的最大值和最小值:

----------------------------------------------------------------------------
Customer   |  Store  |  Transaction Sequence No |   Max eq No | Min Seq No |
---------------------------------------------------------------------------- 
     A           1                  1                  2           1
     A           1                  2                  2           1
     A           2                  1                  2           1
     A           2                  2                  2           1
     B           1                  1                  2           1
     B           1                  2                  2           1
     B           2                  1                  1           1

我无法制定正确的 DAX 语法来完成此操作。

4

3 回答 3

2
MinTSeq:=
CALCULATE(
    MIN('table'[Transaction Seq No])
    ALLSELECTED('table'[Transaction Seq No])
)

应该送你到那里。您可以将 min 替换为 MAX()。

更多阅读ALLSELECTED ()

于 2015-10-29T14:17:30.247 回答
1

谢谢你审美_a你的好意。

不幸的是,您的 DAX 语句没有显示每个组的 min() 值,它显示了每个[Transaction Sequence No]值的 min() 值,这不是我想要的。

正如我原来的帖子(第三张表)中所述,我需要重复与每个group相关的 min() 值。

但是,您的解决方案为我指明了正确的方向,我能够完成我需要的事情。

仅供参考,我的全部意图是确定哪个[Transaction Sequence No]值包含最低值,然后仅对与每组最低[Transaction Sequence No]值相关的[Total Cost]度量求和。

您为我指明了正确的方向,我使用以下 DAX 语句来满足此要求:

=countrows(filter(allselected(Table1[Transaction Sequence No]),[Sum of Transaction Sequence No](values(Table1[Transaction Sequence No])) >[Transaction Sequence No])) + 1

即使通过切片器针对此维度属性应用过滤器,此 DAX 语句也会动态地对每个组的每个[Transaction Sequence No]值进行排名。

然后,我创建另一个 DAX 度量,如果关联的 Rank() 值等于 1 ,它将仅返回[Total Cost]度量值。

最后,然后我对上面这个新创建的度量值求和,它只会返回与当前在工作簿中应用的任何用户定义的过滤器(通过切片器或数据透视表过滤器)绑定的第一个[Transaction Sequence No]值的[Total Cost]值.

谢谢您,您为我指明了正确的方向,我很感激!

小心

于 2013-08-27T21:28:55.843 回答
0

简单地说,两种措施将提供正确的答案:

测量最小序列号:=CALCULATE(MIN('yourTable'[TransSeqNo]),VALUES('yourTable'[customer]))

测量最大序列号:=CALCULATE(MAX('yourTable'[TransSeqNo]),VALUES('yourTable'[customer]))

当您将这些度量放置在数据透视表的值字段中时,将客户和商店放在行字段中,您可以过滤并获得上述正确的结果。

编辑

除非我误解了您要执行的操作,否则上述措施仍将实现您问题中的最后一张表。

http://i43.tinypic.com/2j4eyaw.png

http://i44.tinypic.com/34fz5go.png

这不是你的想法吗?

于 2013-08-15T07:18:55.177 回答