如果你是一位 Power BI 用户,你一定体会过被复杂 DAX “支配”的恐惧。尤其是当你想实现一些高级分析,比如帕累托分析(ABC分析)时,那层层嵌套的函数足以劝退一半的热情。
但现在,这一切都将成为历史!Power BI 2025 年 7 月的更新,为视觉计算带来了一项史诗级的功能, 自定义排序 。这个看似微小的改动,却彻底改变了游戏规则,让曾经复杂的 ABC 分析,变得前所未有的简单。
过去的痛点
帕累托分析,又称 ABC 分析或 80/20 法则,是商业分析中的常用模型,用于识别贡献了大部分价值的关键少数。在 Power BI 中,实现它的核心是计算一个 累计百分比 。
在过去,这并不容易。
问题在于,视觉计算中的 RUNNINGSUM
这类函数,其计算顺序严格依赖于图表坐标轴的默认排序,而我们进行帕累托分析时,需要的却是 按照贡献度(例如销售额)从高到低 的顺序进行累计。
为了实现这个目标,我们不得不求助于非常复杂的DAX,比如下面这个:
旧方法(复杂 DAX 示例):
累计占比% =
VAR vSales = [Sales]
VAR SumALL =
SUMX ( ALLSELECTED ( 'Dim 产品'[产品子类别] ) , [Sales] )
VAR RunningSum =
SUMX ( FILTER ( ALLSELECTED ( 'Dim 产品'[产品子类别] ) , [Sales] >= vSales ) , [Sales] )
RETURN
DIVIDE ( RunningSum , SumALL )
旧方法(视觉对象计算示例):
累计占比% =
SUMX (
WINDOW ( 1 , ABS , 0 , REL , ROWS , ORDERBY ( [Sales] , DESC ) ) ,
DIVIDE ( [Sales] , COLLAPSEALL ( [Sales] , ROWS ) )
)
看到这些代码,是不是已经头大了?它不仅难以编写和理解,更让许多业务分析师望而却步。
ORDERBY 参数,化繁为简
现在,让我们见证奇迹。随着 7 月更新的到来, RUNNINGSUM
、 MOVINGAVERAGE
等视觉计算函数中,增加了一个全新的 ORDERBY
参数。
这意味着,你可以直接在函数内部,定义计算的排序逻辑!
新方法(优雅 DAX 示例):
累计占比% =
DIVIDE (
RUNNINGSUM ( [Sales] , ROWS , ORDERBY ( [Sales] , DESC ) ) ,
COLLAPSEALL ( [Sales] , ROWS )
)
对比一下!
没有了复杂的 WINDOW
和 SUMX
,代码的意图一目了然: 对销售额进行累计求和,并且在计算时,严格按照销售额降序的顺序来! 然后用当前的累计销售额除以所有类别的总计销售额得到累计占比。
这正是我们想要的!这个更新,让 DAX 回归了其作为业务表达语言的本质,而不是一串复杂的代码。这个公式复用度极高,我们只需要修改对应的度量值,即可形成一个新的表达式,无需理解任何上下文概念。
实战演练:三步搞定帕累托图
理论说完了,我们来动手实践一下,看看用新方法创建帕累托图有多简单。
第一步:创建视觉对象
1. 在报表页上,添加一个折线和簇状柱形图。 2. 将你的分析维度(如产品子类别)拖到 X 轴,将 Sales
拖到 Y 轴。
第二步:添加视觉对象计算
1. 选中该图表,在功能区点击“新的视觉对象计算”。 2. 在下方的公式栏中,输入我们全新的 DAX 公式:
3. 点击确认提交,将累计占比% 计算移动到行 Y 轴上。
就这样,一个简单的的帕累托图就完成了!整个过程行云流水,核心步骤只有两行清晰易懂的 DAX 代码。
总结
Power BI 的每一次更新,都在努力让数据分析变得更简单、更普惠。7 月视觉计算的 ORDERBY
功能,无疑是这一理念的最佳体现。
它告诉我们,强大的工具不一定意味着复杂的操作。现在,就请立刻升级你的 Power BI Desktop,开启这项预览功能,去亲身体验这份“化繁为简”的快乐吧!