Variación de volúmenes por categoría / campo

Un usuario Pregunto ✅

SofiaVaz

Hola a todos,

Soy muy nuevo en Power BI y estoy lidiando con DAX desde cero, por lo que esta pregunta puede ser un poco básica …

El modelo de datos con el que estoy trabajando tiene un campo llamado «voy» (número de viaje) y otro llamado «Unidades» (número de unidades transportadas).

¿Cómo puedo calcular la variación del número de unidades por viaje? Básicamente, quiero saber cómo han evolucionado los volúmenes transportados (ejemplo: Variation = UnitVoy02-UnitsVoy01).

Gracias a todos,

Sofia Vaz

Alba

En respuesta a SofiaVaz

@SofiaVaz

De acuerdo, eso no está permitido con la sintaxis simplificada para el argumento de filtro. Prueba esto en su lugar:

UnitsNumberDiff =
[UnitsNumber]
    - CALCULATE (
        SUM ( Table1[Unidades_2] );
        FILTER (
            ALL ( Table1[sst_voyage] );
            Table1[sst_voyage]
                = SELECTEDVALUE ( Table1[sst_voyage] ) - 1
        )
    )

Código formateado con www.daxformatter.com

Alba

Hola @SofiaVaz

¿Puede mostrar una muestra de su tabla?

¿Quieres ver todas las variaciones? Es decir

(UnidadesVoy2 – UnidadesVoy1), (UnidadesVoy3 – UnidadesVoy2), …, UnidadesVoyN – UnidadesVoyN-1

¿Cómo le gustaría ver eso? ¿En un gráfico?

SofiaVaz

En respuesta a Alba

Hola AIB,

Gracias por su respuesta. Lamentablemente, no puedo compartir la tabla de datos, pero tiene razón, quiero ver todas las variaciones.

Me imaginé usar un gráfico en cascada para mostrar esta información, pero la medida creada (si la forma correcta es creando una medida …) también se puede usar en una tabla, por ejemplo, algo como Voy | Unidades | Variación.

¡Gracias!

Sofia Vaz

Alba

En respuesta a SofiaVaz

@SofiaVaz

¿Son consecutivos los números de viaje?

Siempre puede compartir un pequeño fragmento de su tabla, lo suficiente para mostrar su estructura, o con datos ficticios si hay información confidencial.

SofiaVaz

En respuesta a Alba

Los números de viaje son consecutivos desde 1801 hasta 1824, 1901 hasta 192x … y así sucesivamente («18» desde 2018, 19 desde 2019, y así sucesivamente …)

Como puede ver a continuación, el mismo viaje tiene diferentes entradas y mi idea era contar «Unidades2» por viaje y comparar este número con el recuento del viaje anterior …

¡Gracias!

DataSample.png

En respuesta a SofiaVaz

Hola @SofiaVaz

Consulte el archivo de muestra adjunto. Puede obtener el recuento anterior con la siguiente medida. Y luego puede obtener la variación.

PreviousCount =
CALCULATE (
    SUM ( Table1[Unidades_2] ),
    FILTER ( ALL ( Table1 ), Table1[sst_voyage] = MAX ( Table1[sst_voyage] ) - 1 )
)
Variation = IF(ISBLANK([PreviousCount]),BLANK(), [Count]-[PreviousCount])

Saludos,

Cherie

SofiaVaz

En respuesta a v-cherch-msft

Hola @ v-cherch-msft:

¡Tu solución también funciona!

Lamento no haberlo marcado como la solución, pero primero probé la otra.

Gracias por tomarse el tiempo.

Sofia Vaz

Alba

En respuesta a SofiaVaz

@SofiaVaz

OK, ¿qué tal esto?

1. Coloque un gráfico de líneas en su informe y coloque Table1[sst_voyage] en el eje x

2. Coloque esta medida en valores. Dará el número de unidades por viaje:

UnitsNumber = SUM(Table1[Unidades_2])

3. Coloque esta medida en valores. Le dará la diferencia en unidades entre el viaje actual y el anterior:

UnitsNumberDiff =
[UnitsNumber]
    - CALCULATE (
        SUM ( Table1[Unidades_2] );
        Table1[sst_voyage]
            = SELECTEDVALUE ( Table1[sst_voyage] ) - 1
    )

Esto debería funcionar siempre que los números de viaje sean consecutivos.

SofiaVaz

En respuesta a Alba

Buenos días @AlB,

Gracias por tu ayuda.

Intenté con tus expresiones pero devuelve un error …Error.png

No puedo averiguar qué está mal con SELECTEDVALUE … ¿alguna pista?

Gracias,

Sofía

Alba

En respuesta a SofiaVaz

@SofiaVaz

De acuerdo, eso no está permitido con la sintaxis simplificada para el argumento de filtro. Prueba esto en su lugar:

UnitsNumberDiff =
[UnitsNumber]
    - CALCULATE (
        SUM ( Table1[Unidades_2] );
        FILTER (
            ALL ( Table1[sst_voyage] );
            Table1[sst_voyage]
                = SELECTEDVALUE ( Table1[sst_voyage] ) - 1
        )
    )

Código formateado con www.daxformatter.com

SofiaVaz

En respuesta a Alba

¡Así funciona!

Solo tuve que agregar la función Value () antes de sst_voyage porque está definida como texto en la tabla de datos.

Ahora solo necesito encontrar una manera de calcular la variación cuando los nombres de los viajes no son consecutivos. Pero lo intentaré solo y, si es necesario, volveré a pedir tu ayuda.

Muchísimas gracias,

Sofia Vaz

Deja un comentario

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