Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and a 50 percent discount on exams.
Get startedEarn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.
Estoy tratando de calcular la diferencia en días entre dos valores en la misma columna que tienen el mismo id.
Tenga en cuenta los siguientes datos:
-EventId- | -Fecha de inicio- | -Resultado deseado- |
Evento1 | 1/15/2021 | |
Evento1 | 3/15/2021 | 59 |
Evento1 | 3/17/2021 | 2 |
Evento2 | 3/1/2021 | |
Evento2 | 2/1/2021 | -28 |
Siento que tengo la fórmula correcta en esta columna calculada, pero por alguna razón todos los resultados están en blanco.
c_DateDiff =
VAR temp =
TOPN (
1,
FILTER (
datasource,
datasource[EventId] = EARLIER ( datasource[EventId] )
&& datasource[Start Date] < EARLIER ( datasource[Start Date] )
),
[End Date], DESC
)
RETURN
DATEDIFF ( MINX ( temp, [Start Date] ), datasource[Start Date], DAY )
Editar: ¿Qué sucede si quiero calcular la fecha de inicio en relación con la fecha de instantánea anterior/anterior?
-EventId- | -StartDate- | -Fecha de instantánea- | -Resultado deseado- |
Evento1 | 1/15/2021 | 1/1/2021 | |
Evento1 | 3/15/2021 | 3/1/2021 | -2 |
Evento1 | 3/17/2021 | 2/1/2021 | 61 |
Evento2 | 3/1/2021 | 1/1/2021 | |
Evento2 | 2/1/2021 | 3/1/2021 | -28 |
Solved! Go to Solution.
Hola, @WorkHard
Puede crear una columna para calcular el resultado dasired.
Así:
column =
VAR a =
MAXX (
FILTER (
ALL ( 'Table' ),
[-Snapshot Date-] < EARLIER( 'Table'[-Snapshot Date-] )
&& [-EventId-] = EARLIER( 'Table'[-EventId-] )
),
[-Snapshot Date-]
)
VAR b =
MAXX (
FILTER (
ALL ( 'Table' ),
[-Snapshot Date-] = a
&& [-EventId-] = EARLIER( 'Table'[-EventId-] )
),
[-StartDate-]
)
RETURN
DATEDIFF ( b, 'Table'[-StartDate-] , DAY )
Si no resuelve su problema, no dude en preguntarme.
Saludos
Janey Guo
Si este post ayuda, entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Hola, @WorkHard
Puede crear una columna para calcular el resultado dasired.
Así:
column =
VAR a =
MAXX (
FILTER (
ALL ( 'Table' ),
[-Snapshot Date-] < EARLIER( 'Table'[-Snapshot Date-] )
&& [-EventId-] = EARLIER( 'Table'[-EventId-] )
),
[-Snapshot Date-]
)
VAR b =
MAXX (
FILTER (
ALL ( 'Table' ),
[-Snapshot Date-] = a
&& [-EventId-] = EARLIER( 'Table'[-EventId-] )
),
[-StartDate-]
)
RETURN
DATEDIFF ( b, 'Table'[-StartDate-] , DAY )
Si no resuelve su problema, no dude en preguntarme.
Saludos
Janey Guo
Si este post ayuda, entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Hola, @WorkHard
¿Se ha resuelto su problema? Puedo ver en tu código dax que tienes dos tablas, pero no aparecen en tu descripción, como "fecha de finalización" y "fecha de instantánea", Necesitas proporcionar más información detallada y el resultado final que quieras, entonces podemos ayudarte pronto.
Saludos
Janey Guo
Gracias. Esperaba una fórmula DAX pero intentaré hacer esto en Power Query, como tú.
¿Qué sucede si quiero calcular la fecha de inicio en relación con la fecha de instantánea anterior?
Marque OP para un ejemplo.
De nada. ¿Cómo llegó a los números de la columna Resultado deseado de la segunda tabla de su publicación original? No estoy claro.
Las 3 filas de Event1 provienen de diferentes puntos en el tiempo. Tomo una "instantánea" de los datos una vez al mes y luego cada mes agrego otra fila para el mismo evento. Así que con el tiempo, la fecha de inicio del evento puede cambiar. Esto me da la capacidad de ver cómo cambia la fecha de inicio del mismo evento cada mes.
La fecha de inicio del evento1 en la instantánea de enero de 2021 fue el 15 de enero.
La fecha de inicio del evento 1 en la instantánea de febrero de 2021 fue el 17 de marzo (61 días).
La fecha de inicio del evento 1 en la instantánea de marzo de 2021 fue el 15 de marzo (-2 días)
La fecha de inicio del evento 2 en la instantánea de enero de 2021 fue el 1 de marzo.
La fecha de inicio del evento 2 en la instantánea de marzo de 2021 fue el 1 de febrero. (+28 días)
Hola
Esta fórmula de columna calculada funciona
if(ISBLANK(LOOKUPVALUE(Data[StartDate],Data[EventId],Data[EventId],Data[Snapshot Date],CALCULATE(MAX(Data[Snapshot Date]),FILTER(Data,Data[EventId]=EARLIER(Data[EventId])&&Data[Snapshot Date]<EARLIER(Data[Snapshot Date]))))),BLANK(),1*(Data[StartDate]-LOOKUPVALUE(Data[StartDate],Data[EventId],Data[EventId],Data[Snapshot Date],CALCULATE(MAX(Data[Snapshot Date]),FILTER(Data,Data[EventId]=EARLIER(Data[EventId])&&Data[Snapshot Date]<EARLIER(Data[Snapshot Date]))))))
Espero que esto ayude.