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
相关产品推荐
相关产品推荐

