Calcular la diferencia con el mes anterior

Un usuario Pregunto ✅

Tormod_GK

Hola.

Tengo una tabla donde necesito restar dos valores que son de filas diferentes. Quiero la diferencia entre el valor de la fecha actual en la fila y la fila que tiene el mes anterior. Este es un ejemplo donde tengo las columnas Fecha y Valor en mi tabla, pero necesito crear la columna ‘Diferencia’.

También probé esta fórmula DAX, pero el valor solo aparece en una fecha, por lo que no funciona.

suma(DW_Data_Salg[Inntekt])-CALCULAR(SUMA(DW_Data_Salg[Inntekt]);DATEADD(DW_Data_Salg[DATO].[Date];-1 MES))

¿Hay alguien que sepa cómo hacer esto?

Fecha Valor Diferencia
15.02.2016 50 000 50 000
15.03.2016 70 000 20 000
15.04.2016 70 000 0
15.05.2016 80 000 10 000
15.06.2016 20 000 -60 000

Atentamente,

Tormod (Noruega)

En respuesta a Tormod_GK

@Tormod_GK

En este escenario, dado que necesita obtener los datos del mes anterior en función de la fecha de división actual, es mejor crear una medida en lugar de una columna calculada. De lo contrario, debe buscar la fila anterior según la columna de índice como sugirió @ankitpatira. Solo crea una medida como:

difference=
sum(DW_Data_Salg[Inntekt])-CALCULATE(SUM(DW_Data_Salg[Inntekt]),PARALLELPERIOD(DW_Data_Salg[DATO].[Date],-1,MONTH))

O

difference=
sum(DW_Data_Salg[Inntekt])-CALCULATE(SUM(DW_Data_Salg[Inntekt]),PREVIOUSMONTH(DW_Data_Salg[DATO].[Date]))

Saludos,

jasbir_singh83

Hola, vea la imagen a continuación que creé a través de Quick Measure & Time Intelligence:

jasbir_singh83_1-1614770552580.png

Por lo tanto, mi conjunto de datos es del 30 de septiembre de 2020 al 28 de febrero de 2021. Calculé el %diff MoM, ¿Cómo puedo ocultar la fila de marzo ya que no tenemos datos de marzo a partir de ahora y cómo eliminar la columna Total del gráfico de cascada creado por ¿Esta tabla?

Además, ¿hay alguna manera de reflejar la columna Total como un % de cambio de diferencia entre los datos del 30 de septiembre de 2020 y el 28 de febrero de 2021? ¿Ha habido una disminución o un aumento general en febrero de 2021 desde el punto de partida en septiembre de 2020? ¿Cómo tener esta fórmula como una medida separada en sí misma que continúa actualizándose cuando se agregan marzo y los meses futuros con el punto base el 30 de septiembre de 2020?

ankitpatira

@Tormod_GK Primero vaya al editor de consultas en el escritorio de power bi y en Agregar columna, agregue la columna de índice desde cero. Luego, en la pestaña de modelado, cree una nueva columna usando el código a continuación.

Difference = 
TABLENAME[Value] - IF(
  TABLENAME[Value] = 0,
  TABLENAME[Value],
  LOOKUPVALUE(
   TABLENAME[Value],
   TABLENAME[Index],
   TABLENAME[Index]-1)
 )

SantiagoBS

En respuesta a ankitpatira

Hola @ankitpatira

Su código DAX finalmente me llevó a la solución que necesitaba, muchas gracias, sin embargo, ¿puedo preguntar por qué el condicional antes de buscar el valor?

mnigam

En respuesta a ankitpatira

Hola,

Tengo una tabla con los nombres de las columnas Producto, Meses y Cantidad. Quiero calcular la diferencia entre la cantidad del mes wr t. columna de productos básicos.

¿Alguien puede ayudarme a escribir una consulta DAX?

mercancía meses cantidad
11 01/04/2017 500
11 01/05/2017 700
11 01/06/2017 1000
11 7/1/2017 1500
12 01/04/2017 600
12 01/05/2017 900
12 01/06/2017 1400
12 7/1/2017 2000
13 01/04/2017 100
13 01/05/2017 500
13 01/06/2017 600
13 7/1/2017 750
14 01/04/2017 1000
14 01/05/2017 2000
14 01/06/2017 3000
14 7/1/2017 4000

El resultado esperado es el siguiente:

mercancía meses cantidad
11 01/04/2017 500
11 01/05/2017 200
11 01/06/2017 300
11 7/1/2017 500
12 01/04/2017 600
12 01/05/2017 300
12 01/06/2017 500
12 7/1/2017 600
13 01/04/2017 100
13 01/05/2017 400
13 01/06/2017 100
13 7/1/2017 150
14 01/04/2017 1000
14 01/05/2017 1000
14 01/06/2017 1000
14 7/1/2017 1000

Gracias por adelantado

Saludos,

manish nigam

Tormod_GK

En respuesta a ankitpatira

Hola y gracias por tu solución, pero hay un problema. Mi tabla consta de 2 filas de molinos y 40 columnas y la referencia es departamento. Así que la búsqueda es por departamento y por el mes anterior.

