Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Administrator
4 years ago

Ayuda con DateDiff

Probablemente una sencilla para la mayoría, pero ¿cómo escribo una medida para caluclar el movimiento en días de cada proyecto de construcción de un mes a otro? Entonces, por ejemplo, ¿el movimiento en la fecha de construcción para el proyecto A mostraría 30 días?

Sería más fácil para mí tener medidas separadas para los cambios en la fecha de inicio de la construcción y la fecha de puesta en marcha.

¿También hay alguna manera de hacer esta dinámica refiriéndose al período máximo de informe y uno menos que este en lugar de usar el 21 de septiembre y el 21 de agosto en la medida?

Gracias

ProyectoSalidaFecha de inicio de la construcciónFecha de puesta en marchaPeríodo
A5001/01/202301/06/2023Ago-21
B2501/04/202307/04/2023Ago-21
C5001/05/202301/07/2023Ago-21
A5001/02/202301/06/2023sep-21
B2501/04/202307/04/2023sep-21
C5001/05/202301/06/2023sep-21

10 Replies

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Administrator

      @lbendlin En agosto, se planeó que el proyecto A comenzara la construcción el 01/01/2023. En septiembre esta fecha se había deslizado al 01/05/2023. Es decir, se había movido hacia atrás 120 días.

      • Syndicate_Admin's avatar
        Syndicate_Admin
        Administrator

        Sus datos de muestra dicen que el proyecto A se deslizó a 2023-02-01.

  • No @GJUDGE,

    Por favor, pruebe:

    Measure = 
    var _pre=MAXX(FILTER(ALL('Table'),[Project]=MAX('Table'[Project]) && [Construction Start Date]<MAX('Table'[Construction Start Date])),[Construction Start Date])
    return DATEDIFF(_pre,MAX('Table'[Construction Start Date]),DAY)

    Eyelyn9_0-1635490601984.png


    Saludos
    Eyelyn Qin
    Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Administrator

      @Eyelyn9 ¡Esto casi me lleva allí! La única otra complejidad es que mis datos reales contienen muchos datos de meses. Usando su medida, parece estar comparando las últimas y las primeras fechas en lugar de los últimos dos meses. ¿Hay alguna forma de modificar su medida?

  • No @GJUDGE,

    He agregado una fila para simplemente reproducir datos como dijiste que tus datos reales contienen muchos mesesde datos.

    Mi primera medida devuelve el diff de fecha para cada cambio.

    Eyelyn9_0-1635494252220.png

    A continuación se devolverá la diferencia entre las dos últimas fechas:

    Measure 2 = 
    var _last=CALCULATE(MAX('Table'[Construction Start Date]),ALLEXCEPT('Table','Table'[Project]))
    var _pre= MAXX(FILTER(ALL('Table'),'Table'[Project]=MAX('Table'[Project]) && [Construction Start Date]<_last),[Construction Start Date])
    return DATEDIFF(_pre,_last,DAY)

    Eyelyn9_1-1635494565300.png

    Si todavía no es lo que esperas, por favor muéstrame lo que quieres.

    Saludos
    Eyelyn Qin
    Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Administrator

      @Eyelyn9 Realmente aprecio su ayuda. Cuando pruebo su última medida en mis datos reales, sigo obteniendo el resultado incorrecto. A continuación se muestra el proyecto A. La fecha de COD es la misma que la fecha de inicio de la construcción. Cuando uso cualquiera de sus dos medidas, obtengo una diferencia de 153 días cuando esto debería ser cero (es decir, la fecha de DQO no ha cambiado en los dos meses más recientes). ¡Espero que tenga sentido!

      GJUDGE_0-1635496568300.png

  • No @GJUDGE,

    la fecha de DQO no ha cambiado en los dos meses más recientes

    La última fecha es 2025-Feb, por lo que si no existe COD= 2025-Ene y 2024-Dic, entonces dateiff debería ser 0 ?

    Measure 2 = 
    var _last=CALCULATE(MAX('Table'[Construction Start Date]),ALLEXCEPT('Table','Table'[Project]))
    var _pre= MAXX(FILTER(ALL('Table'),'Table'[Project]=MAX('Table'[Project]) && [Construction Start Date]<_last),[Construction Start Date])
    return IF(DATEDIFF(_pre,_last,MONTH)<=2,DATEDIFF( _pre,_last,DAY),0)

    Eyelyn9_0-1635497772412.png

    Saludos
    Eyelyn Qin
    Si este post Ayuda, a continuación, por favor considere Acéptalo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Administrator

      @Eyelyn9 Sí, la fecha de DQO no ha cambiado, pero incluso si este es el caso, necesito que la medida solo compare las fechas de DQO de los últimos dos meses. Incluso si esto es cero. Por ejemplo, en el proyecto B en los datos de prueba que proporcioné, todavía debería ver un retorno de cero. Básicamente, lo que quiero hacer es COD Date (Filltered reporting period for the latest month) minus COD Date (filtrado para el período de informe del mes pasado menos 1 mes).