Power BI DAX需求:使指定日期与日期筛选器保持一致
解决DAX表达式无法筛选特定日期数据的问题
问题根源分析
原表达式存在两个核心问题:
All('WO 3Years'[DATE])会清除事实表日期列的所有筛选,再结合DATESBETWEEN取年初到所选日期的范围,导致返回的是年初至今累计值,而非目标的单日数据。- 重复定义
DtSelected和EndDate变量,属于冗余代码,且没有利用好日期表的筛选上下文。
修正方案
方案1:直接获取选中日期的单日数据
如果需求是获取选中日期当天的Written $ TY总和,使用以下简化表达式:
= CALCULATE( SUM('WO 3Years'[Written $ TY]), 'WO 3Years'[DATE] = SELECTEDVALUE(Dates[TRNDATE]) )
- 直接通过日期匹配关联日期表的选中值与事实表日期,保留筛选上下文。
- 移除冗余变量,逻辑更清晰。
方案2:检查模型关系有效性
若上述方案仍不生效,需确认模型关系:
- 确保
Dates[TRNDATE]与WO 3Years[DATE]建立了激活的一对多关系,且两个列的日期类型完全一致(避免文本格式日期与日期格式列不匹配)。
方案3:处理无选中日期的场景(可选)
如果需要在未选中日期时返回空值或默认值,可添加空值判断:
= VAR SelectedDate = SELECTEDVALUE(Dates[TRNDATE]) RETURN IF( NOT ISBLANK(SelectedDate), CALCULATE( SUM('WO 3Years'[Written $ TY]), 'WO 3Years'[DATE] = SelectedDate ), BLANK() // 可替换为其他默认值,比如SUM('WO 3Years'[Written $ TY]) )
内容的提问来源于stack exchange,提问作者Nilesh Gupta
相关产品推荐
相关产品推荐

