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

Power BI如何实现类别变动百分比矩阵展示并支持日期切片器筛选

Power BI 跨期分类变动矩阵实现方案

1. 前置数据准备

  • 确保主数据包含如下字段:主体唯一ID、分类标签、统计日期、体量数值,每条记录对应单个主体在某个统计日期的分类和体量数据
  • 构建基础日期表用于生成切片器选项,DAX公式如下:
日期表 = ADDCOLUMNS(CALENDARAUTO(), "年月", FORMAT([Date], "yyyy年mm月"))

将该表标记为官方日期表,再复制两份完全相同的独立日期表,分别命名为期初日期表、期末日期表,不要和主数据表建立关联。

2. 核心度量值编写

2.1 分类变动百分比度量值(用于矩阵单元格展示)

分类变动百分比 = 
VAR 选中期初日 = SELECTEDVALUE('期初日期表'[Date])
VAR 选中期末日 = SELECTEDVALUE('期末日期表'[Date])
VAR 当前行期初分类 = SELECTEDVALUE('主数据表'[分类标签])
VAR 当前列期末分类 = SELECTEDVALUE('主数据表'[分类标签])
// 计算选中期初对应分类的总规模
VAR 期初分类总规模 = CALCULATE(SUM('主数据表'[体量数值]), '主数据表'[统计日期] = 选中期初日, '主数据表'[分类标签] = 当前行期初分类, REMOVEFILTERS('主数据表'[分类标签]))
// 匹配期初属于当前行分类、期末属于当前列分类的主体总规模
VAR 跨期匹配规模 = 
CALCULATE(
    SUM('主数据表'[体量数值]),
    '主数据表'[统计日期] = 选中期末日,
    '主数据表'[分类标签] = 当前列期末分类,
    TREATAS(
        CALCULATETABLE(VALUES('主数据表'[主体唯一ID]), '主数据表'[统计日期] = 选中期初日, '主数据表'[分类标签] = 当前行期初分类),
        '主数据表'[主体唯一ID]
    )
)
RETURN
DIVIDE(跨期匹配规模, 期初分类总规模, 0)

2.2 剔除百分比度量值

剔除百分比 = 
VAR 选中期初日 = SELECTEDVALUE('期初日期表'[Date])
VAR 选中期末日 = SELECTEDVALUE('期末日期表'[Date])
VAR 当前行期初分类 = SELECTEDVALUE('主数据表'[分类标签])
VAR 期初分类总规模 = CALCULATE(SUM('主数据表'[体量数值]), '主数据表'[统计日期] = 选中期初日, '主数据表'[分类标签] = 当前行期初分类, REMOVEFILTERS('主数据表'[分类标签]))
// 匹配期初属于当前行分类的所有主体在期末的总规模
VAR 期末匹配总规模 = 
CALCULATE(
    SUM('主数据表'[体量数值]),
    '主数据表'[统计日期] = 选中期末日,
    TREATAS(
        CALCULATETABLE(VALUES('主数据表'[主体唯一ID]), '主数据表'[统计日期] = 选中期初日, '主数据表'[分类标签] = 当前行期初分类),
        '主数据表'[主体唯一ID]
    )
)
RETURN
DIVIDE(期初分类总规模 - 期末匹配总规模, 期初分类总规模, 0)

3. 可视化组件配置

  • 切片器:分别拖入期初日期表的日期字段、期末日期表的日期字段作为两个独立切片器,可设置为单选模式,默认选中需要对比的两个月末日期
  • 矩阵表:行维度放主数据表[分类标签](作为期初分类),列维度放主数据表[分类标签](作为期末分类),值维度放入分类变动百分比,可单独新增一列放入剔除百分比展示每行的剔除比例
  • 格式设置:将两个百分比度量值的显示格式设置为百分比,保留2位小数即可

4. 后续扩展说明

新增月末数据后仅需将数据追加到主数据表中,切片器会自动同步新增的日期选项,无需修改现有度量值和可视化配置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:06:08