热线电话:13121318867

登录
首页大数据时代【CDA干货】PowerBI 累计曲线制作指南:从 DAX 度量到可视化落地
【CDA干货】PowerBI 累计曲线制作指南:从 DAX 度量到可视化落地
2025-08-15
收藏

PowerBI 累计曲线制作指南:从 DAX 度量到可视化落地

在业务数据分析中,“累计趋势” 是衡量业务进展的核心视角 —— 无论是 “年度销售额累计达成情况”“月度用户增长累计规模”,还是 “区域业绩累计排名”,累计曲线都能直观呈现数据随时间的叠加变化,帮助决策者快速判断目标完成进度、识别增长拐点。作为主流的商业智能工具,PowerBI 通过 “DAX 度量值 + 可视化图表” 的组合,可灵活实现各类场景的累计曲线制作。本文将从业务价值出发,分步骤讲解累计曲线的制作逻辑、核心 DAX 公式、可视化配置及实战技巧,让新手也能快速上手。

一、为什么需要累计曲线?—— 业务场景与核心价值

累计曲线(又称 “累积折线图”)的核心是 “将某一指标按时间维度(或其他维度)逐步叠加,形成连续的趋势线”,其区别于普通折线图的关键在于 “数据的累加性”。在实际业务中,累计曲线的应用场景极为广泛,核心价值体现在三方面:

1. 直观展示目标达成进度

例如企业年度销售额目标 1000 万,通过 “月度销售额累计曲线”,可实时查看 “截至 3 月累计完成 300 万”“截至 6 月累计完成 580 万”,快速判断是否偏离目标节奏(如 6 月累计未达 50% 目标,则需调整下半年策略)。

2. 捕捉长期增长趋势

普通折线图反映 “单周期数据波动”(如某月销售额骤降),而累计曲线更侧重 “长期叠加效果”—— 例如用户增长中,某月新增用户虽减少,但累计用户仍持续上升,说明业务基本面未恶化,避免因短期波动误判趋势。

3. 支持多维度对比分析

可同时展示多个维度的累计趋势(如 “华东 / 华北 / 华南区域累计销售额对比”),快速识别头部区域与滞后区域,为资源倾斜提供数据依据。

二、制作前的准备:数据与工具基础

在 PowerBI 中制作累计曲线,需满足两个核心前提:规范的数据模型正确的日期表配置。若数据准备不充分,后续易出现 “累计数据错误”“日期筛选失效” 等问题。

(一)核心数据要求

需至少包含两类数据表格,且建立正确的关系:

  1. 业务数据表:含 “待累计指标” 与 “时间字段”,例如 “销售数据表” 需包含 “销售额”(待累计指标)、“订单日期”(时间字段),若需分组累计(如按区域),还需包含 “区域” 字段
订单 ID 订单日期 销售额(元) 区域
OD2025001 2025-01-05 2800 华东
OD2025002 2025-01-12 1500 华北
OD2025003 2025-02-03 3200 华东
  1. 独立日期表:这是 PowerBI 制作时间序列累计曲线的 “关键”。若直接使用业务表中的 “订单日期”,易因日期不连续(如周末无订单导致日期缺失)出现曲线断裂;而独立日期表可覆盖完整时间范围,确保累计趋势连贯。

(二)创建独立日期表(必做步骤)

通过 DAX 公式生成包含 “年、月、日、季度” 等维度的日期表,并标记为 “日期表”(PowerBI 时间智能函数的前提):

// DAX公式:创建2025年完整日期表

日期表 =

ADDCOLUMNS(

   // 生成2025年1月1日至2025年12月31日的连续日期

   CALENDAR(DATE(2025,1,1), DATE(2025,12,31)),

   "年份", YEAR([日期]),  // 提取年份(如2025)

   "年月", FORMAT([日期], "YYYY-MM"),  // 格式化年月(如2025-01)

   "季度""Q"&FORMAT([日期], "Q"),  // 提取季度(如Q1)

   "月份序号", MONTH([日期])  // 月份序号(1-12,用于排序)

)

关键操作:生成日期表后,右键点击表格 → 选择 “标记为日期表” → “标记为日期表”,确保 PowerBI 识别其为时间维度表

(三)建立表关系

