Power BI中基于两列计算无维护城市占比的Measure需求
Power BI 计算无维护城市占比的Measure创建方案
原始数据
| location | Maint_1 | Maint_2 |
|---|---|---|
| City1 | Yes | n/a |
| City2 | Yes | Yes |
| City3 | No | |
| City4 | Yes | No |
需求说明
忽略n/a与空值,统计Maint_1和Maint_2列中标记为No的数量作为分子,有效记录(仅Yes/No)总数作为分母,最终计算占比,示例结果为2/6=33.33%。
DAX Measure 公式
无维护占比 = VAR ValidRecords = COUNTROWS( FILTER( UNION( SELECTCOLUMNS('UPS表', "维护状态", 'UPS表'[Maint_1]), SELECTCOLUMNS('UPS表', "维护状态", 'UPS表'[Maint_2]) ), [维护状态] IN {"Yes", "No"} && NOT ISBLANK([维护状态]) && [维护状态] <> "n/a" ) ) VAR NoMaintenanceCount = COUNTROWS( FILTER( UNION( SELECTCOLUMNS('UPS表', "维护状态", 'UPS表'[Maint_1]), SELECTCOLUMNS('UPS表', "维护状态", 'UPS表'[Maint_2]) ), [维护状态] = "No" && NOT ISBLANK([维护状态]) && [维护状态] <> "n/a" ) ) RETURN DIVIDE(NoMaintenanceCount, ValidRecords, 0)
公式解释
- ValidRecords(分母):
- 用
UNION把Maint_1和Maint_2合并成单列数据 - 通过
FILTER筛选出值为Yes/No、非空且不等于n/a的有效记录,再用COUNTROWS统计总数
- 用
- NoMaintenanceCount(分子):
- 合并两列数据后,筛选出值为
No的有效记录并统计数量
- 合并两列数据后,筛选出值为
- RETURN部分:
- 用
DIVIDE函数计算占比,第三个参数0用于处理分母为0的情况,避免报错
- 用
格式设置
创建Measure后,在Power BI中将其格式设置为百分比并保留两位小数,即可得到示例中的33.33%结果。
内容的提问来源于stack exchange,提问作者cghanta
相关产品推荐
相关产品推荐

