DAX查询问题:筛选非指定表Key后对tblSales[Sales]求和
解决DAX度量值计算问题
原代码的错误点
- 语法错误:
VALUES('tblDIMID'[Key], FILTER(...))中VALUES函数参数格式错误(VALUES仅接受单一列参数),且多处存在括号、单引号未闭合的问题;FILTER('tblFactID, ...)缺少单引号闭合和括号。 - 逻辑错误:变量
a的逻辑是取tblDIMID中不在tblFactID的Key,但实际需要的是tblFactID中不在tblDIMID的Key,方向完全搞反。
正确的DAX查询(用于DAX Studio测试)
DEFINE VAR ExcludedKeys = EXCEPT(VALUES(tblFactID[Key]), VALUES(tblDIMID[Key])) EVALUATE CALCULATE( SUM(tblSales[Sales]), tblFactID[Key] IN ExcludedKeys )
报表用的度量值写法
如果是在Power BI/SSAS中创建报表度量值,直接使用以下代码即可(无需DEFINE/EVALUATE结构):
Sales_Exclude_DIMID = CALCULATE( SUM(tblSales[Sales]), EXCEPT(VALUES(tblFactID[Key]), VALUES(tblDIMID[Key])) )
更直观的替代写法(用FILTER展示逻辑)
如果想更清晰呈现筛选逻辑,也可以用FILTER直接筛选tblFactID表:
Sales_Exclude_DIMID = CALCULATE( SUM(tblSales[Sales]), FILTER( tblFactID, NOT(tblFactID[Key] IN VALUES(tblDIMID[Key])) ) )
说明
EXCEPT函数能直接返回tblFactID[Key]中不在tblDIMID[Key]内的所有值,比嵌套FILTER的写法更简洁高效。- 由于三张表之间已存在关联关系,DAX会自动通过关系传递筛选条件,无需额外处理关联逻辑。
内容的提问来源于stack exchange,提问作者Bobby Allen
相关产品推荐
相关产品推荐

