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)
v-sihou-msft
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:
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.
v-sihou-msft
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:
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:
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.
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.