PowerPivot DAX:识别每个组的最大值和最小值

4

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

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

-------------------------------------------------
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代码时遇到了困难,无法正确表达我的意思。

3个回答

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

应该可以实现这个目标。您可以使用 MAX() 替换 min。

更多阅读请参见此链接,关于ALLSELECTED()的内容。


1

感谢aesthetic_a的友善回复。

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

正如我在原始帖子(第3张表)中所概述的那样,我需要重复与每个相关联的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]度量值。
最后,我将上述新创建的度量进行SUM,它只会返回与任何用户定义的过滤器(通过切片器或数据透视表过滤器)相关联的第一个[Transaction Sequence No]值的[Total Cost]值,该过滤器当前应用于工作簿中。
谢谢你,你指引了我正确的方向,我非常感激!
保重。

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

这不是你想要的吗?


1
感谢您的快速回复。然而,我需要在透视表中除了上面定义的 [Customer][Store] 列之外,还要有 [Transaction Sequence No] 列。除了我在示例中列出的列之外,我还有一个名为 [Total Cost] 的度量。我的最终目标是识别每个 的最小和最大 [Transaction Sequence No] 值,然后在一个单独的计算度量中显示与特定 [Transaction Sequence No] 值相关联的 [Total Cost] 值。 - user1159554
我需要在数据透视表中将“[客户]”、“[店铺]”和“[交易序列号]”这三列并排显示。您提供的解决方案未将最大值和最小值的“[交易序列号]”值与“[客户]”和“[店铺]”字段一起列出。是否有办法将“[交易序列号]”值的最小值和最大值与实际的“[交易序列号]”字段放在一起呢?请参考我上面列出的最后一个数据透视表示例,因为我需要数据透视表看起来像那样。非常感谢您的帮助! - user1159554

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