Power BI中如何创建忽略筛选的固定行计数及占比列
Power BI 固定BU/Sub-BU人员基数的占比计算方案
核心思路
要实现忽略属性筛选的固定人员计数,关键是清除属性表的筛选上下文,同时保留业务单元(main BU/Sub-BU)的筛选上下文,确保每个BU层级的基数固定不变。
度量值编写(分场景)
假设模型表结构:
人员表:含人员ID、关联业务单元表的外键、关联属性表的外键业务单元表:含main BU、Sub-BU字段属性表:存储各类属性筛选字段
1. 固定Sub-BU总人数(忽略属性筛选)
固定Sub-BU总人数 = CALCULATE( COUNT('人员表'[人员ID]), ALLEXCEPT('业务单元表', '业务单元表'[main BU], '业务单元表'[Sub-BU]) )
- 用
ALLEXCEPT保留业务单元表的main BU和Sub-BU筛选,清除其他所有筛选(包括属性表的筛选),确保每个Sub-BU的总人数固定,不受属性选择影响。
2. 固定main BU总人数(忽略属性筛选)
如果需要主业务单元的固定基数:
固定main BU总人数 = CALCULATE( COUNT('人员表'[人员ID]), ALLEXCEPT('业务单元表', '业务单元表'[main BU]) )
3. 占比计算场景
场景A:当前筛选人数(含属性筛选)占Sub-BU固定总人数的比例
当前人数占Sub-BU固定比 = DIVIDE( COUNT('人员表'[人员ID]), // 当前属性筛选下的人数 [固定Sub-BU总人数] // 该Sub-BU的固定总人数 )
场景B:Sub-BU固定总人数占所属main BU固定总人数的比例
Sub-BU占main BU固定比 = DIVIDE( [固定Sub-BU总人数], CALCULATE([固定main BU总人数], ALL('业务单元表'[Sub-BU])) )
- 通过
ALL('业务单元表'[Sub-BU])清除Sub-BU的筛选,获取当前main BU的固定总人数作为分母。
注意事项
- 确保
人员表与业务单元表、属性表的关联是单向筛选(默认即可,避免筛选上下文反向传递导致基数异常)。 - 如果存在其他筛选器(如时间)需要保留,可在
ALLEXCEPT中添加对应表的字段,比如ALLEXCEPT('业务单元表', '业务单元表'[main BU], '业务单元表'[Sub-BU], '日期表'[年份])。 - 用
DIVIDE替代直接除法,避免除数为0的报错。
内容的提问来源于stack exchange,提问作者kosekk_g
相关产品推荐
相关产品推荐

