Forum Discussion
Suma total incorrecta
El problema del "total incorrecto" en las medidas de Power BI es muy común y suele producirse porque DAX calcula el total de forma diferente a las filas individuales. Así es como lo abordaría:
Usar SUMX sobre VALUES: Esto garantiza que su cálculo personalizado se ejecute a nivel de fila para cada factura única (o cualquiera que sea su campo clave) y luego suma todo para el total. Por ejemplo:
Unpaid Amount =
SUMX(
VALUES('sales payments'[Invoice NR]),
[Open Order Total] - [Payments]
)
Agregue lógica HASONEVALUE si es necesario: si el cálculo necesita controlar las filas individuales y los totales de forma diferente, puede usar HASONEVALUE para cambiar la lógica, como se muestra a continuación:
Unpaid Amount =
IF(
HASONEVALUE('sales payments'[Invoice NR]),
[Open Order Total] - [Payments],
SUMX(
VALUES('sales payments'[Invoice NR]),
[Open Order Total] - [Payments]
)
)
Asegúrese de que sus tablas estén unidas correctamente y que no haya relaciones inactivas que puedan estropear los totales. A veces, crear una tabla rápida con SUMMARIZE o mirar un objeto visual de tabla puede ayudar a detectar por qué los totales están desactivados. Si aún no funciona, no dude en compartir un archivo PBIX de muestra con datos ficticios. A veces es algo pequeño que es fácil de detectar con un ejemplo real.
- Syndicate_Admin1 year ago
Administrator
No es tan simple. Adjunto la fórmula de la medida.
Importe impagado =VAR BalanceToPay = [Total de la orden abierta] -- Último saldo pendienteVAR Total en marcha =CALCULAR(SUMA('Pagos de ventas'[Débito]),FILTRO(TODOS SELECCIONADOS('Pagos de ventas'),'Pagos de ventas'[Código de cliente] = SELECTEDVALUE('Pagos de ventas'[Código de cliente]) &&'Pagos de ventas'[Índice] >= MÁXIMO('Pagos de ventas'[Índice])))VAR Cantidad restante =SI(BalanceToPay - Total en marcha >= 0,MÁXIMO('Pagos de ventas'[Débito]),SI(BalanceToPay - (Total en marcha - MÁXIMO('Pagos de ventas'[Débito])) > 0,BalanceToPay - (Total en marcha - MÁXIMO('Pagos de ventas'[Débito])),0))DEVOLUCIÓNSI(HASONEVALUE('Pagos de ventas'[N.º de factura]),SI(Cantidad restante > 0, Cantidad restante, ESPACIO EN BLANCO()),SUMX(FILTRO(TODOS SELECCIONADOS('Pagos de ventas'),'Pagos de ventas'[Código de cliente] = SELECTEDVALUE('Pagos de ventas'[Código de cliente])),SI(BalanceToPay -CALCULAR(SUMA('Pagos de ventas'[Débito]),FILTRO(TODOS SELECCIONADOS('Pagos de ventas'),'Pagos de ventas'[Código de cliente] = SELECTEDVALUE('Pagos de ventas'[Código de cliente]) &&'Pagos de ventas'[Índice] >= ANTERIOR('Pagos de ventas'[Índice]))) >= 0,'Pagos de ventas'[Débito],SI(BalanceToPay -CALCULAR(SUMA('Pagos de ventas'[Débito]),FILTRO(TODOS SELECCIONADOS('Pagos de ventas'),'Pagos de ventas'[Código de cliente] = SELECTEDVALUE('Pagos de ventas'[Código de cliente]) &&'Pagos de ventas'[Índice] >= ANTERIOR('Pagos de ventas'[Índice]))) - 'Pagos de ventas'[Débito] > 0,BalanceToPay -CALCULAR(SUMA('Pagos de ventas'[Débito]),FILTRO(TODOS SELECCIONADOS('Pagos de ventas'),'Pagos de ventas'[Código de cliente] = SELECTEDVALUE('Pagos de ventas'[Código de cliente]) &&'Pagos de ventas'[Índice] <= ANTERIOR('Pagos de ventas'[Índice]))),0))))