You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power BI矩阵Cohort分析:按行维度逐年列向累加数据需求

解决Power BI同期群分析年度累加问题

步骤1:完善日期维度表

确保数据模型中有独立的日期表(推荐使用Power BI自动生成的日期表),包含以下关键列:

  • 年月:格式为"2020年1月"的文本列,或日期格式的月初日期(后续可自定义显示格式)
  • 年份:提取日期对应的年份
  • 月份序号:1-12的数字,代表当年的月份
  • 日期序号:连续递增的数字,用于判断日期先后(例如从2020年1月1日起为1,逐日加1)

若没有日期表,可通过建模选项卡→新建表,用DAX生成:

日期表 = 
ADDCOLUMNS (
    CALENDAR (DATE(2020,1,1), DATE(2022,12,31)), -- 根据业务数据范围调整起止日期
    "年月", FORMAT([Date], "yyyy年mm月"),
    "年份", YEAR([Date]),
    "月份序号", MONTH([Date]),
    "日期序号", DATEDIFF(DATE(2020,1,1), [Date], DAY) + 1
)

生成后将日期表与事实表基于日期列建立关联。

步骤2:编写DAX累加度量值

核心逻辑是判断矩阵列的年月是否落在当前行同期群(Cohort)的后续12个月区间内,再累加目标指标(以销售额为例)。创建如下度量值:

年度累加销售额 = 
VAR 当前Cohort年月 = SELECTEDVALUE('日期表'[年月])
VAR Cohort起始日期 = DATEVALUE(SUBSTITUTE(当前Cohort年月, "年", "-") & "-01")
VAR 累加结束日期 = EDATE(Cohort起始日期, 12)
VAR 当前列年月 = SELECTEDVALUE('日期表'[年月])
VAR 当前列日期 = DATEVALUE(SUBSTITUTE(当前列年月, "年", "-") & "-01")
RETURN
IF(
    当前列日期 > Cohort起始日期 && 当前列日期 < 累加结束日期,
    CALCULATE(
        SUM('事实表'[销售额]),
        DATESBETWEEN('日期表'[Date], Cohort起始日期 + 1, 累加结束日期 - 1)
    ),
    BLANK()
)

逻辑说明:

  1. 获取当前行选中的同期群年月,转换为标准起始日期
  2. 计算该同期群对应的12个月后结束日期
  3. 判断当前列的年月是否处于同期群起始日期之后、结束日期之前
  4. 满足条件则累加区间内的销售额,否则返回空白

步骤3:配置矩阵视觉

  • 行维度:拖入日期表的年月列
  • 列维度:拖入日期表的年月列
  • 值区域:拖入刚创建的年度累加销售额度量值
  • 格式调整:在视觉效果格式面板中,设置空白值不显示,按需调整数字显示格式

结果验证

  • 行维度为"2020年1月"时,列维度中"2020年2月"至"2021年1月"的单元格会显示该区间的累加销售额,其余列显示空白
  • 行维度为"2020年2月"时,列维度中"2020年3月"至"2021年2月"的单元格显示对应累加值

内容的提问来源于stack exchange,提问作者Arvind Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 06:07:47