求Power BI中各指标平均得分Top1的更简便实现方法
更简便的Power BI指标Top1部门计算方案
一、简化数据转换(快速Unpivot)
如果你的原始表是宽表(列包含部门、Criteria 1、Criteria 2、Criteria 3),不用写复杂M代码,在Power Query里点几下就能完成转换:
- 选中「部门」列,右键选择Unpivot Other Columns,自动生成
Attribute(指标名称)和Value(得分)两列,这一步10秒就能搞定。
二、用DAX度量值直接搞定,不用额外计算表
直接写两个度量值,就能实现平均得分计算和Top1部门提取,全程不用创建计算表:
1. 平均得分度量值
平均得分 = AVERAGE('你的表名'[Value])
2. 指标Top1部门度量值
指标Top1部门 = VAR 当前指标 = SELECTEDVALUE('你的表名'[Attribute]) VAR 部门得分排名 = ADDCOLUMNS( ALL('你的表名'[部门]), "@平均得分", CALCULATE(AVERAGE('你的表名'[Value]), '你的表名'[Attribute] = 当前指标) ) VAR Top1记录 = TOPN(1, 部门得分排名, [@平均得分], DESC) RETURN CONCATENATEX(Top1记录, '你的表名'[部门], ", ")
这个度量值会自动匹配当前筛选的指标,找出平均得分最高的部门;如果有多个部门并列第一,会用逗号隔开显示。
三、可视化快速呈现
- 用矩阵/表格:行放
Attribute(指标),列放「部门」,值放「平均得分」,一眼就能看到每个指标下各部门的得分情况; - 用卡片+切片器:添加指标切片器,配合两个卡片分别显示「平均得分」和「指标Top1部门」,精准展示单个指标的Top1信息;
- 条件格式:在矩阵里给每个指标的最高得分行设置高亮,直观标记Top1。
四、不想Unpivot?试试动态DAX方案
如果不想修改原始表结构,适合指标数量固定的场景:
- 先创建一个指标维度表:
指标维度表 = DATATABLE( "指标名称", STRING, {{"Criteria 1"}, {"Criteria 2"}, {"Criteria 3"}} )
- 写动态平均得分度量值:
动态平均得分 = VAR 选中指标 = SELECTEDVALUE('指标维度表'[指标名称]) RETURN SWITCH( 选中指标, "Criteria 1", AVERAGE('原始表'[Criteria 1]), "Criteria 2", AVERAGE('原始表'[Criteria 2]), "Criteria 3", AVERAGE('原始表'[Criteria 3]) )
- 写动态Top1部门度量值:
动态Top1部门 = VAR 选中指标 = SELECTEDVALUE('指标维度表'[指标名称]) VAR 部门得分数据 = ADDCOLUMNS( ALL('原始表'[部门]), "@平均得分", SWITCH( 选中指标, "Criteria 1", CALCULATE(AVERAGE('原始表'[Criteria 1])), "Criteria 2", CALCULATE(AVERAGE('原始表'[Criteria 2])), "Criteria 3", CALCULATE(AVERAGE('原始表'[Criteria 3])) ) ) VAR Top1记录 = TOPN(1, 部门得分数据, [@平均得分], DESC) RETURN CONCATENATEX(Top1记录, '原始表'[部门], ", ")
内容的提问来源于stack exchange,提问作者Umut K
相关产品推荐
相关产品推荐

