DAX累计活跃项目度量值异常问题排查请求
问题排查与修复方案
核心问题分析
- Historico_Mensal_PPL计算表缺失状态字段:原代码未保留
Estado_Atual的月度状态记录,导致月度和累计度量中过滤Hold状态(Estado_Atual=9)的逻辑无法生效,这是部分项目未被正确统计的关键原因之一。 - 累计度量代码冗余且上下文冲突:原累计度量重复编写月度统计逻辑,
ALL('Calendar')的使用干扰了月度上下文的正确传递,导致部分月份的活跃项目未被计入累计。
步骤1:修复Historico_Mensal_PPL计算表
重新构建计算表,确保每个项目每个月的Estado_Atual状态被准确记录:
Historico_Mensal_PPL = VAR CalendarioMeses = ADDCOLUMNS( SUMMARIZE('Calendar', 'Calendar'[Year], 'Calendar'[MonthNO]), "UltimoDiaMes", EOMONTH(DATE([Year], [MonthNO], 1), 0) ) VAR PPLHistoricoCompleto = ADDCOLUMNS( odata_Work_Attribute_History_temp, "YearMonth", YEAR([Updated_On]) * 100 + MONTH([Updated_On]) ) RETURN GENERATE( CalendarioMeses, VAR MesAtual = [Year] * 100 + [MonthNO] VAR UltimoDiaMesAtual = [UltimoDiaMes] RETURN SELECTCOLUMNS( FILTER( PPLHistoricoCompleto, [YearMonth] <= MesAtual && ( ISBLANK([End_Date]) || [End_Date] > UltimoDiaMesAtual ) ), "ppl_code", [ppl_code], "yearmonth", MesAtual, "Estado_Atual", [Estado_Atual], "Data", UltimoDiaMesAtual ) )
说明
- 遍历日历表的每个月份,匹配项目状态历史中截止到该月仍生效的状态记录,确保每个月每个项目的
Estado_Atual准确。 - 替换原代码仅取最小/最大更新日期的逻辑,改为基于状态生效周期匹配月度。
步骤2:修复累计度量N_Epicos_Ativos_Acumulado
复用已验证的月度度量N_Epicos_Ativos_mes,通过迭代所选期间内的所有月份实现累计统计,避免代码冗余和上下文冲突:
N_Epicos_Ativos_Acumulado = VAR SelecaoPeriodo = SUMMARIZE( FILTER( ALL('Calendar'), 'Calendar'[Year] = SELECTEDVALUE('Calendar'[Year]) && 'Calendar'[MonthNO] <= SELECTEDVALUE('Calendar'[MonthNO]) ), 'Calendar'[Year], 'Calendar'[MonthNO] ) RETURN SUMX( SelecaoPeriodo, CALCULATE( [N_Epicos_Ativos_mes], 'Calendar'[Year] = [Year], 'Calendar'[MonthNO] = [MonthNO] ) )
说明
- 生成所选年份内从1月到选中月份的所有月份列表。
- 对每个月份调用月度度量计算活跃项目数,再求和得到累计值。
- 完全复用月度度量的逻辑,确保单月和累计统计规则一致,解决如项目202000221这类1月活跃、2月关闭的项目未被计入累计的问题。
验证要点
- 检查
Historico_Mensal_PPL是否包含每个项目对应月份的Estado_Atual值。 - 测试选中2月时,累计值是否等于1月活跃数+2月活跃数,确认项目202000221被计入1月的统计。
内容的提问来源于stack exchange,提问作者Joaolopes
相关产品推荐
相关产品推荐

