首页 > 解决方案 > 仅合计过滤的最大值

问题描述

我正在尝试使用 DAX 创建度量。我从这样的表中的数据开始。数据表命名为 1025。

![在此处输入图像描述

我想要用它来确定每个 SUBLINE_NBR1 的 MAX BUDGET_AMOUNT1,然后将所有选定的 SUBLINE_NBR1 的 MAX 值相加。所以对于这个屏幕截图,你看到的应该总共产生 6,919。即 1,184 + 630 + 0 + 5,105 ... SUBLINE_NBR1 31-02 的 BUDGET_AMOUNT1 的最大值 + SUBLINE_NBR1 31-13 的 BUDGET_AMOUNT1 的最大值 + SUBLINE_NBR1 的 BUDGET_AMOUNT1 的最大值 32-00 + SUBLINE_NBR1 的 BUDGET_AMOUNT1 的最大值-03。

我可以确定每个 SUBLINE_NBR1 的 MAX 值。我用这个措施做到了:

Budget = CALCULATE(MAXX('1025','1025'[BUDGET_AMOUNT1]),DISTINCT('1025'[SUBLINE_NBR1]))

使用此度量,并且在表中未选择任何记录,我得到 5,105,这是我所期望的,因为 5,105 是所有 SUBLINE_NBR1 记录中 BUDGET_AMOUNT1 的最大值。如果我选择一条记录,我会得到它的值。例如,如果我选择一条记录为 630 作为 BUDGET_AMOUNT1,我会得到 630 作为预算度量结果,这也是预期的,因为 630 是它的 MAX BUDGET_AMOUNT1 值。如果我选择两个或更多记录,我会得到 BUDGET_AMOUNT1 MAX 值较大的那个。例如,如果我选择一个 630 和一个 1,184,我得到 1,184。再次,正如预期的那样。到现在为止还挺好。

现在,我不想返回更大的 BUDGET_AMOUNT1 MAX 值,而是想将所选 SUBLINE_NBR1 值的所有 MAX 值相加并返回该总和。例如,如果我选择表格的第四行和第七行,我想从度量 (1,184 + 630) 中得到 1,814。如果我选择表的前七行,我仍然想从度量中获得 1,814(仍然是 1,184 + 630 ... SUBLINE_NBR1 31-02 的 MAX + SUBLINE_NBR1 31-13 的 MAX)。但我似乎在上下文方面遇到了麻烦?我猜。

我已经尝试了很多东西,如下所示。(我不会全部列出。)但我离解决方案还很远。

我试过:

Budget = 
var MaxVal = SUMX('1025',CALCULATE(MAXX('1025','1025'[BUDGET_AMOUNT1]),DISTINCT('1025'[SUBLINE_NBR1])))

但它添加了每一行......不仅仅是 MAX 值。它为所有记录返回 52,571,或任何选定记录的所有 BUDGET_AMOUNT1 值的总和。

我也试过:

Budget = 
var MaxVal = CALCULATE(MAXX('1025','1025'[BUDGET_AMOUNT1]),DISTINCT('1025'[SUBLINE_NBR1]))
return SUMX('1025',MaxVal)

但我不确定它在做什么。它返回一个过高的数值(这 20 条记录为 102,100)。它似乎正在尝试添加所有选定的值......等等。跨越 SUBLINE_NBR1 组时,它没有正确添加它们。无论如何,这显然也不是我想要的。

可能有一个简单的解决方案,但是,是的......我很茫然,绝对可以使用你的帮助!

标签: powerbidax

解决方案


Budget =
SUMX (
    VALUES ( '1025'[SUBLINE_NBR1] ),
    CALCULATE ( MAX ( '1025'[BUDGET_AMOUNT1] ) )

)

它是如何工作的:首先,VALUES 在你的上下文中生成一个唯一的 SUBLINE_NBR1 列表(如果你在 SUBLINE_NBR1 中有空格并且想忽略它们,你也可以使用 DISTINCT 代替 VALUES)。

其次,SUMX 遍历 SUBLINE_NBR1 的列表,计算它们每个的最大预算金额,然后将最大值相加。


推荐阅读