在 “模型” 视图中,将 “业务数据表” 的 “订单日期” 与 “日期表” 的 “日期” 字段建立 “一对多” 关系(业务表为 “多”,日期表为 “一”),确保筛选器可通过日期表联动业务数据。

三、核心步骤:分场景制作累计曲线

PowerBI 中累计曲线的核心是 “编写累计 DAX 度量值”,再通过折线图可视化。根据业务需求,可分为 “基础单指标累计”“多维度分组累计”“动态筛选累计” 三类场景,以下逐一详解。

(一)场景 1:基础单指标累计(如月度销售额累计)

适用于 “单一指标按时间累计” 的场景,例如 “2025 年各月销售额累计”,核心是通过 DAX 的CALCULATE+FILTER函数实现 “截至当前时间的指标累加”。

步骤 1:编写 “累计销售额” DAX 度量值

// 基础累计度量值:截至当前日期的销售额累计

累计销售额(基础版) =

CALCULATE(

   SUM('销售数据表'[销售额(元)]),  // 待累计的指标(求和销售额)

   FILTER(

       ALL('日期表'[日期]),  // 忽略日期表中“日期”字段的筛选器(确保累计范围完整)

       '日期表'[日期] <= MAX('日期表'[日期])  // 筛选“小于等于当前最大日期”的数据(实现累计)

   )

)

公式解析

  • SUM('销售数据表'[销售额(元)]):计算目标指标(销售额)的总和;

  • ALL('日期表'[日期]):清除 “日期” 字段的默认筛选(如页面筛选的 “2025-03”,确保累计从年初开始);

  • '日期表'[日期] <= MAX('日期表'[日期]):对日期进行范围筛选,仅保留 “截至当前行最大日期” 的数据(如当前行日期为 2025-03-31,则累计 1-3 月数据)。

步骤 2:配置折线图可视化

  1. 点击左侧 “可视化” 面板中的 “折线图”;

  2. X 轴:拖入 “日期表” 的 “年月” 字段(确保时间顺序正确,可通过 “月份序号” 排序);

  3. Y 轴:拖入刚创建的 “累计销售额(基础版)” 度量值;

  4. 优化配置

  • 点击 “格式” → “数据标签” → 开启 “数据标签”,直观显示每个月的累计金额;

  • 调整 “线条颜色”“粗细”,提升图表可读性;

  • 若 X 轴 “年月” 显示拥挤,可设置 “角度” 为 - 45°(格式 → X 轴 → 文本角度)。

效果示例:

年月 累计销售额(元)
2025-01 4300
2025-02 7500
2025-03 12100
折线图将呈现从 1 月到 12 月逐步上升的累计趋势,清晰展示销售额叠加效果。

(二)场景 2:多维度分组累计(如区域 + 时间累计)

适用于 “按维度对比累计趋势” 的场景,例如 “华东、华北、华南区域 2025 年销售额累计对比”,核心是在基础 DAX 公式中保留 “分组维度” 的筛选器。

步骤 1:修改 DAX 度量值(保留分组筛选)

基础版度量值中ALL('日期表'[日期])仅清除 “日期” 筛选,若需保留 “区域” 筛选(如仅累计华东区域数据),需调整为ALLSELECTED('日期表'[日期])(保留其他维度的筛选器):

// 分组累计度量值:支持区域等维度筛选

累计销售额(分组版) =

CALCULATE(

   SUM('销售数据表'[销售额(元)]),

   FILTER(

       ALLSELECTED('日期表'[日期]),  // 保留除日期外的其他筛选器(如区域、产品)

       '日期表'[日期] <= MAX('日期表'[日期])

   )

)

关键差异ALLSELECTED vs ALL

  • ALL:清除指定字段的所有筛选(如仅清除日期筛选,保留区域筛选);

  • ALLSELECTED:保留用户手动设置的筛选器(如切片器选择的 “华东 + 华北”),更适合多维度对比场景。

步骤 2:配置分组累计折线图

  1. 新建折线图,X 轴仍用 “日期表” 的 “年月”;

  2. Y 轴拖入 “累计销售额(分组版)”;

  3. 图例:拖入 “销售数据表” 的 “区域” 字段(自动按区域生成多条累计曲线);

  4. 交互优化:添加 “区域” 切片器,用户可自由选择需对比的区域(如仅看华东和华南),折线图会实时更新。

