如何在Power BI中计算行百分比并制作每日数据变化百分比折线图
解决Power BI中的两个数据可视化需求:每日百分比变化折线图 & 行百分比计算
嘿,刚好我之前在Power BI里搭建过类似的业务仪表盘,给你一步步拆解这两个需求:
一、制作每日百分比变化的折线图(媲美Excel效果)
Excel里的每日百分比变化逻辑是「(当日数值 - 前日数值) / 前日数值」,在Power BI里我们可以通过DAX度量值来实现,步骤如下:
新建度量值
打开Power BI的「建模」选项卡,点击「新建度量值」,输入以下DAX公式(把[你的指标列名]替换成你要分析的具体列,比如客户活跃度,你的表名替换成实际表名):每日百分比变化 = VAR 当前值 = SUM('你的表名'[你的指标列名]) VAR 前日值 = CALCULATE(SUM('你的表名'[你的指标列名]), PREVIOUSDAY('你的表名'[日期列])) RETURN IF(NOT ISBLANK(前日值), DIVIDE(当前值 - 前日值, 前日值), BLANK())- 用
VAR定义变量是为了让公式更清晰易读; PREVIOUSDAY会自动匹配前一天的日期(前提是你的日期列是标准的日期类型且数据连续);DIVIDE函数比直接用/更安全,能自动处理除零或空值的情况;- 开头的
IF判断是为了隐藏第一天的数据(因为第一天没有前日值作为对比)。
- 用
创建折线图
- 拖拽「日期列」到折线图的「轴」区域;
- 拖拽刚才新建的「每日百分比变化」度量值到「值」区域;
- 在「格式」选项卡中,把「值」的显示格式改成「百分比」(保留1-2位小数即可),这样就和Excel的效果完全一致了!
二、计算行百分比(两种常见场景)
这里的「行百分比」通常有两种常见理解,我都给你列出来:
场景1:当日指标值占该指标总历史值的百分比
比如你想知道「2024-05-01的客户活跃度」占「所有日期客户活跃度总和」的比例,DAX公式如下:
指标占总历史百分比 = VAR 当前行值 = SUM('你的表名'[你的指标列名]) VAR 指标总和 = CALCULATE(SUM('你的表名'[你的指标列名]), ALL('你的表名')) RETURN DIVIDE(当前行值, 指标总和)
ALL('你的表名')会忽略当前行的筛选条件,计算整个表的指标总和;- 同样用
DIVIDE避免除零错误。
场景2:当日各指标值占当日所有指标总和的百分比
比如你想知道「2024-05-01的客户活跃度」占「当天所有客户属性指标总和」的比例,这种情况需要先计算当日的总指标和,再做除法:
当日指标占比 = VAR 当前行值 = SUM('你的表名'[你的指标列名]) VAR 当日总指标 = CALCULATE( SUM('你的表名'[指标列1]) + SUM('你的表名'[指标列2]) + ... + SUM('你的表名'[指标列N]), ALLEXCEPT('你的表名', '你的表名'[日期列]) ) RETURN DIVIDE(当前行值, 当日总指标)
ALLEXCEPT('你的表名', '你的表名'[日期列])会保留日期的筛选,只计算当天所有指标的总和;- 把
指标列1到指标列N替换成你实际的所有客户属性列即可。
- 使用行百分比
把新建的行百分比度量值拖拽到表格、卡片或者其他可视化组件中,设置格式为百分比,就能清晰展示给利益相关者了。
内容的提问来源于stack exchange,提问作者Nadav Kiani




