Forum Discussion
Indefinido
Estoy intentando crear un diagrama de Gantt, sin embargo, necesito proporcionar fechas de finalización a mi modelo. La fecha de finalización de una tarea es la fecha de inicio de la otra tarea, por lo que estoy buscando una función DAX que me permita construir esta lógica:
| Proyecto | Puerta | Fecha_inicial | Finish_Date |
A123 | Principio | 1/1/2020 | 3/1/2020 |
A123 | Parcial | 3/1/2020 | 6/1/2020 |
| A123 | Principalmente | 6/1/2020 | 10/1/2020 |
| A123 | Final | 10/1/2020 | 10/1/2020 |
No estoy seguro de qué DAX formual puedo escribir para devolver la fecha Finsh.
Toda la ayuda es muy apreciada.
Hola @caruso1058 - ver esta medida:
Finish Date = VAR varCurrentDate = MAX('Table'[Start_Date]) VAR varNextDate = CALCULATE( MIN('Table'[Start_Date]), FILTER( All('Table'), 'Table'[Start_Date] > varCurrentDate ) ) RETURN IF( ISBLANK(varNextDate), varCurrentDate, varNextDate )Esto devolverá la fecha mínima por encima de la fecha actual, a menos que no haya una fecha siguiente, en cuyo caso se repetirá la fecha actual.
Una nota @caruso1058 - no especificó, pero supongo que desea que esto sea por proyecto. Tenga en cuenta la sustitución de ALL() por ALLEXCEPT()
Así que se puede ver que la fecha del 1 de abril de 2020 no impactó el proyecto A123.
Hola
Pruebe esta fórmula de columna calculada
•calculate(min(data[project schedule]),filter(data,data[project]-earlier(data[project])&&&data[project schedule]>earlier(data[project schedule])))
Espero que esto ayude.
9 Replies
- edhans
Community Champion
Hola @caruso1058 - ver esta medida:
Finish Date = VAR varCurrentDate = MAX('Table'[Start_Date]) VAR varNextDate = CALCULATE( MIN('Table'[Start_Date]), FILTER( All('Table'), 'Table'[Start_Date] > varCurrentDate ) ) RETURN IF( ISBLANK(varNextDate), varCurrentDate, varNextDate )Esto devolverá la fecha mínima por encima de la fecha actual, a menos que no haya una fecha siguiente, en cuyo caso se repetirá la fecha actual.
Una nota @caruso1058 - no especificó, pero supongo que desea que esto sea por proyecto. Tenga en cuenta la sustitución de ALL() por ALLEXCEPT()
Así que se puede ver que la fecha del 1 de abril de 2020 no impactó el proyecto A123.
- caruso1058
Microsoft Employee
Hola @edhans ,
¡Tienes razón! Ahora veo que esto funciona como Medida. Estaba tratando de escribir esto como una columna calculada, pero creo que la medida va a funcionar muy bien!
Sin embargo, ahora tengo curiosidad... ¿Sabes la razón por la que esto funciona como un meausre pero no como una columna calculada?
¿Qué lógica tendría que actualizarse para que esto funcione como una columna calculada?
- edhans
Community Champion
@caruso1058 puede funcionar como una columna calculada, pero no como está escrito. En general, intente evitar columnas calculadas. Hay momentos para usarlos, pero es raro. Normalmente se prefiere obtener datos del sistema de origen, crear columnas en Power Query o Medidas DAX a las columnas calculadas. Vea estas referencias:
Columnas calculadas frente a medidas en DAX
Columnas y medidas calculadas en DAX
Diferencias de almacenamiento entre columnas calculadas y tablas calculadas
Vídeo de SQLBI sobre medidas frente a columnas calculadas
Creación de una tabla de fechas dinámicas en Power Query, no en columnas calculadasPara el escenario que está haciendo, definitivamente desea una medida.
- caruso1058
Microsoft Employee
Hola @edhans ,
¡Muchas gracias por su ayuda con esto! Me gusta su táctica, pero parece que me está metiendo en un problema con esta lógica, ya que sólo devuelve la fecha MAX dentro de mi conjunto de datos... parece ser un error tipográfico, ya que no estamos programando tan lejos en el futuro todavía, pero divacío.
De todos modos, el problema que estoy teniendo es doble, uno es extraer la última fecha de tarea, segundo es agrupar esta lógica por cada proyecto.
- Ashish_Mathur
Super User
Hola
Pruebe esta fórmula de columna calculada
•calculate(min(data[project schedule]),filter(data,data[project]-earlier(data[project])&&&data[project schedule]>earlier(data[project schedule])))
Espero que esto ayude.
- caruso1058
Microsoft Employee
@Ashish_Mathur,
¡Eso funciona perfectamente como una columna calculada! ¡Muchas gracias!