Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
Hola, tengo un informe de una base de datos SQL del que necesito extraer fechas sobre la progresión entre fases para cada proyecto. Cada proyecto tiene varias fases y varias fechas de acción dentro de la fase. En última instancia, necesito encontrar la progresión de cada proyecto a través de las fases en # de días (ver ejemplos de excel).
ejemplo de gráfico final:
Para hacer esto, necesito la primera fecha en una determinada fase (PHASE_START), luego el recuento de días entre la fecha de inicio de esa fase y la fecha de inicio de la siguiente fase (o la fecha de inicio de la última fecha de acción si es la última fase de un proyecto). Luego, estos recuentos deben sumarse para mostrar la progresión del proyecto a través de cada fase desde 0 hasta el número de días desde el inicio hasta la última fecha de acción de todas las fases de ese proyecto.
La PHASE_START es bastante fácil de obtener, pero me estoy quedando atascado en contar los días entre las fechas de inicio de las diferentes fases, ya que hay múltiples entradas para cada combinación de proyecto, fase y fecha de acción. Cualquier ayuda sería muy apreciada, gracias!!
Solved! Go to Solution.
En ella, @ccj
De acuerdo con su descripción, creo una muestra para satisfacer sus necesidades.
Primero debe crear una tabla distinta para mostrar la fase y la columna de inicio, también creo una tabla de fechas para ordenar.
Luego debe crear una medida para calcular el intervalo de fecha.
Nota: Poner los campos de diferentes tablas en el gráfico de líneas reportará errores, pero se mostrarán normalmente después de poner la medida en valores.
Así:
Table 2 =
UNION (
SUMMARIZE (
Table1,
Table1[PHASE],
"date",
MINX (
FILTER ( ALL ( Table1 ), [PHASE] = EARLIER ( Table1[PHASE] ) ),
[ACTUIN_DATE]
)
),
ROW ( "PHARE", "start", "date", DATE ( 2021, 1, 1 ) )
)
Measure =
VAR filtertable =
FILTER (
ALL ( Table1 ),
[PROJECT] = SELECTEDVALUE ( Table1[PROJECT] )
&& [PHASE] = SELECTEDVALUE ( 'Table 2'[PHASE] )
)
VAR mindate =
MINX ( filtertable, [ACTUIN_DATE] )
VAR maxdate1 =
MINX (
FILTER (
ALL ( Table1 ),
[PROJECT] = SELECTEDVALUE ( Table1[PROJECT] )
&& [PHASE_START] > mindate
),
[PHASE_START]
)
VAR maxdate2 =
IF ( ISBLANK ( maxdate1 ), MAXX ( filtertable, [ACTUIN_DATE] ), maxdate1 )
RETURN
DATEDIFF ( mindate, maxdate2, DAY ) + 0
¿Respondí a su pregunta? Por favor, marque mi respuesta como solución. Muchas gracias.
Si no, por favor siéntase libre de preguntarme.
Saludos
Equipo de apoyo a la comunidad _ Janey
En ella, @ccj
De acuerdo con su descripción, creo una muestra para satisfacer sus necesidades.
Primero debe crear una tabla distinta para mostrar la fase y la columna de inicio, también creo una tabla de fechas para ordenar.
Luego debe crear una medida para calcular el intervalo de fecha.
Nota: Poner los campos de diferentes tablas en el gráfico de líneas reportará errores, pero se mostrarán normalmente después de poner la medida en valores.
Así:
Table 2 =
UNION (
SUMMARIZE (
Table1,
Table1[PHASE],
"date",
MINX (
FILTER ( ALL ( Table1 ), [PHASE] = EARLIER ( Table1[PHASE] ) ),
[ACTUIN_DATE]
)
),
ROW ( "PHARE", "start", "date", DATE ( 2021, 1, 1 ) )
)
Measure =
VAR filtertable =
FILTER (
ALL ( Table1 ),
[PROJECT] = SELECTEDVALUE ( Table1[PROJECT] )
&& [PHASE] = SELECTEDVALUE ( 'Table 2'[PHASE] )
)
VAR mindate =
MINX ( filtertable, [ACTUIN_DATE] )
VAR maxdate1 =
MINX (
FILTER (
ALL ( Table1 ),
[PROJECT] = SELECTEDVALUE ( Table1[PROJECT] )
&& [PHASE_START] > mindate
),
[PHASE_START]
)
VAR maxdate2 =
IF ( ISBLANK ( maxdate1 ), MAXX ( filtertable, [ACTUIN_DATE] ), maxdate1 )
RETURN
DATEDIFF ( mindate, maxdate2, DAY ) + 0
¿Respondí a su pregunta? Por favor, marque mi respuesta como solución. Muchas gracias.
Si no, por favor siéntase libre de preguntarme.
Saludos
Equipo de apoyo a la comunidad _ Janey
hola @v-janeyg-msft, esto es exaclty lo que estaba buscando!!! gracias por proporcionar la muestra, realmente ayudó.
Seguí sus instrucciones y modifiqué la fórmula de muestra a mis datos, y me estoy topado con un gran problema: los números en mi gráfico cuentan hacia atrás.
la progresión de la línea es correcta, el eje x está en el orden correcto, la diferencia entre cada punto es correcta, pero cuenta de 64 a 1 cuando debería ser de 1 a 64. Tengo el eje y invertido para mostrar la línea que tiene la progresión hacia arriba, pero idealmente el eje y debería comenzar en 0 y aumentar, pero con esta línea. ¿Hay alguna manera de modificar la fórmula de la medida para contar correctamente?
Cuando pongo la medida en la tabla, parece estar contando hacia atrás a partir de la fecha más reciente, luego una y otra vez hasta la primera fecha, dando a la fecha de inicio el valor más alto, lo cual es incorrecto.
En ella, @ccj
Compruebe la configuración en formato de eje Y.: eje invertido
Si el resultado es incorrecto, proporcione su código y datos relacionados,de lo contrario es difícil para mí juzgar.
¿Respondí a su pregunta? Por favor, marque mi respuesta como solución. Muchas gracias.
Si no, por favor siéntase libre de preguntarme.
Saludos
Equipo de apoyo a la comunidad _ Janey
Hola @v-janeyg-msft,tengo el eje y invertido a propósito. la línea es correcta cuando se invierte, pero los valores cuentan hacia atrás, lo cual es incorrecto. Cuando el eje y no está invertido, se ve así:
esta línea es incorrecta y todavía cuenta hacia atrás. Quiero que se vea como el gráfico a continuación, pero los puntos de datos deben contar de 1 a 64:
gracias por su ayuda!
Quiero ayudarte.. Pero solo proporcionas dos capturas de pantalla, es inútil ... Ni siquiera sé qué datos pones en el eje X.
Si es solo el orden incorrecto, puede ordenarlo. También utilicé la columna de fecha para ordenar la tabla recién creada en el ejemplo. (si sabes ordenar por columna y revisa cuidadosamente mi muestra)
Si el resultado es incorrecto, proporcione su código y datosrelacionados, de lo contrario es difícil para mí juzgar.
Saludos
Equipo de apoyo a la comunidad _ Janey
Hola
Cree un objeto visual de tabla simple y arrastre Proyecto y Fase a las etiquetas de fila. Escribe estas medidas
Fecha de la primera acción = min(data[action_date])
Fecha de la última acción = max(data[action_date])
Duración = 1*([Fecha de la última acción]-[Fecha de la primera acción])
Formato de la duración como un número entero.
Cambie el vidual a un visual de línea.
Espero que esto ayude.
@Greg_Deckler gracias por la pronta respuesta y por enviarme al artículo de MTBF! Parece muy similar a lo que estoy haciendo. Sin embargo, al seguir el proceso MTBF en mis datos, tengo un problema con la fecha de finalización (RepairCompleted en el artículo) ya que mis datos tienen una fecha de inicio pero no una fecha de finalización. Eso necesita hacer referencia a un inicio de fase diferente para obtener esencialmente ese valor (ya que la fecha de finalización no es la última fecha enumerada para esa fase).
Pude usar ese formato de fórmula que pegaste en la respuesta anterior, pero devuelve "30/12/1899" en cada fila. Si cambio la referencia [Valor], entonces obtengo un problema de que el texto no se puede comparar con los valores numéricos.
gracias por su ayuda
@ccj Parece que podrías usar un enfoque MTBF. Vea mi artículo sobre el tiempo medio entre fallas (MTBF) que utiliza EARLIER: http://community.powerbi.com/t5/Community-Blog/Mean-Time-Between-Failure-MTBF-and-Power-BI/ba-p/3395....
El patrón básico es:
Columna =
VAR __Current = [Valor]
VAR __PreviousDate = MAXX(FILTER('Table','Table'[Date] < EARLIER('Table'[Date])),[Date])
VAR __Previous = MAXX(FILTER('Tabla',[Fecha]=__PreviousDate),[Valor])
DEVOLUCIÓN
__Current - __Previous
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
1 | |
1 | |
1 | |
1 | |
1 |
User | Count |
---|---|
2 | |
2 | |
1 | |
1 | |
1 |