效果示例:

折线图将显示 3 条曲线,分别对应华东、华北、华南区域的累计销售额趋势,可直观对比 “华东累计始终领先”“华北 3 月后增速加快” 等差异。

(三)场景 3:动态筛选累计(如截至当前筛选日期的累计)

适用于 “需根据用户筛选动态更新累计范围” 的场景,例如 “通过日期切片器选择‘2025-01 至 2025-06’,累计曲线仅显示该时间段内的累计”,核心是利用MAX('日期表'[日期])响应筛选器。

步骤 1:复用分组版度量值

动态累计无需修改 DAX 公式,分组版度量值ALLSELECTED('日期表'[日期])已支持响应日期筛选器,例如:

  • 当用户通过切片器选择 “2025-02 至 2025-04”,MAX('日期表'[日期])会变为 2025-04-30,累计范围自动调整为 2-4 月;

  • 若选择 “2025-05-10” 单个日期,累计范围为 “截至 5 月 10 日的所有数据”。

步骤 2:添加日期切片器

  1. 点击 “可视化” 面板中的 “切片器”;

  2. 拖入 “日期表” 的 “日期” 字段,设置切片器类型为 “介于”(支持选择日期范围);

  3. 测试交互:选择 “2025-03-01 至 2025-05-31”,折线图的累计曲线将从 3 月开始,截至 5 月结束,动态匹配筛选范围。

四、实战案例:年度销售额累计与目标对比

结合实际业务需求,在累计曲线基础上添加 “目标线”,形成 “实际累计 vs 目标累计” 的对比图表,帮助判断目标达成情况。

步骤 1:添加目标数据

假设企业 2025 年每月销售额目标为 5000 元,年度目标 60000 元,可通过 “新建表” 录入目标数据:

// 新建销售额目标表

销售额目标表 =

DATATABLE(

   "年月", STRING, "月度目标(元)", INTEGER,

   {

       {"2025-01", 5000}, {"2025-02", 5000}, {"2025-03", 5000},

       {"2025-04", 5000}, {"2025-05", 5000}, {"2025-06", 5000},

       {"2025-07", 5000}, {"2025-08", 5000}, {"2025-09", 5000},

       {"2025-10", 5000}, {"2025-11", 5000}, {"2025-12", 5000}

   }

)

建立 “销售额目标表” 与 “日期表” 的关系(通过 “年月” 字段关联)。

步骤 2:编写 “累计目标” 度量值

// 累计目标度量值

累计销售额目标 =

CALCULATE(

   SUM('销售额目标表'[月度目标(元)]),

   FILTER(

       ALLSELECTED('日期表'[年月]),

       '日期表'[年月] <= MAX('日期表'[年月])

   )

)

步骤 3:配置对比折线图

  1. 折线图 X 轴:“日期表”[年月];

  2. Y 轴:添加 “累计销售额(分组版)” 和 “累计销售额目标” 两个度量值;

  3. 图例:自动显示 “累计销售额(分组版)”“累计销售额目标”,可重命名为 “实际累计”“目标累计”;

  4. 格式优化:将 “目标累计” 线条设置为 “虚线”,颜色改为红色,与 “实际累计” 的蓝色实线形成对比。

效果分析:

  • 若 “实际累计” 曲线在 “目标累计” 上方(如 3 月实际累计 12100 元,目标累计 15000 元 → 未达标);

  • 若 6 月实际累计 32000 元,目标累计 30000 元 → 超额达标,可通过数据标签直观查看差额。

五、常见问题与解决方案

在制作累计曲线时,新手易遇到 “数据错误”“图表异常” 等问题,以下是高频问题的排查方法:

1. 累计数据重复或翻倍

原因:业务数据表存在重复行(如同一订单被多次录入),或表关系设置错误(如 “多对多” 关系)。

解决方案

  • 检查业务数据:通过 “表格可视化” 展示原始数据,排查重复行(可使用DISTINCTCOUNT('销售数据表'[订单ID])验证订单唯一性);

  • 修正表关系:确保 “日期表” 与 “业务表” 为 “一对多” 关系(日期表为 “一”,业务表为 “多”),避免 “多对多” 关系导致的重复计算。

