Power BI关联表问题:编写DAX筛选技能达标用户的度量值报错如何解决
错误原因
- 未建立两表关联:Table1和Table2没有以[Question]为公共键建立一对多关系,跨表引用字段时DAX无法识别字段的匹配逻辑。
- 度量值不符合DAX上下文规则:直接在度量值中引用裸列名,DAX默认无法确定要取表中哪一行的字段值,因此抛出「无法确定单列的单值」报错。
- 逻辑场景不匹配:你写的表达式只适合用在固定行上下文的计算列场景,不适合用在需要动态响应筛选的度量值场景。
修复步骤
先建立表关系
进入模型视图,将Table1的[Question]字段拖拽到Table2的[Question]字段上,建立一对多关系(Table1为一端,Table2为多端),可根据筛选需要开启双向交叉筛选。编写对应需求的DAX度量值
如果你的需求是筛选出所有技能都满足要求的用户,用以下度量值:
全技能达标判定 = // 提取岗位要求的全部技能列表 VAR 要求技能集 = VALUES(Table1[Question]) // 提取当前筛选下用户已作答的全部技能列表 VAR 用户作答技能集 = VALUES(Table2[Question]) // 计算用户未达标的技能总数:已作答但得分不够 + 未作答的要求技能 VAR 未达标计数 = COUNTROWS( FILTER( 要求技能集, CALCULATE(MAX(Table2[Score])) < CALCULATE(MAX(Table1[Required Score])) ) ) + COUNTROWS(EXCEPT(要求技能集, 用户作答技能集)) RETURN // 未达标数为0则返回1,否则返回0,用于筛选 IF(未达标计数 = 0, 1, 0)
如果你的需求是逐行展示用户对应技能的达标情况,用以下度量值:
单技能达标判定 = IF( SELECTEDVALUE(Table2[Score]) >= SELECTEDVALUE(Table1[Required Score]), "达标", "未达标" )
使用说明
要筛选达标用户时,将全技能达标判定度量值拖入视觉对象的筛选器面板,设置筛选条件为「等于1」即可。
内容的提问来源于stack exchange,提问作者Marc
相关产品推荐
相关产品推荐

