Calcular la diferencia del mes anterior

Un usuario Pregunto ✅

Tormod_GK

Hola.

Tengo una tabla donde necesito restar dos valores que son de diferentes filas. 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 en el que 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 (SUM (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 20000
15.04.2016 70 000 0
15.05.2016 80000 10000
15.06.2016 20000 -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 corte 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. Simplemente cree 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

Entonces, 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 cambio porcentual de la diferencia con respecto a los datos del 30 de septiembre de 2020 y del 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 sigue actualizándose cuando se agregan marzo y los meses futuros, siendo el punto base el 30 de septiembre de 2020?

ankitpatira

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

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 1/5/2017 700
11 1/6/2017 1000
11 1/7/2017 1500
12 01/04/2017 600
12 1/5/2017 900
12 1/6/2017 1400
12 1/7/2017 2000
13 01/04/2017 100
13 1/5/2017 500
13 1/6/2017 600
13 1/7/2017 750
14 01/04/2017 1000
14 1/5/2017 2000
14 1/6/2017 3000
14 1/7/2017 4000

El resultado esperado es el siguiente:

mercancía meses cantidad
11 01/04/2017 500
11 1/5/2017 200
11 1/6/2017 300
11 1/7/2017 500
12 01/04/2017 600
12 1/5/2017 300
12 1/6/2017 500
12 1/7/2017 600
13 01/04/2017 100
13 1/5/2017 400
13 1/6/2017 100
13 1/7/2017 150
14 01/04/2017 1000
14 1/5/2017 1000
14 1/6/2017 1000
14 1/7/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 el departamento. Entonces, la búsqueda está en el departamento y en el mes anterior.

Índice Fecha Departamento Valor Diferencia
100 15.02.2016 100 50 000 50 000
2345 15.03.2016 100 70 000 20000
7585 15.04.2016 100 70 000 0
654325 15.05.2016 100 80000 10000
345321 15.06.2016 100 20000 -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 concatenar; 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 ANTERIOR MES del 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 usted usarlo o no.

Espero que esto te ayude a ti oa alguien más, aunque llego 4 años tarde 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 corte 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. Simplemente cree 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 recuentos diarios para cada condado en los Estados Unidos, 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»). Pude 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 recuento de casos confirmados del 22 de enero del mismo recuento del 23 de enero. Además, si el resultado finaliza hasta menos de cero, necesito poder hacer que devuelva 0. ¿Alguna idea? Podría construir un índice concatenado para condado, estado, más 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, prueba esta solución pero me muestra lo siguiente:

cuadro_RRC.PNG
Usar esta fórmula siempre resulta en cero para mí MOV_NETO_RRC
Me gustaría filtrar de enero a abril y solo mostrarme los valores encerrados en azul.
Mi medida aplicada es la siguiente:

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

rpul

En respuesta a v-sihou-msft

@ v-sihou-msft

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

DAStatError.PNG

Mi expresión actual es:

Diferencia = CALCULATE (SUM (‘Resumen anual'[Sales by Status per Year]), ANTERIOR (‘Resumen anual'[Date].[Date]))

Pero esto devuelve solo espacios en blanco. ¿Alguna idea de por qué puede ser esto o ideas para solucionar problemas? Si dejo caer el filtro, funciona. Si pruebo otros filtros que no son funciones de 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 tú. Sin embargo, el problema se resolvió cuando

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

2) Marcado como tabla de fecha con la columna de fecha como clave.

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

4) Use la columna de la tabla de fechas en Función ANTERIOR AÑO 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 *