首页 > 解决方案 > 返回最大类别作为基于 DAX 的动态过滤条件中的度量

问题描述

我想在 DAX 中构建一个度量,以使用响应报告中的过滤器的标准返回最大的类别(根据数据计算)。我拥有的数据取自 Power Query,我在 Excel 中而不是直接在 Power BI 中执行此操作。

下面的数据是我正在尝试做的一个例子。使用此数据,我想返回对于应用于该数据的任何过滤器组合而言,哪个位置的销售额最高。仅过滤实体 A,该度量应返回“加拿大”,因为加拿大的实体 A 总销售额为 673+280=953,而美国为 196+715=911,但过滤实体 A 和 2021 应返回“美国”,因为总和2021 年美国与实体 A 相关的销售额为 715,而加拿大为 280。

地点 实体 销售量
美国 一个 2020 196
美国 一个 2021 715
美国 2020 932
美国 2021 868
加拿大 一个 2020 673
加拿大 一个 2021 280
加拿大 2020 772
加拿大 2021 830

这是对这个问题的跟进(根据计算和标准在 DAX 中将最大的类别作为额外的列或度量返回),它已经提供了一个很好的答案,并且适用于特定的提供的标准。但是,我的实际数据中有大约 20 个字段,我想为(和其他类别)返回最大的位置,并且为每个组合构建单独的度量值太耗时了。

标签: dax

解决方案


使它像这样动态的基本功能是使用ALLSELECTED。这是一个具有复杂行为的函数,但如果您避免在迭代器中使用它,则使用起来并不难。

Top Location = 
VAR Summary =
    SUMMARIZE (
        ALLSELECTED ( Table1 ),
        Table1[Location],
        "@SumSales", SUM ( Table1[Sales] )
    )
RETURN
    MAXX ( TOPN ( 1, Summary, [@SumSales], DESC ), Table1[Location] )

您仍然可以将非切片器过滤器应用于表。例如,代替ALLSELECTED ( Table1 ), 写

FILTER ( ALLSELECTED ( Table1 ), Table1[Status] = "Live" )

推荐阅读