172_再谈 Power BI 客户帕累托(ABC)分析度量值写法
172_再谈 Power BI 客户帕累托(ABC)分析度量值写法
一、背景
我们再来谈一谈帕累托在 Power BI 中的度量值写法。我们分别使用以RANKX
和 WINDOW
两个函数为核心写度量值。
按照惯例,我们先看一下示例结果。
Power BI 公共 web 效果:https://demo.jiaopengzi.com/pbi/172-full.html
二、模型 & DAX
当前示例,我们只使用到三张表。分别是 T00_产品表
、T05_订单子表
以及分类标准计算表 CategoryTable
, 关系如下:
分类标准计算表 CategoryTable
的 DAX,注意区间的开闭规则为:左开右闭。
CategoryTable = /*区间:左开右闭*/ DATATABLE ( "category", STRING, "Left", DOUBLE, "Right", DOUBLE, { { "A", 0, 0.7 }, { "B", 0.7, 0.85 }, { "C", 0.85, 1 } } )
核心度量值主要是累计占比accumulate%
1、度量值核心 DAX 使用 WINDOW
window_accumulate% = VAR addTable = ADDCOLUMNS ( ALLSELECTED ( 'T00_产品表'[F_02_产品分类] ), "@销售金额", [01_销售金额] ) VAR context = WINDOW ( 1, ABS, 0, REL, addTable, ORDERBY ( [@销售金额], DESC ) ) VAR fenzi = CALCULATE ( [01_销售金额], context ) VAR fenmu = CALCULATE ( [01_销售金额], ALL ( 'T00_产品表'[F_02_产品分类] ) ) VAR per = IF ( ISFILTERED ( 'T00_产品表'[F_02_产品分类] ), DIVIDE ( fenzi, fenmu, BLANK () ), BLANK () ) RETURN per
2、度量值核心 DAX 使用 RANKX
rankx_accumulate% = VAR fenzi = CALCULATE ( [01_销售金额], TOPN ( [rankx_rankDesc], ADDCOLUMNS ( ALL ( 'T00_产品表'[F_02_产品分类] ), "@rank", [rankx_rankDesc] ), [@rank], ASC ) ) VAR fenmu = CALCULATE ( [01_销售金额], ALL ( 'T00_产品表'[F_02_产品分类] ) ) VAR per = DIVIDE ( fenzi, fenmu, BLANK () ) RETURN per
三、总结
- 经过我们的测试,使用
WINDOW
的效率会略高,建议使用WINDOW
为核心的写法。 - 分类的标准,可以自由拓展,根据自身业务去修改。
- 帕累托图的柱子的颜色可以根据分类写对应的 DAX 来设定。
附件下载
https://jiaopengzi.com/2956.html
请关注
全网同名搜索 焦棚子
如果对你有帮助,请 点赞、关注、三连 支持一下,这是我们更新的动力。
by 焦棚子
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~