Calcular el porcentaje de ingresos

Un usuario Pregunto ✅

codextero

Así que este es un problema que me ha estado desconcertado por un tiempo.

La tarea consiste en calcular los ingresos totales y luego calcular otras cuentas como porcentaje de los ingresos.

Toma este conjunto de datos ficticios

Saldos de tabla

Cuenta Año Mes Valor
1 2010 1 8
1 2010 2 7
2 2010 1 6
2 2010 2 5
3 2010 1 4
3 2010 2 3
4 2010 1 2
4 2010 2 1

Tabla Chart_of_Accounts

Cuenta Nivel 1 Nivel 2
1 Ingresos Limonada
2 Ingresos Paletas de hielo
3 Gastos Limones
4 Gastos Hielo

Poner estos datos en una tabla dinámica es lo suficientemente limpio.

Tabla dinámica 1.png

Los ingresos de cualquier mes serían la suma de las cuentas 1 y 2, ya que tienen el filtro de nivel 1 de «Ingresos».

Pensé que una medida sería la mejor manera de calcular una cuenta como porcentaje de los ingresos, así que escribí una medida para ese propósito.

Percent_of_Revenue = DIVIDE (CALCULATE (sum (Saldos[Value])), CALCULAR (suma (Saldos[Value]),Catálogo de cuentas[Level 1]= «Ingresos»))

La idea es que sume todas las entradas de cuenta que tengan un nivel 1 de «ingresos» y divida el valor por los ingresos para obtener el porcentaje de los ingresos. Sin embargo, la medida no funcionó de esa manera.

Tabla dinámica 2.png

De esto se desprende claramente que la medida filtra por nivel de informe, por lo que la parte de «ingresos totales» de la medida nunca calcula realmente los ingresos totales, sino solo para ese resultado de filtro específico.

Creo que esto se puede corregir usando ALLEXCEPT en la medida, pero no he podido hacerlo funcionar.

Editar: no se puede adjuntar un .pbix a esta publicación, la cuenta probablemente sea demasiado nueva.

parry2k

En respuesta a Moscuba

¿Es esto lo que esperas que sea el resultado?

ingresos.PNG

parry2k

En respuesta a codextero

así que prácticamente lo que publiqué fue el resultado correcto y eso es lo que estás buscando

aquí está mi expresión dax, me gusta romperlas en piezas más pequeñas para facilitar la lectura

Total Value = SUM ( Data[Value] )

Total Revenue = CALCULATE( [Total Value], FILTER ( ALLSELECTED( Chart ), Chart[Level 1] = "Revenue" ) )

% of Revenue = DIVIDE( [Total Value], [Total Revenue], 0 )

Moscuba

Utilice ALLSELECTED.

Aquí está mi fórmula que funciona (SalesSUM es una medida que es la suma de las ventas):

Porcentaje del total = «Order_Line_Invoice»[SalesSUM]/ CALCULATE (sum (‘Order_Line_Invoice’ [Sales]), TODOS SELECCIONADOS ())

Inyectando lo que creo que son tus campos:

Porcentaje del total = «suma (Saldos«[Value]/ CALCULATE (sum (‘Saldos’ [Value]), TODOS SELECCIONADOS ())

Espero que funcione.

codextero

En respuesta a Moscuba

Creo que estoy en el camino correcto, con un filtro agregado a la medida, pude obtener parte de lo que quería.

Percentage_Of_Total_mod1 = sum (‘Saldos'[Value]) / CALCULATE (sum (‘Saldos'[Value]), TODOS SELECCIONADOS (),Catálogo de cuentas[Level 1]= «Ingresos»)

Tabla dinámica 3.png

Las subcategorías se dividen correctamente por los ingresos.

Sin embargo, ALLSELECTED elimina los filtros de año y mes, por lo que los datos solo son correctos en el nivel más alto y, si profundiza, los números se dividen por los ingresos totales de todos los meses en lugar de por los ingresos mensuales. Estoy pensando que la implementación correcta implica una forma de que la medida ignore los niveles de informes, pero manteniendo todos los demás filtros (por ejemplo, mes / año).

tabla dinámica 4.png

Moscuba

En respuesta a codextero

El cálculo que publiqué funciona con filtros.

Recomiendo hacer una medida de la suma de ingresos y usarla en lugar de los datos raíz. En eso pondría el filtro de criterios de «Plan de cuentas». Puede que sea por eso que la fórmula no le está funcionando.

Las medidas que pre-suman números de uso común funcionan bien y ahorran trabajo futuro.

codextero

En respuesta a codextero

Lo tengo.

Percentage_Of_Total_mod1 = sum (‘Saldos'[Value]) / CALCULATE (sum (‘Saldos'[Value]), TODOS (Chart_of_accounts[Level 1],Catálogo de cuentas[Level 2]),Catálogo de cuentas[Level 1]= «Ingresos»)

devuelve los resultados correctos.

tabla dinámica 5.png

parry2k

En respuesta a codextero

así que prácticamente lo que publiqué fue el resultado correcto y eso es lo que estás buscando

aquí está mi expresión dax, me gusta romperlas en piezas más pequeñas para facilitar la lectura

Total Value = SUM ( Data[Value] )

Total Revenue = CALCULATE( [Total Value], FILTER ( ALLSELECTED( Chart ), Chart[Level 1] = "Revenue" ) )

% of Revenue = DIVIDE( [Total Value], [Total Revenue], 0 )

parry2k

En respuesta a codextero

@codextero si puede confirmar que la imagen que publiqué es el resultado que espera y que será útil para obtener la solución.

codextero

En respuesta a parry2k

Sí, eso es exactamente lo que estaba buscando. Encontré mi propia solución al problema, pero me interesaría ver la tuya.

parry2k

En respuesta a Moscuba

¿Es esto lo que esperas que sea el resultado?

ingresos.PNG

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *