Power BI中按四分位数给任务量打分的度量值全为0的错误排查
DAX度量值错误排查与修正
核心错误分析
- 当前合作方任务数计算逻辑错误:原度量值用
SUMX(table1,[Counttasks])会对所有合作方的任务数求和,而非获取当前行单个合作方的任务数,导致打分逻辑完全偏离预期。 - 未适配动态筛选上下文:原
CALCULATETABLE未保留外部筛选器(如切片器、视觉对象筛选),无法支持动态筛选需求。 - 字段名不一致:代码中混用
[Контрагент]和[Contragent](应为同一字段的不同拼写),需统一字段名。 - 分位数计算未关联筛选结果:原
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,提问作者Карина
相关产品推荐
相关产品推荐

