PowerBI数据集销售额排名、累计求和及80/20占比计算问题咨询
PowerBI 销售额累计排名与80/20分析实现方案
错误原因说明
你之前两个排名度量值出错的核心原因:RANKX第一个参数传入整张ProductSales表时,表格视觉对象的行上下文(每行对应一个零件号)会把ProductSales表过滤为仅包含当前零件的行,每次排名仅1行数据参与,因此返回结果不符合预期。
完整实现方案
1. 销售额基础度量值
如果用qtysold乘price计算,写法为:
TotalSales = SUMX(ProductSales, ProductSales[qtysold] * ProductSales[price])
如果表中已有预计算的ExtPrice字段,也可以直接写:
TotalSales = SUM(ProductSales[ExtPrice])
2. 零件销售额排名度量值
Sales Rank = VAR AllVisibleParts = ALLSELECTED(ProductSales[Part Number]) RETURN RANKX(AllVisibleParts, [TotalSales], , DESC, Dense)
- 用
ALLSELECTED获取年份、季度切片器筛选后所有可见的零件号,不受表格行上下文影响 DESC表示按销售额从高到低排序,Dense表示相同销售额排名一致、后续排名不跳号,需要跳号可替换为Skip
3. 累计销售额度量值
Running Total Sales = VAR CurrentRank = [Sales Rank] VAR AllVisibleParts = ALLSELECTED(ProductSales[Part Number]) RETURN SUMX( FILTER( ADDCOLUMNS(AllVisibleParts, "RankVal", [Sales Rank]), [RankVal] <= CurrentRank ), [TotalSales] )
4. 累计占比度量值(用于80/20分析)
Cumulative Sales % = VAR TotalAllSales = CALCULATE([TotalSales], ALLSELECTED(ProductSales[Part Number])) RETURN DIVIDE([Running Total Sales], TotalAllSales, 0)
将该度量值格式设置为百分比即可直接使用。
使用方法
把ProductSales表的Part Number字段,以及上述四个度量值添加到表格视觉对象中,即可得到你预期的输出效果,年份、季度切片器的筛选会正常生效。
内容的提问来源于stack exchange,提问作者Don Hessey
相关产品推荐
相关产品推荐