2. 累计曲线不连续(有断点)

原因:未使用独立日期表,直接用业务表的 “订单日期”(如周末无订单,日期缺失导致断点)。

解决方案

  • 删除业务表的 “订单日期”,改用独立 “日期表” 的 “日期” 字段

  • 确保日期表覆盖完整时间范围(如全年 365 天),无日期缺失。

3. 分组累计时部分维度无数据

原因FILTER函数中误清除了分组维度的筛选器(如用ALL('日期表')而非ALL('日期表'[日期]),清除了日期表的所有字段筛选)。

解决方案

  • 调整 DAX 公式:仅清除 “日期” 字段的筛选,保留其他字段(如ALL('日期表'[日期])而非ALL('日期表'));

  • 检查筛选器:确保分组维度(如 “区域”)未被页面筛选器或视觉筛选器隐藏。

六、最佳实践与优化技巧

1. 优先使用时间智能函数简化 DAX

对于按年、季、月的累计,可使用 PowerBI 的时间智能函数(如TOTALYTD/TOTALQTD/TOTALMTD)简化公式,减少手动编写FILTER的复杂度:

// 按年度累计(时间智能函数版)

累计销售额(年度) = TOTALYTD(SUM('销售数据表'[销售额(元)]), '日期表'[日期])

// 按季度累计(时间智能函数版)

累计销售额(季度) = TOTALQTD(SUM('销售数据表'[销售额(元)]), '日期表'[日期])

优势TOTALYTD自动识别 “年度” 范围,无需手动筛选 “小于等于当前日期”,公式更简洁。

2. 命名度量值时明确业务含义

避免使用 “累计 1”“销售额 2” 等模糊命名,建议按 “指标 + 维度 + 场景” 命名,例如:

  • “累计销售额(区域对比版)”;

  • “累计用户数(年度目标对比)”,方便团队协作时快速理解度量值用途。

3. 控制累计指标的粒度

根据业务需求选择合适的时间粒度(日、周、月、季):

  • 业务监控(如日报):用 “日” 粒度累计;

  • 战略复盘(如季报):用 “月” 或 “季” 粒度累计,避免粒度过细导致图表拥挤。

4. 添加动态参考线

除了目标线,还可添加 “平均值线”“达标线(如目标 80%)”,帮助更全面分析:

  • 点击折线图 → “分析” → “参考线” → “添加”;

  • 选择 “Y 轴”,设置参考线类型(如 “固定值”“平均值”),例如设置 “固定值” 为 40000(年度目标的 66.7%),直观判断是否达成年中目标。

七、结语

PowerBI 制作累计曲线的核心并非复杂的可视化操作,而是对 “累计逻辑的 DAX 实现” 与 “数据模型的合理设计”—— 独立日期表是基础,正确的 DAX 度量值是核心,场景化的可视化配置是关键。无论是单指标累计、多维度对比,还是动态筛选,只要掌握 “数据准备→DAX 编写→可视化配置” 的流程,结合时间智能函数与实战技巧,就能快速制作出贴合业务需求的累计曲线。

在实际应用中,累计曲线并非孤立存在,可结合切片器、卡片图、表格等组件,构建完整的 “业务进度监控仪表盘”(如 “年度销售额累计仪表盘” 包含累计曲线、目标达成率卡片、区域排名表格),让数据更直观地支撑决策。对于新手而言,建议从基础单指标累计入手,逐步尝试分组累计与目标对比,通过反复调试 DAX 公式与可视化配置,熟练掌握累计曲线的制作方法。

若你在实操中遇到具体问题(如某类数据的累计公式编写、特定场景的图表优化),可提供详细的业务场景与数据结构,我会进一步给出针对性解决方案。

学习入口:https://edu.cda.cn/goods/show/3814?targetId=6587&preview=0

推荐学习书籍 《CDA一级教材》适合CDA一级考生备考,也适合业务及数据分析岗位的从业者提升自我。完整电子版已上线CDA网校,累计已有10万+在读~ !

免费加入阅读:https://edu.cda.cn/goods/show/3151?targetId=5147&preview=0

数据分析师资讯
更多

OK
客服在线
立即咨询
客服在线
立即咨询