Power Pivot中能否用DAX度量值替代计算列实现客户存在性检查与去重计数?
解决方案
可以直接通过DAX函数组合实现需求,无需创建计算列,以下是针对不同场景的具体写法:
场景1:两张表未建立客户列关系
使用LOOKUPVALUE判断客户是否在另一表中存在,配合FILTER筛选目标客户后统计:
客户去重计数(不在另一表) = CALCULATE( DISTINCTCOUNT('表A'[客户]), FILTER( ALL('表A'[客户]), ISBLANK(LOOKUPVALUE('表B'[客户], '表B'[客户], '表A'[客户])) ) )
也可以用COUNTROWS判断匹配行数(逻辑等价,性能差异不大):
客户去重计数(不在另一表) = CALCULATE( DISTINCTCOUNT('表A'[客户]), FILTER( ALL('表A'[客户]), COUNTROWS(FILTER('表B', '表B'[客户] = '表A'[客户])) = 0 ) )
场景2:两张表已建立客户列的关系
如果表A和表B已通过客户列建立关联(例如表B为客户维度表),可以用RELATEDTABLE简化判断逻辑:
客户去重计数(不在另一表) = CALCULATE( DISTINCTCOUNT('表A'[客户]), FILTER( ALL('表A'[客户]), ISBLANK(RELATEDTABLE('表B')) ) )
逻辑说明
ALL('表A'[客户])用于获取表A所有唯一客户值,避免当前筛选上下文干扰结果FILTER遍历并筛选出在表B中无匹配项的客户集合DISTINCTCOUNT对筛选后的客户进行去重计数
内容的提问来源于stack exchange,提问作者Yingdong Zhai
相关产品推荐
相关产品推荐

