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

Power BI中按四分位数给任务量打分的度量值全为0的错误排查

DAX度量值错误排查与修正

核心错误分析

  1. 当前合作方任务数计算逻辑错误:原度量值用SUMX(table1,[Counttasks])会对所有合作方的任务数求和,而非获取当前行单个合作方的任务数,导致打分逻辑完全偏离预期。
  2. 未适配动态筛选上下文:原CALCULATETABLE未保留外部筛选器(如切片器、视觉对象筛选),无法支持动态筛选需求。
  3. 字段名不一致:代码中混用[Контрагент]和[Contragent](应为同一字段的不同拼写),需统一字段名。
  4. 分位数计算未关联筛选结果:原table1的构建未考虑外部筛选,导致分位数是全量数据的统计值,而非筛选后的数据分位数。

修正后的DAX度量值

任务量得分 = 
VAR 当前筛选的合作方任务表 = 
    CALCULATETABLE(
        ADDCOLUMNS(
            SUMMARIZE(
                'RTO_RegionMountView2',
                'RTO_RegionMountView2'[Контрагент] // 统一使用正确的合作方字段名
            ),
            "任务完成数", COUNT('RTO_RegionMountView2'[task]) // 直接计数task列非空值,若task为数值型也可使用COUNTX
        ),
        FILTER('RTO_RegionMountView2', NOT(ISBLANK('RTO_RegionMountView2'[Контрагент]))),
        ALLSELECTED('RTO_RegionMountView2') // 保留外部动态筛选上下文
    )
VAR 当前合作方任务数 = COUNT('RTO_RegionMountView2'[task])
VAR p25 = PERCENTILEX.INC(当前筛选的合作方任务表, [任务完成数], 0.25)
VAR p50 = PERCENTILEX.INC(当前筛选的合作方任务表, [任务完成数], 0.5)
VAR p75 = PERCENTILEX.INC(当前筛选的合作方任务表, [任务完成数], 0.75)
RETURN
    SWITCH(
        TRUE(),
        当前合作方任务数 < p25, 1,
        当前合作方任务数 < p50, 2,
        当前合作方任务数 < p75, 3,
        当前合作方任务数 >= p75, 4, // 覆盖等于75%分位数的情况,避免返回0
        0
    )

关键优化点说明

  • 用SUMMARIZE+ADDCOLUMNS替代GROUPBY,逻辑更清晰且性能更优。
  • 通过ALLSELECTED保留外部筛选,确保分位数和得分随筛选动态变化。
  • 直接用COUNT('RTO_RegionMountView2'[task])获取当前合作方的任务数,而非对全表求和。
  • 用SWITCH替代多层嵌套IF,可读性更强。
  • 补充等于75%分位数的判断逻辑,避免返回0值。

内容的提问来源于stack exchange,提问作者Карина

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 11:53:17