Calcule los días entre la fecha de inicio y la fecha de finalización (con un giro)

Un usuario Pregunto ✅

JimJim

Hola,

Tengo una medida que usa la función de división, toma dos medidas como parámetros de entrada (CompleteCount y NumberOfDays). Las imágenes que usan esta medida son bastante lentas y sospecho que la culpa es de la medida NumberOfDays.

Lo que hace la medida NumberOfDays es calcular el número de días entre una fecha de inicio y una fecha de finalización. Si la fecha de finalización es > hoy, utilice hoy; de lo contrario, utilice la fecha de finalización. aquí está la medida. ¿Hay una manera más eficiente de escribir esto?

Day Count = 
VAR StartDate =
    MIN ( 'Completed Date'[Date] )
VAR EndDate =
    IF (
        MAX ( 'Completed Date'[Date] ) > TODAY (),
        TODAY (),
        MAX ( 'Completed Date'[Date] )
    )
RETURN
    INT ( EndDate - StartDate )

Alba

Hola @JimJim

No creo que pueda ser mucho más eficiente que lo que ya tienes. Realmente dudo que el problema esté ahí. Tal vez evitando la doble invocación de MAX (‘Fecha completada'[Date] ) me gusta:

Day Count = 
VAR StartDate =
    MIN ( 'Completed Date'[Date] )
VAR EndDate = MAX(TODAY(), MAX ( 'Completed Date'[Date] ) )
RETURN INT ( EndDate - StartDate )

pero el cambio, si lo hay, será mínimo ya que el motor es bastante eficiente en el cálculo de operaciones como MAX (‘Fecha de finalización'[Date] ).

Has probado Estudio DAX? Es una herramienta muy útil para identificar cuellos de botella en el rendimiento.

Salud

Alba

Hola @JimJim

No creo que pueda ser mucho más eficiente que lo que ya tienes. Realmente dudo que el problema esté ahí. Tal vez evitando la doble invocación de MAX (‘Fecha completada'[Date] ) me gusta:

Day Count = 
VAR StartDate =
    MIN ( 'Completed Date'[Date] )
VAR EndDate = MAX(TODAY(), MAX ( 'Completed Date'[Date] ) )
RETURN INT ( EndDate - StartDate )

pero el cambio, si lo hay, será mínimo ya que el motor es bastante eficiente en el cálculo de operaciones como MAX (‘Fecha de finalización'[Date] ).

Has probado Estudio DAX? Es una herramienta muy útil para identificar cuellos de botella en el rendimiento.

Salud

JimJim

En respuesta a Alba

Hola @AlB,

Gracias por su respuesta, no sabía que las funciones agregadas como MAX podrían tomar múltiples expresiones, por lo que es muy bueno saberlo. Sin embargo, necesito tomar la fecha más temprana entre CompletedDate y HOY, por lo que la variable debería ser:

VAR EndDate = MIN(TODAY(), MAX ( 'Completed Date'[Date] ) )

Curiosamente, las imágenes parecen estar funcionando bien en este momento (he vuelto a abrir el informe para eliminar cualquier almacenamiento en caché y aún funciona rápido), por lo que no creo que DAX Studio sea de mucha ayuda en este momento. Tal vez solo una de estas fallas, lo vigilaré.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *