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() )
逻辑说明:
- 获取当前行选中的同期群年月,转换为标准起始日期
- 计算该同期群对应的12个月后结束日期
- 判断当前列的年月是否处于同期群起始日期之后、结束日期之前
- 满足条件则累加区间内的销售额,否则返回空白
步骤3:配置矩阵视觉
- 行维度:拖入日期表的
年月列 - 列维度:拖入日期表的
年月列 - 值区域:拖入刚创建的
年度累加销售额度量值 - 格式调整:在视觉效果格式面板中,设置空白值不显示,按需调整数字显示格式
结果验证
- 行维度为"2020年1月"时,列维度中"2020年2月"至"2021年1月"的单元格会显示该区间的累加销售额,其余列显示空白
- 行维度为"2020年2月"时,列维度中"2020年3月"至"2021年2月"的单元格显示对应累加值
内容的提问来源于stack exchange,提问作者Arvind Sharma
相关产品推荐
相关产品推荐

