Power BI矩阵实现:基于切片器选择与聚合的多维度对比
实现自定义分组的矩阵展示方案
步骤1:创建行分组辅助表
首先需要一个自定义表来定义矩阵的行维度,包含你需要的四个分组标签。可以用DAX创建:
MatrixRows = DATATABLE("分组", STRING, {{"全国"}, {"选中州"}, {"选中办公室1"}, {"选中办公室2"}})
也可以通过「输入数据」手动录入这四个标签。
步骤2:准备独立的办公室筛选列
因为两个办公室切片器不能共用同一列(会导致筛选冲突),需要复制原表的Office Name列,分别命名为Office Name 1和Office Name 2,对应两个切片器的数据源。
步骤3:编写动态度量值
替换原有的平均等待时间和面试时长度量,根据辅助表的分组返回对应维度的计算结果:
动态平均等待时间
动态平均等待时间 = SWITCH( SELECTEDVALUE(MatrixRows[分组]), "全国", CALCULATE(AVERAGE('面试表'[Wait Time]), ALL('面试表')), "选中州", CALCULATE(AVERAGE('面试表'[Wait Time]), ALLSELECTED('面试表'[State])), "选中办公室1", CALCULATE(AVERAGE('面试表'[Wait Time]), ALLSELECTED('面试表'[Office Name 1])), "选中办公室2", IF(ISFILTERED('面试表'[Office Name 2]), CALCULATE(AVERAGE('面试表'[Wait Time]), ALLSELECTED('面试表'[Office Name 2])), BLANK()) )
动态平均面试时长
动态平均面试时长 = SWITCH( SELECTEDVALUE(MatrixRows[分组]), "全国", CALCULATE(AVERAGE('面试表'[Interview Length]), ALL('面试表')), "选中州", CALCULATE(AVERAGE('面试表'[Interview Length]), ALLSELECTED('面试表'[State])), "选中办公室1", CALCULATE(AVERAGE('面试表'[Interview Length]), ALLSELECTED('面试表'[Office Name 1])), "选中办公室2", IF(ISFILTERED('面试表'[Office Name 2]), CALCULATE(AVERAGE('面试表'[Interview Length]), ALLSELECTED('面试表'[Office Name 2])), BLANK()) )
步骤4:配置矩阵视觉
- 将辅助表的
MatrixRows[分组]拖入矩阵的行区域 - 将上述两个动态度量拖入矩阵的值区域
- 分别设置三个切片器:州切片器绑定
State列,办公室1切片器绑定Office Name 1列,办公室2切片器绑定Office Name 2列 - 在矩阵的视觉设置中开启「隐藏空行」,这样当办公室2未选中时,该行会自动隐藏
内容的提问来源于stack exchange,提问作者Sweepster
相关产品推荐
相关产品推荐

