如何统计两关联表中同一ID对应Position相同的记录数(DAX报错解决)
问题解决:DAX统计两关联表同ID下Position相同的记录数
错误原因分析
你的DAX公式存在两个核心问题:
- 语法错误:
COUNTROWS函数仅接受一个表参数,你错误地将FILTER作为COUNTROWS的第二个参数传入,导致语法结构混乱。 - 上下文歧义:直接引用
Table2[Position]会返回该列的所有值,DAX无法识别当前行对应的Table2记录,因此触发"引用多值列"的报错。
正确DAX公式
方法1:使用FILTER+RELATED
利用表间的ID关联,通过RELATED函数获取当前Table1行对应Table2的Position值,再筛选匹配的记录并计数:
= COUNTROWS( FILTER( Table1, Table1[Position] = RELATED(Table2[Position]) ) )
方法2:使用SUMX逐行判断
通过逐行遍历Table1,判断每行Position是否与对应Table2的Position相等,累加符合条件的记录数:
= SUMX( Table1, IF(Table1[Position] = RELATED(Table2[Position]), 1, 0) )
说明
RELATED函数的作用是基于两表已建立的ID关联,从Table2中提取与当前Table1行ID匹配的Position值,解决了多值引用的歧义问题。- 上述公式均可得到预期结果2(对应ID3362498与2150465的Position一致的记录)。
内容的提问来源于stack exchange,提问作者PHL1NX
相关产品推荐
相关产品推荐

