我有一个要求,其中,我需要获得前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现在,我们的要求是始终以销售为基础展示前五大品牌。也就是说,前4个品牌和第5个品牌显示为其他所有其他品牌的总和。
当用户从切割机中选择任何品牌(单一选择)时,这个特定的品牌应该排在第一位,像往常一样排在前三位,最后一个是“其他人”分组剩下的品牌。
我成功地获得了前四大品牌和其他品牌。但是,停留在获得基于切割器选择的动态排名。
请参阅我制定的以下措施:
销售和
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] )
)
)
)

发布于 2018-03-14 16:45:39
这比我预期的要棘手,但还是有可能的。
首先,让我们创建一个经过计算的列,对以后使用的品牌进行排序。
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())))然后,您可以在矩阵和甜甜圈图中使用此度量。

https://stackoverflow.com/questions/49228855
复制相似问题