Suma acumulativa de una medida que calcula una suma acumulativa

Un usuario Pregunto ✅

matthewseñal

Hola,

Soy un nuevo usuario de Power BI y estoy tratando de aprender sobre medidas y DAX, etc.

Estoy tratando de crear una suma acumulativa de una medida que en sí misma calcule una suma acumulativa (todo lo cual debe ser rebanable).

Una vista de tabla de los datos/medidas que he creado es la siguiente:

tabla.PNG

Donde:

La columna de edad se extrae directamente de una tabla.

Activos totales es una medida simple: Activos totales = COUNT(Activos[Age]) + 0

Los activos acumulativos se generaron utilizando el total acumulado de la medida rápida:

Activos acumulados =
CALCULAR(
[Total Assets],
FILTRAR(
ALLSELECTED(‘Tabla de edades'[Age]),
ISONORAFTER(‘Tabla de edades'[Age], MAX(‘Tabla de edades'[Age]), ASC)
)
)

Total Faults es una medida simple: Total Faults = COUNT(Faults[Age at Fault]) + 0

Tasa de fallas es una medida simple: Tasa de fallas = DIVIDE([Total Faults],[Cumulative Assets]) + 0

El objetivo deseado es hacer que la «Tasa acumulativa de fallas» calcule un total acumulado de la Tasa de fallas en función de la antigüedad.

La columna debe contener [0.27, 0.47, 0.87, 0.87, 0.87…]

He intentado implementar usando el total acumulado de la medida rápida:

Tasa acumulada de fallas =
CALCULAR(
[Fault Rate],
FILTRAR(
ALLSELECTED(‘Tabla de edades'[Age]),
ISONORAFTER(‘Tabla de edades'[Age], MAX(‘Tabla de edades'[Age]), DESC)
)
)

Como muestra la tabla, la columna «Tasa acumulativa de fallas» no muestra lo que quiero…

Finalmente, me gustaría que las medidas sean dinámicas con la segmentación del modelo (supongo que ahí es donde encaja la función «ALLSELECTED»…)

Disculpas si esto se ha cubierto, leí un par de hilos más y traté de resolverlo por mi cuenta… pero no pude hacerlo funcionar.

Gracias,

Mate

v-xjiin-msft

Hola @matthewsignal,

Para hacer una suma acumulativa en una medida, puede probar la siguiente medida:

Cumulative Fault Rate =
SUMX (
    FILTER (
        ALLSELECTED ( 'Age Table'[Age] ),
        'Age Table'[Age] <= MAX ( 'Age Table'[Age] )
    ),
    [Fault Rate]
)

8.PNG

Gracias,
Xi Jin.

matthewseñal

En respuesta a v-xjiin-msft

Hola @v-xjiin-msft,

gracias por su rápida respuesta.

Desafortunadamente eso no ha funcionado para mí, vea el resultado a continuación.

tabla2.PNG

El resultado ha cambiado en comparación con mi primer intento, pero aún no es correcto.

¿Ingresó los datos de la tasa de fallas en una tabla o los calculó a través de las ecuaciones que publiqué originalmente al desarrollar su solución?

Estoy ansioso por escuchar más ideas que alguien tenga sobre cómo resolver esto.

Muchas gracias,

Mate

v-xjiin-msft

En respuesta a matthewseñal

Hola @matthewsignal,

Ya que no puedo ver sus datos reales y solo ha compartido algunos resultados de medidas. Es difícil para mí reproducir tu problema. ¿Podría compartirnos su archivo pbix con One Drive o Google Drive si es posible? Para que pueda obtener una dirección correcta.

Si no puede, comparta algunos datos de muestra que puedo copiar y pegar directamente.

Gracias,
Xi Jin.

matthewseñal

En respuesta a v-xjiin-msft

Hola @v-xjiin-msft,

Sí claro, he subido el archivo pbix a dropbox, mira el enlace:

https://www.dropbox.com/s/sgpxnx1buf28e7h/cumul%20sum%20data.pbix?dl=0

Es un conjunto de datos muy básico para ilustrar el desafío que estoy teniendo.

Hazme saber si tienes alguna pregunta.

Gracias,

Mate

v-xjiin-msft

En respuesta a matthewseñal

Hola @matthewsignal,

está bien. Lo tengo. El problema está en la fórmula de activos acumulativos. El orden de este acumulativo es de mayor edad a menor edad como cuando la edad es 5 Los activos acumulativos son 3 y cuando la edad es 0, los activos acumulativos son 11. Lo que debería estar mal en su escenario. Para modificar su problema, simplemente puede cambiar ASC a DESC, luego use mi fórmula para obtener la Tasa acumulativa de fallas.

Cumulative Assets = 
CALCULATE(
	[Total Assets],
	FILTER(
		ALLSELECTED('Age Table'[Age]),
		ISONORAFTER('Age Table'[Age], MAX('Age Table'[Age]), DESC)
	)
)

Por cierto, si desea obtener una suma acumulativa de una medida. Le sugiero encarecidamente que use SUMX() en lugar de usar la medida rápida. Para los Activos Acumulativos, puede ser:

Cumulative Assets = 
SUMX(
	FILTER(
		ALLSELECTED('Age Table'[Age]),
		'Age Table'[Age] <= MAX ( 'Age Table'[Age] )
	),
    [Total Assets]
)

1 PNG

Gracias,
Xi Jin.

matthewseñal

En respuesta a v-xjiin-msft

Hola @v-xjiin-msft,

Me alegra saber que tienes el archivo OK.

Quiero que la fórmula de activos acumulados sea desc.

Piénselo como ‘número total de activos> = edad (fila)’… cada mes, los activos actuales pasan al siguiente grupo de edad más alto

¿Es posible tener la fórmula de activos acumulados desc como es actualmente, y la tasa de falla acumulada aumenta con la edad (por ejemplo, asc)?

Gracias por tu ayuda en esto

Mate

matthewseñal

En respuesta a matthewseñal

Hola @v-xjiin-msft,

¿Mi última respuesta tuvo sentido?

Todavía no he podido resolver este problema y me preguntaba si tenías más ideas.

Agradezco su tiempo y ayuda con esto.

Gracias,

Mate

Deja un comentario

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