Dynamic powerbi中的动态排序

Dynamic powerbi中的动态排序,dynamic,powerbi,dax,ranking,slicers,Dynamic,Powerbi,Dax,Ranking,Slicers,我有一个要求,其中,我需要根据图表中的销售价值获得前5名品牌 情况如下: 样本数据如下所示 Brand Sales ----------- H 3500 B 2500 I 2200 A 1500 J 1400 K 900 E 800 F 700 L 650 D 600 C 500 N 200 M 150 G 100 Others null 现在,要求总是

我有一个要求,其中,我需要根据图表中的销售价值获得前5名品牌

情况如下: 样本数据如下所示

Brand  Sales
-----------
H      3500
B      2500
I      2200
A      1500
J      1400
K      900
E      800
F      700
L      650
D      600
C      500
N      200
M      150
G      100
Others null
现在,要求总是根据销售额显示前5名品牌。i、 例如,前4个品牌和第5个品牌显示为其他品牌,聚集了所有其他品牌

当用户从切片器中选择任何品牌(单选)时,该特定品牌应排名第一,与往常一样,排在前三名,最后一个是“其他”品牌,将其余品牌分组

我成功地获得了前4名和其他品牌。但是,在获取基于切片器选择的动态排名时,我们遇到了困难

请参阅我创建的以下度量:

销售总额

SumSales = SUM(Sheet1[Sales])
排名

Rank = RANKX(ALL(Sheet1[Brand ]),[SumSales])
Top5

Top5 = IF ([Rank] <= 4,[SumSales],
  IF(HASONEVALUE(Sheet1[Brand ]),
    IF(VALUES(Sheet1[Brand ]) = "Others",
       SUMX ( FILTER ( ALL ( Sheet1[Brand ] ), [Rank] > 4 ), [SumSales] )
    )
  )
)
Top5=IF([Rank]4),[SumSales])
)
)
)

这比我预期的要复杂,但仍然是可能的


首先,让我们创建一个计算列,对稍后使用的品牌进行排名

Rank = RANKX(ALL(Sheet1), Sheet1[Sales])
这里的一个关键想法是,您需要一个单独的表来用作切片器,否则在进行选择时,您将无法看到所有品牌。让我们定义一个新表
Brands
,如下所示:

Brands = SUMMARIZECOLUMNS(Sheet1[Brand ], Sheet1[Rank])
我们将用这张桌子做切片机

接下来,我们创建一个相当复杂的度量,以包含我们需要的所有逻辑:

Top5 = 
    VAR BrandRank = SELECTEDVALUE(Brands[Rank])
    RETURN IF(MAX(Sheet1[Brand ]) = "Others",
               CALCULATE(SUM(Sheet1[Sales]), ALL(Sheet1)) -
               CALCULATE(SUM(Sheet1[Sales]), ALL(Sheet1),
                   Sheet1[Rank] >= BrandRank, Sheet1[Rank] < BrandRank + 5),
                IF(COUNTROWS(ALLSELECTED(Brands[Brand ])) = 1,
                    IF(MAX(Sheet1[Rank]) >= BrandRank &&
                       MAX(Sheet1[Rank]) < BrandRank + 5,
                           SUM(Sheet1[Sales]),
                           BLANK()),
                    IF(MAX(Sheet1[Rank]) <= 5,
                           SUM(Sheet1[Sales]),
                           BLANK())))
Top5=
VAR BrandRank=所选值(品牌[Rank])
如果(最大值(表1[品牌])为“其他”,则返回,
计算(总计(表1【销售】),全部(表1))-
计算(总计(表1【销售】),全部(表1),
Sheet1[Rank]>=BrandRank,Sheet1[Rank]=BrandRank&&
最大值(表1[Rank])如果(最大值(第1页[排名])欢迎使用Stack Overflow!Stack Overflow不是一个讨论论坛,它是一个问答网站,您可以在这里提出特定的编程问题,这些问题可以回答,而不是讨论。请阅读并编辑您的问题,以符合网站指南。像这样的非主题问题通常会关闭,但如果edited想问一个可回答的问题,可以重新打开。谢谢。你的问题是什么?@Alexilson问题是-如何根据切片机中的选择获得动态排名。假设我选择了一个销售额不在前5名的品牌,即使该品牌在切片机中被选中,它也应该排在第一位,其余的品牌应该排在第一位定期更新(第二、第三、第四),然后更新“其他”作为剩余品牌的总结。请参考屏幕截图链接。upped为您花费的时间尝试了解这一点!