在 Power BI 中,运行总和(Running Total)是一种非常重要的计算方式,尤其是在处理销售或财务数据时。它能够帮助我们动态地分析数据的累积变化,为数据洞察提供强有力的支持。本篇文章将为大家详细介绍实现运行总和的三种方法,并重点解析其中的核心逻辑。
什么是运行总和?
运行总和指的是按时间或某个维度对数据进行逐步累加。例如,某月份的累计销售额是当月及之前所有月份销售额的总和。这种计算广泛应用于以下场景:
• 销售数据的累计分析
• 财务数据的逐月或逐年累计
• KPI 指标的时间序列跟踪
• 产品分析下的累计占比计算
我们可以将它分为两个大的维度,一种为日期维度,一种为非日期维度。
日期维度
日期维度的运行总和可以使用时间智能函数和最大日期逻辑实现。
时间智能函数
时间智能函数是实现累积总计的最直接方法之一。通过 TOTALYTD
和 DATESYTD
,我们可以轻松计算从年初至今的累积值。但需要注意,此方法会在每年的年初重置累计值,因此不适合跨年份的累积总计场景。
运行总和 =
TOTALYTD( [Sales] , '日期表'[日期] )
⚠️ 局限性:累积值在每年初重置,不适合跨年度的场景。
利用最大日期逻辑
针对时间智能函数的不足,我们可以通过最大日期逻辑实现更灵活的累积计算。该方法利用 CALCULATE
和 MAX
函数,在当前上下文中动态确定累积范围,从而实现跨年份的累积总计。
运行总和=
CALCULATE(
[Sales] ,
'日期表'[日期] <= MAX( '日期表'[日期] )
)
步骤解析:
1. 确定当前上下文中的最大日期。
2. 使用
CALCULATE
对日期进行筛选,确保累积值覆盖所有符合条件的日期。
以上两种方法为日期维度特有的两种方法,接下来我们看一下通用的方法有哪些。
非日期维度
如果非日期维度有排序字段,非常适合使用视觉对象计算来实现,视觉对象计算求运行总和的优点是简单,只需要一个函数,缺点是只能按照默认的轴顺序进行计算,如果有排序字段的话就刚好可以按照理想的顺序进行计算。
如果地区没有排序字段,想要按照销售额金额从大到小计算运行总和,可以使用 CALCULATE + FILTER + ALL/ALLSELECTED 函数实现,如下。
运行总和 =
VAR vValue = [Sales]
RETURN
CALCULATE (
[Sales] ,
FILTER (
ALL ( 'Dim 地理位置'[地区] ) ,
[Sales] >= vValue
)
)
常见的 ABC 模型计算运行总和就可以使用这种办法,还有其他方法也能实现类似的效果,比如窗口函数。
DAX 窗口函数的引入为运行总和提供了一种全新的实现方式,特别适合 SQL 背景的用户。WINDOW
函数能够动态生成子集表,从而精确计算累积值。
运行总和 =
SUMX (
WINDOW (
1 ,
ABS ,
0 ,
REL ,
ALL ( 'Dim 地理位置'[地区] ) ,
ORDERBY ( [Sales], DESC )
) ,
[Sales]
)
总结
运行总和是数据分析中不可或缺的工具,它在销售趋势分析、财务数据监控、KPI 指标跟踪等多个场景中都发挥了重要作用。通过本文的讲解,我们详细介绍了 日期维度 和 非日期维度 的运行总和计算方法,包括时间智能函数、最大日期逻辑、窗口函数等多种实现方式。
这些方法各有优势,时间智能函数适合快速实现年内累计,最大日期逻辑则适用于跨年累积或自定义范围的计算,而窗口函数更是为复杂的动态累积需求提供了灵活的解决方案。
通过掌握这些方法,你可以更加灵活地应对各种复杂的数据场景,在 Power BI 中实现真正的 数据驱动决策。希望这篇文章能为你的日常工作提供帮助,欢迎大家在评论区分享你遇到的挑战与解决方案!
一更专业的数据分析师训练营一
📈【高级课程】:业务人(管理、销售、财务、供应链)彻底解决企业数据分析。
🔍【企业咨询】:十大行业,十大领域,企业案例,咨询,培训,实施。
🔗 如何获取更多信息?扫描下方二维码具体咨询。