PowerBI中如何基于ID总计数计算各列非空值占比
PowerBI 列占比计算与可视化实现方案
基础逻辑说明
你需要的两类占比计算都可以通过DAX度量值实现,核心逻辑为占比 = DIVIDE(分子计数, 分母总计数, 0),第三个参数0用于处理分母为空时返回空值避免报错。
具体实现步骤
1. 先创建基础分母度量值(总ID数量)
你需要先统计全表的唯一ID总数量作为公共分母:
总ID数 = COUNT('你的表名'[唯一ID列])
2. 对应你的两个需求分别实现
需求1:计算单列非空值占总ID数的百分比
你可以选择两种方式,适配不同的使用场景:
- 方式一:单独为每列创建占比度量值(适合单独引用各列占比的场景)
分别新建4个度量值即可:
建好后选中所有度量值,在「列工具」选项卡中将格式设置为百分比,就能得到你需要的50%、25%、100%、75%的结果。A列非空占比 = DIVIDE(COUNT('你的表名'[A]), [总ID数], 0) B列非空占比 = DIVIDE(COUNT('你的表名'[B]), [总ID数], 0) C列非空占比 = DIVIDE(COUNT('你的表名'[C]), [总ID数], 0) D列非空占比 = DIVIDE(COUNT('你的表名'[D]), [总ID数], 0) - 方式二:逆透视列后创建通用度量值(适合直接做条形图的场景)
不用新建多个度量值,只需在Power Query中做一次数据结构转换:- 选中你的表,点击「转换数据」进入Power Query编辑器
- 选中唯一ID列,右键选择「逆透视其他列」,转换后会生成两个新列:「属性」(值为A/B/C/D)、「值」(对应原列的数值)
- 应用更改加载回数据模型,新建通用度量值:
通用列非空占比 = DIVIDE(COUNT('转换后的表名'[值]), DISTINCTCOUNT('转换后的表名'[唯一ID列]), 0)
需求2:计算A列数值占B列总计数的百分比
直接用SUM统计A列总数值,COUNT统计B列非空总计数即可:
A数值占B总计数百分比 = DIVIDE(SUM('你的表名'[A]), COUNT('你的表名'[B]), 0)
3. 条形图可视化配置
如果用方式二转换后的数据,直接做如下配置即可:
- 轴:拖入「属性」字段
- 值:拖入「通用列非空占比」度量值,设置格式为百分比
如果用方式一的单个度量值,直接把四个列的占比度量值全部拖入「值」区域即可自动生成四组条形。
内容的提问来源于stack exchange,提问作者MayaR
相关产品推荐
相关产品推荐

