Power BI分层结构下Acumulado mensual计算异常问题求助
解决Power BI中“Acumulado mensual”层级计算问题
问题背景
- 数据库字段:
Valor代表产品价值,CORTE代表数据日期;Nombre_region、Nombre_zona、Nombre_SUC、Asesor为层级结构 - Saldo del día:每日
Valor的累计总和,Power BI表格或矩阵可自动生成 - 当前问题:原“Acumulado mensual”公式在整个层级结构中返回相同结果,需修改为每日Saldo del día总和的平均值
原公式问题分析
原公式使用ALL(CDT)清除了所有上下文筛选,同时硬编码匹配当前选中的层级字段,导致无论当前处于哪个层级(区域、门店、顾问),都仅计算单个选中项的数值,因此层级内所有节点结果一致。
修改后的DAX公式
方案1:基于已有的「Saldo del día」度量值
如果已经单独创建了Saldo del día度量值,使用以下公式:
Acumulado mensual promedio = VAR FechaSeleccionada = SELECTEDVALUE(CDT[CORTE]) VAR MesSeleccionado = MONTH(FechaSeleccionada) VAR AnioSeleccionado = YEAR(FechaSeleccionada) VAR DiasDelPeriodo = FILTER( ALL(CDT[CORTE]), YEAR(CDT[CORTE]) = AnioSeleccionado && MONTH(CDT[CORTE]) = MesSeleccionado && CDT[CORTE] <= FechaSeleccionada ) RETURN AVERAGEX( DiasDelPeriodo, CALCULATE([Saldo del día]) )
方案2:在公式内直接计算每日总和
如果没有单独的Saldo del día度量值,可直接在公式内计算每日总和再取平均:
Acumulado mensual promedio = VAR FechaSeleccionada = SELECTEDVALUE(CDT[CORTE]) VAR MesSeleccionado = MONTH(FechaSeleccionada) VAR AnioSeleccionado = YEAR(FechaSeleccionada) VAR DiasYSaldo = SUMMARIZE( FILTER( ALL(CDT[CORTE], CDT[Nombre_region], CDT[Nombre_zona], CDT[Nombre_SUC], CDT[Asesor]), YEAR(CDT[CORTE]) = AnioSeleccionado && MONTH(CDT[CORTE]) = MesSeleccionado && CDT[CORTE] <= FechaSeleccionada ), CDT[CORTE], CDT[Nombre_region], CDT[Nombre_zona], CDT[Nombre_SUC], CDT[Asesor], "Saldo del día", SUM(CDT[Valor]) ) RETURN AVERAGEX( GROUPBY(DiasYSaldo, CDT[CORTE]), CALCULATE(SUMX(CURRENTGROUP(), [Saldo del día])) )
公式说明
- 用变量
VAR拆分逻辑,提升可读性和维护性 DiasDelPeriodo精准筛选出当前月份内、下拉过滤器指定日期前的所有日期AVERAGEX遍历每个日期,计算对应层级下的每日总和,最终取平均值- 保留了层级结构的上下文筛选,不同层级(区域、门店、顾问)会自动计算对应维度的平均值
内容的提问来源于stack exchange,提问作者Mario
相关产品推荐
相关产品推荐

