Forum Discussion
Suma total incorrecta
Hola
No puedo resolver el problema de la suma total, ¿pueden ayudarme?
Adjunto un enlace al archivo Power BI
Estaré muy agradecido por su ayuda para resolver el problema.
Arturas
9 Replies
- Syndicate_Admin
Administrator
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_Admin
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))))
- Syndicate_Admin
Administrator
Hola @Sarutra
¿Qué significan VERDADERO y NO VERDADERO? ¿Cuál es el resultado esperado?
- Syndicate_Admin
Administrator
Hola
Yo creé esta medida
Measure = if(ISBLANK([Unpaid Amount]),BLANK(),SUMX(VALUES('sales-payments'[Indeksas]),[Unpaid Amount]))Espero que esto ayude.
- Syndicate_Admin
Administrator
Hola
Rezult medida en blanco
Arturas
- Syndicate_Admin
Administrator
En la captura de pantalla, como puedes ver, obtengo el resultado correcto.