Índice Fecha Departamento Valor Diferencia
100 15.02.2016 100 50 000 50 000
2345 15.03.2016 100 70 000 20 000
7585 15.04.2016 100 70 000 0
654325 15.05.2016 100 80 000 10 000
345321 15.06.2016 100 20 000 -60 000

SantiagoBS

En respuesta a Tormod_GK

Hola @Tormod_GK

Encontré casi el mismo problema que usted, mi solución fue usar un índice calculado basado en los valores de búsqueda que necesitaba y usar la función de concatenación; primero necesitaría generar el índice como una columna calculada, de la siguiente manera:

ConcatIndex = TABLENAME[Index] & TABLENAME[Date] & TABLENAME[Department] 

Luego, use ConcatIndex para recuperar el valor de cada departamento e índice y la función PREVIOUSMONTH para el mes anterior:

Difference = 
TABLENAME[Value] - IF(
  TABLENAME[Value] = 0,
  TABLENAME[Value],
  LOOKUPVALUE(
   TABLENAME[Value],
   TABLENAME[ConcatIndex],
   (TABLENAME[Index] & (PREVIOUSMONTH(TABLENAME[Date] & TABLENAME[Department])))
 )

No estoy muy seguro de cuál es el propósito del condicional en el último código, depende de ti usarlo o no.

Espero que esto te ayude a ti o a alguien más, aunque tengo 4 años de retraso, jeje.

En respuesta a Tormod_GK

@Tormod_GK

En este escenario, dado que necesita obtener los datos del mes anterior en función de la fecha de división actual, es mejor crear una medida en lugar de una columna calculada. De lo contrario, debe buscar la fila anterior según la columna de índice como sugirió @ankitpatira. Solo crea una medida como:

difference=
sum(DW_Data_Salg[Inntekt])-CALCULATE(SUM(DW_Data_Salg[Inntekt]),PARALLELPERIOD(DW_Data_Salg[DATO].[Date],-1,MONTH))

O

difference=
sum(DW_Data_Salg[Inntekt])-CALCULATE(SUM(DW_Data_Salg[Inntekt]),PREVIOUSMONTH(DW_Data_Salg[DATO].[Date]))

Saludos,

Ripstaur

En respuesta a v-sihou-msft

Tengo datos de GitHub sobre los casos y muertes de COVID. Tiene conteos diarios para cada condado en los EE. UU., para todos los días desde el 22 de enero. Me gustaría poder calcular la diferencia entre días («nuevos casos» o «nuevas muertes»). He podido hacer eso en Tableau, pero no he descubierto cómo hacerlo en una columna calculada en M o Dax en Power BI. En otras palabras, para un condado en particular en un estado en particular (o para un código FIPS en particular), necesito poder restar el conteo de casos confirmados para el 22 de enero del mismo conteo para el 23 de enero. Además, si el resultado termina hasta menos de cero, necesito poder hacer que devuelva 0. ¿Alguna idea? Podría crear un índice concatenado para el condado, el estado y un número de índice, si eso ayuda.

Ripstaur

En respuesta a v-sihou-msft

¿Qué es «DATO» en esta expresión?

Tormod_GK

En respuesta a Ripstaur

DATO = FECHA 🙂

fjcampos

En respuesta a v-sihou-msft

Tengo un problema similar, intente esta solución pero me muestra lo siguiente:

cuadro_RRC.PNG
El uso de esta fórmula siempre da como resultado cero para mí MOV_NETO_RRC
Quisiera filtrar de enero a abril y solo mostrarme los valores encerrados en azul.
Mi medida aplicada es la siguiente:

MOV_NETO_RRC = SUMA(RRC[RESERVA_RIESGO_CURSO]) – CALCULAR(SUMA(RRC[RESERVA_RIESGO_CURSO]);PERIODOPARALELO(DIM_TIEMPO[FECHA].[Date];-1 MES))

rpul

En respuesta a v-sihou-msft

@v-sihou-msft

He estado tratando de realizar un cálculo similar, pero cada vez que uso una función DAX, como AÑO ANTERIOR, como filtro en CALCULAR, no se devuelve nada.

DAStatError.PNG

Mi expresión actual es:

Diferencia = CALCULAR(SUMA(‘Resumen anual'[Sales by Status per Year]), AÑO ANTERIOR(‘Resumen anual'[Date].[Date]))

Pero esto devuelve solo espacios en blanco. ¿Alguna idea de por qué esto puede ser o ideas para solucionar problemas? Si dejo caer el filtro, funciona. Si pruebo otros filtros que no son funciones DAX como ‘Resumen anual'[Date].[Date]=2017 funciona.

jpatil

En respuesta a rpul

También obtuve resultados en blanco después de implementar AÑO ANTERIOR funciona igual que tu. Sin embargo, el problema se resolvió cuando

1) Agregué la tabla de fechas con todas las fechas ininterrumpidas dentro del período especificado.

2) Lo marcó como tabla de fechas con la columna de fecha como clave.

3) Relación establecida entre la tabla de fechas y la tabla de datos.

4) Usar la columna de la tabla de fechas en Función AÑO ANTERIOR en lugar de la columna de fecha de la tabla de datos.

Funcionó como se esperaba después de seguir los pasos anteriores.

Deja un comentario

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