SSS
Hola,
Necesito ayuda para resolver un problema tratando de calcular las diferencias entre dos filas en Power BI.
Mis tablas se ven como:
Índice de pedidos de fecha
01/01/2017 8501 1
02/01/2017 8345 2
03/01/2017 7985 3
04/01/2017 8134 4
Necesitaría realizar la diferencia entre las filas de Orden para obtener algo como:
Diferencia
156 (del 8501 al 8345)
360 (del 8345 al 7985)
-149 (desde 7985-8134)
Intenté agregar una columna con:
=Pedidos{Índice}-Pedidos{Índice+1}
Pero no funciona.
Agradeceré cualquier ayuda. Gracias
Zubair_Muhammad
En respuesta a Marcel Beug
Hola @SSS
Usando DAX puede agregar esta columna calculada para obtener los resultados deseados
= VAR NextIndex = Table1[Index] + 1 RETURN Table1[Orders] - CALCULATE ( VALUES ( Table1[Orders] ), FILTER ( ALL ( Table1 ), Table1[Index] = NextIndex ) )
ratán
Hola chicos,
Tengo la misma pregunta sobre cómo encontrar la diferencia entre dos filas de la columna fechada. A continuación se muestra cómo se ve mi tabla.
Fecha | Cantidad | diferencia |
01/06/2020 | 1 | |
02/06/2020 | 3 | 2 |
03/06/2020 | 6 | 3 |
Solo quiero la diferencia entre la columna de cantidad. He intentado varias consultas, pero funciona bien en el modo de importación, pero el mío es el modo de consulta directa. Parece que hay muchas limitaciones en Direct Query. ¿Podría alguien ayudarme a dar alguna orientación con respecto a esto para DIrect Query?
Gracias por adelantado.
Ashish_Mathur
En respuesta a ratán
Hola,
Debe tener una Tabla de calendario con una relación desde la columna Fecha de su Tabla de datos hasta la columna Fecha de su Tabla de calendario. A su objeto visual, arrastre la columna Fecha desde la Tabla de calendario. Escribe estas medidas:
Cantidad = suma (datos[Number])
Cantidad el día anterior = calcular([quantity],día anterior(calendario[date]))
Diferencia en cantidad = [quantity]-[Quantity on previous day]
Espero que esto ayude.
ratán
En respuesta a Ashish_Mathur
Gracias. Funcionó
Ashish_Mathur
En respuesta a ratán
De nada. Si mi respuesta te ayudó, por favor márcala como Respuesta.
tomislav_mi
Hola chicos,
Encontré un problema que simplemente no puedo resolver. Si alguien me puede ayudar se lo agradeceria mucho!
Quiero calcular la diferencia entre dos filas, pero después de importar datos al modelo de datos, el orden de clasificación se confunde (consulte a continuación: Fecha del informe y Nombre de cuenta), por lo que una de mis fórmulas podría funcionar si el orden de clasificación es correcto. no funciona
La tabla se ve así y la columna Cambiar así es mi objetivo.
Nombre de la cuenta | MRR | Fecha del informe | Cambio |
a | 100 | 31/01/2017 0:00 | 100 |
a | 100 | 28/02/2017 0:00 | 0 |
a | 150 | 30/04/2017 0:00 | -30 |
a | 100 | 31/05/2017 0:00 | -50 |
B | 13 | 31/7/2019 0:00 | 13 |
B | 13 | 31/08/2019 0:00 | 0 |
C | 5 | 31/7/2019 0:00 | 5 |
a | 100 | 30/6/2017 0:00 | 0 |
a | 100 | 31/7/2017 0:00 | 0 |
a | 100 | 31/08/2017 0:00 | 0 |
a | 100 | 30/09/2017 0:00 | 0 |
a | 100 | 31/10/2017 0:00 | 0 |
a | 180 | 31/03/2017 0:00 | 80 |
Puede notar que la cuenta tampoco tiene el orden correcto para la fecha del informe.
Si hay alguna forma de resolverlo (¿tal vez como una medida? ¿O tal vez hay una forma de importar datos correctamente?)
estaría tan agradecido.
Todo lo mejor,
Tomislav
Ashish_Mathur
En respuesta a tomislav_mi
Hola,
Puede descargar mi archivo PBI desde aquí.
Espero que esto ayude.
mbelal
En respuesta a Ashish_Mathur
Hola, tengo casi los mismos datos pero la columna MRR incluye espacios en blanco, agradezco su consejo para hacerme saber cómo se verá la fórmula. Si el valor de la columna está en blanco, necesito tomar el valor más antiguo encontrado en lugar de calcular en base a ceros en lugar de balnks. Gracias.
Ashish_Mathur
En respuesta a mbelal
Hola,
Consulte la columna 1 de la imagen. Verá que el resultado en la quinta fila no es 100-0=100 sino 100-180=-80. Puede descargar mi archivo PBI desde aquí.
Espero que esto ayude.
mbelal
En respuesta a Ashish_Mathur
Hola Ashish, gracias por tu apoyo. apreciado.
su solución funciona bien para los datos de importación, pero tengo datos de consulta directa, por lo que no puedo agregar una columna personalizada para hacer lo que me aconsejó, creo que necesito la misma fórmula en la consulta de energía. Aprecio tu apoyo. Gracias.
Ashish_Mathur
En respuesta a mbelal
De nada. Alguien más te ayudará con eso.
tomislav_mi
En respuesta a Ashish_Mathur
¡Gracias @Ashish_Mathur!
¡Funciona increíble!
Muchas gracias.
¡Todo lo mejor desde Croacia!
Tomislav
Ashish_Mathur
En respuesta a tomislav_mi
De nada.
SSS
¡¡Gracias chicos!! ¡Realmente ayudó!
Ashish_Mathur
Hola @SSS,
Si tiene una tabla de calendario y existe una relación entre la columna de fecha de su tabla de datos base y la columna de fecha de la tabla de calendario, entonces puede usar esta fórmula de campo calculado
=CALCULAR(SUMA(Datos[Orders]),DÍA ANTERIOR(Calendario{Fecha]))-SUMA(Datos[Orders])
Zubair_Muhammad
En respuesta a Ashish_Mathur
@Anónimo
Puedes usar uno de estos… creo
Days from Next Date = VAR Next_Date = MINX ( TOPN ( 1, FILTER ( Table1, [Key] = EARLIER ( [Key] ) && [Date] > EARLIER ( [Date] ) ), [Date], ASC ), [Date] ) RETURN DATEDIFF ( [Date], Next_Date, DAY )
O
Days from Previous Date = VAR Previous_Date = MINX ( TOPN ( 1, FILTER ( Table1, [Key] = EARLIER ( [Key] ) && [Date] < EARLIER ( [Date] ) ), [Date], DESC ), [Date] ) RETURN DATEDIFF ( Previous_Date, [Date], DAY )
Anónimo
En respuesta a Zubair_Muhammad
Hola @Zubair_Muhammad,
¡Muchas gracias!
El primero da como resultado una columna extraña, pero el segundo funciona cuando lo comparo con el resultado de Excel.
Ahora, procederé a las pruebas accediendo a datos reales de la base de datos.
Dax tiene algunos misterios para mí, todavía. No conocía el concepto de VAR ni la posibilidad de llamar registros anteriores o siguientes en una instrucción.
Muchas gracias de nuevo.
pxg08680
@SSS
Anónimo
En respuesta a pxg08680
@pxg08680
Tengo un caso similar y usaré el mismo ejemplo. Digamos que hay otra columna llamada «Tienda» con los valores ‘Tienda1’, ‘Tienda2’ y
‘Tienda3’. ¿Es posible seguir usando DAX y tener 1 tabla insertada de 3? Como ejemplo actual, en algunos puntos me da una diferencia de orden entre ‘Store1’
y ‘Tienda2’.
Marcel Beug
¿Parece que está buscando una solución en Power Query?
En general, si desea comparar valores de diferentes filas, puede agregar 2 columnas de índice, una que comienza con 0 y la otra con 1.
Luego fusiona la consulta consigo misma, usando las columnas de índice como columnas de fusión.
Si desea que los datos de la fila anterior estén en la fila actual, debe combinarlos en el índice 0 y el índice 1 (en esta secuencia);
si desea que los datos de la siguiente fila estén en la fila actual, debe combinarlos en el índice 1 y el índice 0.
Después de fusionar, ajuste el código generado y nombre su columna «Anterior» o «Siguiente».
Exoand, usando el nombre de la columna original como prefijo,
Después de expandir la ordenación en uno de los índices originales columnas
A continuación el código para su caso.
let Source = Table1, #"Added Index" = Table.AddIndexColumn(Source, "Index.0", 0, 1), #"Merged Queries" = Table.NestedJoin(#"Added Index",{"Index"},#"Added Index",{"Index.0"},"Next",JoinKind.LeftOuter), #"Expanded Next" = Table.ExpandTableColumn(#"Merged Queries", "Next", {"Orders"}, {"Next.Orders"}), #"Sorted Rows" = Table.Sort(#"Expanded Next",{{"Index", Order.Ascending}}), #"Added Custom" = Table.AddColumn(#"Sorted Rows", "Difference", each [Orders] - [Next.Orders]), #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Index.0", "Next.Orders"}) in #"Removed Columns"
TorbenKirkWolf
En respuesta a Marcel Beug
Bueno, eso es un buen truco! Este hilo apareció en una búsqueda de Google, y es exactamente lo que necesitaba. Así que solo quiero que sepas que tu respuesta sigue viva y ayuda a las personas. 🙂
Nunca pensé en fusionar una tabla consigo misma en diferentes índices, pero ahora que lo mencionas, es una solución tan obvia como elegante. Nunca se me hubiera ocurrido esto, ¡así que muchas gracias de mi parte!