DAX Measure:成本占收入百分比切片器筛选后显示0的问题求助
问题排查与解决方案
问题根源
- Total_Cost度量值存在语法错误与冗余逻辑:原代码末尾缺少闭合括号,且重复使用了相同的筛选条件(
fact_table[Cost Element Id] IN VALUES(dims_table[Cost Element Id])写了两次),同时存在表名笔误(fact_tablef应为fact_table)。 - Revenue度量值的筛选上下文冲突:当通过维度表的
Cost Category或Cost Element Id进行筛选时,筛选上下文会自动排除事实表中Cost Element Id = "Revenue"的行(因为维度表中没有对应Revenue的记录),导致[Revenue]计算结果为0,最终DIVIDE函数返回0。
修正后的度量值
1. 修复Total_Cost
Total_Cost = CALCULATE( SUM(fact_table[Value]), fact_table[Cost Element Id] IN VALUES(dims_table[Cost Element Id]) )
- 移除了重复的
FILTER逻辑(CALCULATE的筛选参数已足够实现需求) - 修正了表名笔误
- 补充了缺失的闭合括号
2. 调整Revenue以忽略维度表筛选
为了确保筛选成本维度时仍能正确计算收入,需要清除维度表带来的筛选上下文:
Revenue = CALCULATE( SUM(fact_table[Value]), fact_table[Cost Element Id] = "Revenue", ALL(dims_table) -- 清除维度表的所有筛选,保证Revenue始终被计算 )
如果需要保留其他筛选条件(比如Workcell),可以改用ALLEXCEPT精准控制:
Revenue = CALCULATE( SUM(fact_table[Value]), fact_table[Cost Element Id] = "Revenue", ALLEXCEPT(fact_table, fact_table[Workcell]) -- 仅保留Workcell的筛选,清除维度表相关筛选 )
3. 保留原Percentage度量值
Percentage = DIVIDE([Total_Cost],[Revenue],0)
验证效果
- 筛选
Cost Category(Components):百分比=30%(符合预期) - 筛选
Cost Element Id(00003):百分比=10%(符合预期) - 无筛选或仅筛选
Workcell:百分比保持30%(正常)
内容的提问来源于stack exchange,提问作者kkk
相关产品推荐
相关产品推荐

