You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DAX Measure:成本占收入百分比切片器筛选后显示0的问题求助

问题排查与解决方案

问题根源

  1. Total_Cost度量值存在语法错误与冗余逻辑:原代码末尾缺少闭合括号,且重复使用了相同的筛选条件(fact_table[Cost Element Id] IN VALUES(dims_table[Cost Element Id])写了两次),同时存在表名笔误(fact_tablef应为fact_table)。
  2. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 06:54:55