发布日期:2025-09-17 07:45 点击次数:98
帕累托分析(又称ABC分析)是一种识别关键影响因素的重要方法。然而,许多PowerBI使用者在进行帕累托分析时,都曾遇到过这样一个棘手的问题:当数据中存在相同数值时,传统的DAX写法会导致累计占比计算"错误",帕累托曲线呈现出不规则的阶梯状,而非预期的平滑上升曲线。

关于这个问题,之前的文章专门探讨过原因和解决思路,见:Power BI帕累托分析:数值相等时累计占比计算“错误”问题
问题的根源在于传统DAX写法的计算逻辑。FILTER函数会筛选出所有销售额大于等于当前值的产品,当遇到相同销售额时,它会将这些产品视为一个整体进行处理。这从技术角度来说并没有错误,因为DAX严格遵循了我们设定的逻辑,但这种结果往往不符合业务分析的直观期望。
除了上面文章介绍的解决思路,现在我们利用可视化计算可以更轻松地解决这个问题。
关于利用可视化计算进行ABC分析的方法,见我们之前的介绍:PowerBI可视化计算应用:零基础轻松实现ABC分析
仍以上面的数据为例,对于相同数据的情况,可视化计算的公式并不需要特别调整,仍然可以按正常的写法:
累计占比 =
DIVIDE(
RUNNINGSUM([收入],ORDERBY([收入],DESC)),
COLLAPSE([收入],[产品名称])
)
这个公式看起来简洁明了,但其背后的计算逻辑却与传统DAX有本质区别:
RUNNINGSUM函数会按照视觉对象中行的顺序逐行累加,即使遇到相同数值,也会一个一个地累加,而非一次性全部累加。这确保了累计占比曲线的平滑性。

传统方法遇到数据相等时会出问题,相应的解决方案也需要对DAX和数据模型有较深的理解,对于刚接触PowerBI的用户来说门槛较高。
而用可视化计算整个过程无需考虑复杂的上下文转换和筛选逻辑,无需考虑数据是否相等,可视化计算会自动处理这些细节。
现在进行ABC分析时,建议用可视化计算来实现,主要得益于以下几个优势:
1.逐行计算逻辑:RUNNINGSUM严格按行顺序计算,不会因为数值相同就一次性累加所有相同值。
2.内置排序能力:最新版本的可视化计算支持自定义排序,我们可以轻松指定按销售额降序、产品名称升序等任意顺序进行累计计算。
3.直观的公式语法:相比传统DAX的复杂嵌套,可视化计算公式更加直观易懂,降低了学习门槛。
4.局部计算特性:可视化计算只作用于当前视觉对象,不会影响整体模型性能,特别适合临时性分析需求。
PowerBI星球的最新2024版内容合辑,值得你收藏学习:
「PowerBI星球」内容合集