DAX度量多年份选择时计算结果异常问题求助
问题:多年份选择时DAX度量计算异常
问题背景
- 基于事实表和Calendar日历表创建了
COLORS度量:COLORS = DIVIDE([TOTAL_MONEY], [TOTAL_VOLUME]) TOTAL_MONEY(与TOTAL_VOLUME逻辑完全一致)的公式:TOTAL_MONEY = VAR year = SELECTEDVALUE(Calendar[YEAR]) RETURN CALCULATE([THE_MONEY],YEAR(Fact_Table[period]) = year && MONTH(Fact_Table[period]) IN DISTINCT(Calendar[Month]))- 当前使用的
RESULTS度量:RESULTS = CALCULATE([COLORS], REMOVEFILTERS(Calendar, Calendar[YEAR])) - 异常现象:
- 单年份选择时,矩阵显示正确结果(2020年30、2021年32)
- 选择两个不同年份时,
RESULTS返回错误值(60和70),尝试替换为ALLEXEPT、KEEPFILTERS、HASONEFILTER后问题仍存在
问题根源
TOTAL_MONEY中使用SELECTEDVALUE(Calendar[YEAR]),当多选年份时,SELECTEDVALUE返回空值,导致YEAR(Fact_Table[period]) = year的条件失效,计算逻辑混乱。RESULTS的REMOVEFILTERS移除了年份筛选,但TOTAL_MONEY的硬编码逻辑依赖单一年份的选择,两者冲突引发错误。
解决方案
1. 重构TOTAL_MONEY和TOTAL_VOLUME
移除硬编码的年份变量,改为利用日历表的筛选上下文匹配事实表的日期:
TOTAL_MONEY = CALCULATE( [THE_MONEY], // 让事实表period与日历表中选中的日期范围匹配 Fact_Table[period] IN VALUES(Calendar[Date]) )
TOTAL_VOLUME执行完全相同的修改
如果需要更精准的年月匹配,也可以使用:
TOTAL_MONEY = CALCULATE( [THE_MONEY], YEAR(Fact_Table[period]) IN VALUES(Calendar[YEAR]), MONTH(Fact_Table[period]) IN VALUES(Calendar[Month]) )
2. 调整RESULTS度量
- 若需求是多选年份时,每个年份仍保留独立的
COLORS计算,直接使用:RESULTS = [COLORS] - 若需求是多选年份时,计算所有选中年份的整体
COLORS值,则使用:RESULTS = CALCULATE( [COLORS], REMOVEFILTERS(Calendar[Month]) // 移除月份筛选,保留年份筛选的整体计算 )
内容的提问来源于stack exchange,提问作者altoids
相关产品推荐
相关产品推荐

