Power BI DAX Measure需求:统计同一技能等级一致的唯一用户数
解决方案:DAX度量值实现统计符合条件的用户数
需求说明
统计存在至少一个技能,且该技能对应的所有等级完全一致的用户数量(示例中John的SQL技能所有等级均为2,符合条件,结果为1),要求仅使用DAX度量值,不能使用计算列。
实现的DAX度量值
符合条件的用户数 = VAR SkillLevelConsistent = SUMMARIZE( '数据表', '数据表'[Name], '数据表'[Skill], "等级是否一致", IF(MIN('数据表'[Level]) = MAX('数据表'[Level]), 1, 0) ) VAR ValidUsers = DISTINCT( SELECTCOLUMNS( FILTER(SkillLevelConsistent, [等级是否一致] = 1), "有效用户", [Name] ) ) RETURN COUNTROWS(ValidUsers)
代码逻辑解释
SkillLevelConsistent变量:- 通过
SUMMARIZE按Name(用户)和Skill(技能)分组,对每组计算Level的最小值与最大值。 - 若最小值等于最大值,说明该用户的这个技能下所有等级完全一致,标记为1,否则标记为0。
- 通过
ValidUsers变量:- 筛选出标记为1的用户-技能组合,提取其中的
Name并通过DISTINCT去重(避免同一用户因多个符合条件的技能被重复计数)。
- 筛选出标记为1的用户-技能组合,提取其中的
返回结果:
- 用
COUNTROWS统计去重后的有效用户总数。
- 用
关于你之前尝试的问题说明
- EARLIER函数无效:
EARLIER用于引用外层行上下文的值,若未正确构建按用户-技能分组的多层行上下文,就无法精准匹配同一用户的同一技能数据。 - MAX函数结果错误:单独使用
MAX未按用户-技能分组时,会计算整个表的最大等级,而非单个用户单个技能的最大等级,导致逻辑偏差。
内容的提问来源于stack exchange,提问作者user22999077
相关产品推荐
相关产品推荐

