Diferencia de fecha excluyendo fines de semana

Un usuario Pregunto ✅

ssvr

Hola,

Tengo una fecha de inicio y una fecha de finalización y solo necesito contar los días hábiles intermedios. Es decir, la diferencia de fechas (DATEIFF) entre el final y el inicio sin tener en cuenta los fines de semana

ReleaseDt ClosedDt DaysDiff(Excludeweekends)

¿Cómo puedo conseguir esto?

Gracias,

Anónimo

Hola,

Esta puede ser la solución:

https://www.youtube.com/watch?v=bs3yzmf9elAhttps://www.youtube.com/watch?v=bs3yzmf9elA

Saludos,

marcorotta

Hola.

Estos hilos resueltos pueden ayudarte:

https://community.powerbi.com/t5/Desktop/Calculate-working-days- between-2-dates/td-p/230349

https://community.powerbi.com/t5/Desktop/DATEDIFF-Working-Days/td-p/130662

Saludos.

ssvr

En respuesta a marcorotta

Gracias.

Pero aquí sugirieron crear una tabla de fechas para el indicador Isweekday.

Trabajé en datos de casi 10 años, así que, ¿no es posible crear una tabla de fechas con el indicador Isweekday?

En respuesta a ssvr

Hola @ssvr,

Si. Es compatible para crear una tabla de calendario con más de 10 años.

Saludos,

Yuliana Gu

ssvr

En respuesta a v-yulgu-msft

Hola @Yuliana,

Gracias.

Pero es difícil agregar 10 años canlender y también tenemos que agregar para fechas futuras, ¿verdad?

¿Puede sugerir alguna alternativa para este requisito?

En respuesta a ssvr

Hola @ssvr,

Puede crear una tabla de calendario con la función CALENDAR() de esta manera:

Dim Table = CALENDARIO (FECHA (2008,1,1), FECHA (2018,12,31))

Saludos,

Yuliana Gu

ssvr

En respuesta a v-yulgu-msft

Gracias @v-yulgu-msft

Creé una tabla de fechas:

Dim Table = CALENDARIO (FECHA (2008,1,1), FECHA (2018,12,31))

Creé una nueva columna con el día laborable o no

es día laboral = SWITCH(DÍA DE LA SEMANA([Date]),1,0,7,0,1)

Ahora quiero crear la columna «Diferencia de fecha» con fecha de creación y fecha de cierre (quiero saber la diferencia de días entre estas dos fechas, excluyendo los fines de semana)

Fecha de creaciónFecha de cierreDiferencia de fecha

Por favor guíame como hacer estoDDiff.JPG

ssvr

En respuesta a ssvr

@Phil_Seamark

¿Podría por favor resolver mi problema?

Creé una tabla de fechas:

Dim Table = CALENDARIO (FECHA (2008,1,1), FECHA (2018,12,31))

Creé una nueva columna con el día laborable o no

es día laboral = SWITCH(DÍA DE LA SEMANA([Date]),1,0,7,0,1)

Ahora quiero crear la columna «Diferencia de fecha» con fecha de creación y fecha de cierre (quiero saber la diferencia de días entre estas dos fechas, excluyendo los fines de semana)

Fecha de creaciónFecha de cierreDiferencia de fechac.JPG

Anónimo

En respuesta a ssvr

Como medida (recomendado, tendría que presentar un caso sólido para que esta sea una columna calculada):

[Date Difference Measure] =
VAR CreateDate =
    MIN ( TableName[CreatedDate] )
VAR CloseDate =
    MIN ( TableName[ClosedDate] )
VAR CalendarNoWeekends =
    FILTER (
        CalendarTable,
        CalendarTable[Date] >= CreateDate
            && CalendarTable[Date] <= CloseDate
            && CalendarTable[Is Working Day] = "Yes"
    )
RETURN
    COUNTROWS ( CalendarNoWeekends )

Como una columna calculada (nuevamente, asegúrese de que necesita agregar una columna no comprimida a su modelo de datos antes de seguir este camino):

Date Difference Calculated Column =
VAR CreateDate = TableName[CreatedDate]
VAR CloseDate = TableName[ClosedDate]
VAR CalendarNoWeekends =
    FILTER (
        CalendarTable,
        CalendarTable[Date] >= CreateDate
            && CalendarTable[Date] <= CloseDate
            && CalendarTable[Is Working Day] = "Yes"
    )
RETURN
    COUNTROWS ( CalendarNoWeekends )

La única diferencia es que ya tiene un contexto de fila, por lo que no necesita ajustar las fechas de inicio y finalización en una función MIN().

Espero que esto ayude.

PowerBInewb

En respuesta a ssvr

¿Alguna vez encontraste una respuesta a esto? He estado luchando durante unos días tratando de lograr la misma medida.

En mi caso:

Cierre de llamada: abra la llamada y luego filtre los días laborables de una columna isweekday en mi tabla de fechas. Parece que no puedo hacer que ninguna de estas sugerencias funcione.

¡Gracias!

Anónimo

En respuesta a ssvr

Algo como esto:

[Date Diff Measure] =
VAR Created =
    MAX ( Table[CreatedDate] )
VAR Closed =
    MAX ( Table[ClosedDate] )
RETURN
    CALCULATE (
        SUM ( 'Dim Table'[is work day] ),
        FILTER (
            ALL ( 'Dim Table'[DateColumn] ),
            'Dim Table'[DateColumn] >= Created
                && 'Dim Table'[DateColumn] <= Closed
        )
    )

ssvr

En respuesta a Anónimo

No se muestran datos en la columna Salida

c.JPG

ssvr

En respuesta a ssvr

@Anónimo

¡Aquí SLA es medida!

Puedes arreglar este error: Capturac.JPG

Anónimo

En respuesta a ssvr

Las expresiones lógicas que se agregan a CALCULATE() deben tener el formato Table[Column] = expresión estática.

Si quieres hacer una expresión lógica más avanzada, como la siguiente:

Tabla[Column] = [Measure]

[Measure] = expresión estática

[Measure] = [another Measure]

entonces necesitas usar FILTER() dentro de CALCULATE()

Algo como esto:

[Count of SLA] =
CALCULATE (
    DISTINCTCOUNT ( Dates[CreateDt].[Date] ),
    FILTER (
        VALUES(Dates[CreateDt]),
        [SLA] = "Met SLA"
    )
)

El parámetro FILTER() dice esto:

«Mire la lista distinta de fechas en la columna CreateDt, según el contexto de filtro actual (según lo determinado por las segmentaciones, etc.) Revise esa lista línea por línea y evalúe el [SLA] la medida. Mantenga sólo aquellas fechas en las que [SLA] = «Cumplió con el SLA»

Ahora tiene una lista (probable) más pequeña de valores de las fechas[CreateDt] columna. Ese es el filtro adicional que se tiene en cuenta cuando CALCULATE realiza el cálculo… en este caso contando el número distinto de valores en las Fechas[CreateDt] columna.

ssvr

En respuesta a Anónimo

@Anónimo

Gracias Chris Haas.

Está funcionando muy bien.

¿Puedes arreglar el DateDiff excluyendo los fines de semana DAX también?

ssvr

En respuesta a Anónimo

@Anónimo

algún error en DAX

a.JPG

Deja un comentario

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