_Andrés_
Hola, soy nuevo en PowerBI y tengo problemas para calcular la diferencia entre dos filas en una matriz.
Lo que quiero es una matriz que muestre la primera implementación exitosa y el intervalo entre la primera implementación exitosa de cada versión:
Versión | Fecha de finalización más temprana | Intervalo |
2.12 | 19 junio 2019 | |
2.13 | 12 julio 2019 | 23 |
3.0 | 10 agosto 2019 | 29 |
3.1 | 05 septiembre 2019 | 26 |
Puedo obtener fácilmente las dos primeras columnas, pero no puedo encontrar una medida para calcular la diferencia entre las fechas en las filas vecinas.
¿Es esto posible en PowerBI?
Gracias.
Andrés.
Una maqueta de los datos sin procesar es algo como esto (obviamente, los datos reales son más complicados, pero esto los reduce a esta pregunta exacta):
ID de tarea único | estado de la tarea | fecha completada | Versión |
15428 | Éxito | 19/06/2019 | 2.12 |
15585 | Éxito | 22/06/2019 | 2.12 |
15726 | Éxito | 26/06/2019 | 2.12 |
15771 | Éxito | 27/06/2019 | 2.12 |
15773 | Éxito | 27/06/2019 | 2.12 |
15784 | Éxito | 27/06/2019 | 2.12 |
15841 | Éxito | 28/06/2019 | 2.12 |
15843 | Éxito | 28/06/2019 | 2.12 |
15886 | Éxito | 29/06/2019 | 2.12 |
15895 | Éxito | 29/06/2019 | 2.12 |
16131 | Éxito | 07/04/2019 | 2.12 |
16137 | Fallido | 07/04/2019 | 2.12 |
16139 | Fallido | 07/04/2019 | 2.12 |
16142 | Éxito | 07/04/2019 | 2.12 |
16145 | Éxito | 07/04/2019 | 2.12 |
16247 | Éxito | 07/06/2019 | 2.12 |
16280 | Fallido | 07/06/2019 | 2.12 |
16281 | Fallido | 07/06/2019 | 2.12 |
16282 | Fallido | 07/06/2019 | 2.12 |
16284 | Éxito | 07/06/2019 | 2.12 |
16559 | Éxito | 07/12/2019 | 2.13 |
16611 | Éxito | 13/07/2019 | 2.13 |
16764 | Éxito | 17/07/2019 | 2.13 |
16846 | Éxito | 19/07/2019 | 2.13 |
16847 | Éxito | 19/07/2019 | 2.13 |
16854 | Éxito | 19/07/2019 | 2.13 |
16855 | Éxito | 19/07/2019 | 2.13 |
16890 | Éxito | 20/07/2019 | 2.13 |
16892 | Éxito | 20/07/2019 | 2.13 |
16900 | Éxito | 20/07/2019 | 2.13 |
16901 | Éxito | 20/07/2019 | 2.13 |
16942 | Éxito | 21/07/2019 | 2.13 |
16943 | Éxito | 21/07/2019 | 2.13 |
16945 | Éxito | 21/07/2019 | 2.13 |
16946 | Éxito | 21/07/2019 | 2.13 |
17800 | Fallido | 08/10/2019 | 3.0 |
17801 | Fallido | 08/10/2019 | 3.0 |
17802 | Fallido | 08/10/2019 | 3.0 |
17803 | Éxito | 08/10/2019 | 3.0 |
18056 | Éxito | 17/08/2019 | 3.0 |
18066 | Éxito | 17/08/2019 | 3.0 |
18107 | Éxito | 18/08/2019 | 3.0 |
18109 | Éxito | 18/08/2019 | 3.0 |
18205 | Éxito | 21/08/2019 | 3.0 |
18210 | Éxito | 21/08/2019 | 3.0 |
18211 | Éxito | 21/08/2019 | 3.0 |
18217 | Éxito | 21/08/2019 | 3.0 |
18252 | Éxito | 22/08/2019 | 3.0 |
18255 | Éxito | 22/08/2019 | 3.0 |
18256 | Éxito | 22/08/2019 | 3.0 |
18263 | Éxito | 22/08/2019 | 3.0 |
18264 | Éxito | 22/08/2019 | 3.0 |
18295 | Éxito | 23/08/2019 | 3.0 |
18298 | Éxito | 23/08/2019 | 3.0 |
18303 | Éxito | 23/08/2019 | 3.0 |
18408 | Fallido | 25/08/2019 | 3.0 |
18409 | Éxito | 25/08/2019 | 3.0 |
18874 | Éxito | 09/05/2019 | 3.1 |
18943 | Éxito | 07/09/2019 | 3.1 |
18944 | Éxito | 07/09/2019 | 3.1 |
18952 | Éxito | 07/09/2019 | 3.1 |
19109 | Éxito | 09/12/2019 | 3.1 |
19110 | Éxito | 09/12/2019 | 3.1 |
19111 | Éxito | 09/12/2019 | 3.1 |
19113 | Éxito | 09/12/2019 | 3.1 |
19117 | Éxito | 09/12/2019 | 3.1 |
19118 | Fallido | 09/12/2019 | 3.1 |
19119 | Éxito | 09/12/2019 | 3.1 |
19153 | Éxito | 13/09/2019 | 3.1 |
19184 | Éxito | 14/09/2019 | 3.1 |
19185 | Éxito | 14/09/2019 | 3.1 |
19187 | Éxito | 14/09/2019 | 3.1 |
19189 | Éxito | 14/09/2019 | 3.1 |
19193 | Éxito | 14/09/2019 | 3.1 |
19194 | Éxito | 14/09/2019 | 3.1 |
19225 | Fallido | 15/09/2019 | 3.1 |
19226 | Fallido | 15/09/2019 | 3.1 |
19228 | Éxito | 15/09/2019 | 3.1 |
Como si salieras del despliegue de Octopus.
v-yulgu-msft
Hola andrew_,
Supongamos que el tipo de datos de [Version] es numérico.
Tu necesitas un [Rank] columna en la tabla de origen (supongamos que es Table1).
Rank = RANKX(Table1,Table1[Version],,ASC,Dense)
Luego, cree algunas medidas como se muestra a continuación:
earliest date this version = MIN(Table1[Completed Date]) earliest date last version = CALCULATE ( MIN ( Table1[Completed Date] ), FILTER ( ALL ( Table1 ), Table1[Rank] = MAX ( Table1[Rank] ) - 1 && Table1[TaskState] = "Success" ) ) Interval = SWITCH ( TRUE (), [earliest date last version] < [earliest date this version], DATEDIFF ( [earliest date last version], [earliest date this version], DAY ), [earliest date last version] > [earliest date this version], -1 * DATEDIFF ( [earliest date this version], [earliest date last version], DAY ), 0 )
Agregue las columnas correspondientes a Matrix.
Atentamente,
Yuliana Gu
_Andrés_
Gracias @fhill: parece un enfoque interesante, pero no pude hacerlo funcionar. Sin embargo, tomaré nota de ello.
@ v-yulgu-msft: eso hace exactamente lo que quiero, muchas gracias por su ayuda. Solo necesitaba ajustar fecha más antigua última versión ligeramente para trabajar con mis datos reales.
Creo que una buena idea para investigar a continuación sería hacer que la medida reaccione a cualquier filtro que se aplique en lugar de codificarla en la medida.
Gracias.
v-yulgu-msft
Hola andrew_,
Supongamos que el tipo de datos de [Version] es numérico.
Tu necesitas un [Rank] columna en la tabla de origen (supongamos que es Table1).
Rank = RANKX(Table1,Table1[Version],,ASC,Dense)
Luego, cree algunas medidas como se muestra a continuación:
earliest date this version = MIN(Table1[Completed Date]) earliest date last version = CALCULATE ( MIN ( Table1[Completed Date] ), FILTER ( ALL ( Table1 ), Table1[Rank] = MAX ( Table1[Rank] ) - 1 && Table1[TaskState] = "Success" ) ) Interval = SWITCH ( TRUE (), [earliest date last version] < [earliest date this version], DATEDIFF ( [earliest date last version], [earliest date this version], DAY ), [earliest date last version] > [earliest date this version], -1 * DATEDIFF ( [earliest date this version], [earliest date last version], DAY ), 0 )
Agregue las columnas correspondientes a Matrix.
Atentamente,
Yuliana Gu
fhill
Mira si esto te da lo que necesitas… tuviste tu en blanco en la primera línea, pero mi lógica mueve el ‘desconocido’ a la última línea. Para hacer cálculos, tuve que elegir alguna ‘fecha’ para finalizar la lógica, así que puse el código allí para usar siempre MAX (Fecha) al final del archivo. Esto es necesario para ‘saltar’ la comparación de la versión final porque no hay versiones superiores para compararla también… También quiero agradecer este artículo IMPRESIONANTE que me ayudó a entender ANTERIOR/LISTA ANTERIOR para escribir esta ‘primera vez usar ‘código… http://tinylizard.com/dax-earlier-function/
Si alguien tiene una manera más fácil, ¡no dude en participar!
Para descanso
Grupos calculados:
Fin de la versión = IF (Tabla 1[Version] = MAX(Tabla1[Version]),MAX(Tabla1[Date]), // Averigüe qué hacer cuando alcancemos el número de versión MAX, ya que no hay nada más alto que usar para calcular una fecha más alta… He puesto la fecha MAX, pero tendrá que decidir cómo quiere manejar ¿¿¿esta???
CALCULAR(MIN (Tabla1[Date]), // Para números de versión no máximos, obtenga la fecha mínima antes de…
FILTRO(TODO(Tabla1), Tabla1[Date] > ANTES(Tabla1[Date])), // Una Fila MAYOR que la Fila actual para Fecha
FILTRO(Tabla1, Tabla1[Version] > ANTES(Tabla1[Version])), // Una fila mayor que la fila actual para la versión
FILTRO(Tabla1, Tabla1[TaskState] = «Éxito») // Eso es un ÉXITO
) -1 ) // Retrocede 1 día y cierra la declaración IF
Medidas:
Min_Date = MIN (Tabla1[Date])
Intervalo = DATEDIFF([Min_Date],PROMEDIO(Tabla1[End of Version]),DÍA)
greg_deckler
Mire las funciones EARLIER y EARLIEST.