mrahimtu
Hola
Necesito excluir los fines de semana y los días festivos de cada Depósito, pero pensé en hacer el cálculo para el fin de semana, pero necesito ayuda sobre cómo excluir los días festivos en función de cada Depósito.
A continuación se muestran mis vacaciones para Depot
deposito | Días festivos |
Depósito_Nombre1 | 25/12/2019 |
Depósito_Nombre1 | 26/12/2019 |
Depósito_Nombre2 | 25/12/2019 |
Depósito_Nombre2 | 26/12/2019 |
Depósito_Nombre1 | 25/12/2020 |
Depósito_Nombre1 | 26/12/2020 |
Depósito_Nombre2 | 25/12/2020 |
Depósito_Nombre2 | 26/12/2020 |
Tabla de envío de depósito
EnvíoIdentificación | Depot_Slicer_Name | PurchseCutoffDatetime | Compensación por tiempo de carga en días | Tiempo objetivo de carga |
679936 | Depósito_Nombre3 | 23/12/2020 12:32 | 2 | 25/12/2020 00:00 |
678794 | Depósito_Nombre3 | 23/12/2020 12:32 | 2 | 25/12/2020 00:00 |
675254 | Depósito_Nombre3 | 23/12/2020 12:32 | 2 | 25/12/2020 00:00 |
678871 | Depósito_Nombre2 | 23/12/2020 12:32 | 3 | 28/12/2020 00:00 |
681039 | Depósito_Nombre2 | 22/12/2020 12:32 | 3 | 25/12/2020 00:00 |
680841 | Depósito_Nombre2 | 23/12/2019 12:32 | 3 | 26/12/2019 00:00 |
681020 | Depósito_Nombre2 | 23/12/2019 12:32 | 3 | 26/12/2019 00:00 |
679828 | Depósito_Nombre2 | 02/01/2020 10:28 | 3 | 02/05/2020 00:00 |
680847 | Depósito_Nombre2 | 02/03/2020 09:31 | 3 | 02/06/2020 00:00 |
679896 | Depósito_Nombre2 | 02/01/2020 11:43 | 3 | 02/05/2020 00:00 |
681024 | Depósito_Nombre2 | 02/03/2020 13:08 | 3 | 02/06/2020 00:00 |
679054 | Depósito_Nombre1 | 31/01/2020 15:14 | 2 | 02/04/2020 00:00 |
Gracias
v-luwang-msft
Hola @mrahimtu,
Podrías usar los siguientes pasos:
Paso 1, cree una nueva tabla de fechas base con el siguiente dax:
Dates = CALENDAR("2019/1/1","2021/12/31")
date1 = var test1=
GENERATE (
CALENDARAUTO (),
VAR yyyy =
YEAR ( [Date] )
VAR mmmm =
MONTH ( [Date] )
RETURN
ROW (
"Year", yyyy,
"Month", FORMAT ( [Date], "mmmm" ),
"Month2", mmmm,
"Week1", FORMAT ( [Date], "dddd" ),
"Week2", WEEKDAY ( [Date] ),
"weekday", NOT WEEKDAY ( [Date] ) IN { 1,7 }
)
) return test1
entonces obtendrás lo siguiente:
Paso 2, cree una nueva base de columna en la tabla:
depot = IF ( date1[Date] IN DISTINCT ( Depot[Holidays]), 1, 0 )
Paso 3, basado en el paso 1 y el paso 2, cree una nueva columna:
pdbz = if(date1[weekday]=TRUE()&&date1[depot]=0,TRUE(),FALSE())
Paso 4, use el siguiente dax para crear una nueva columna:
dateneed =
VAR day1 =
DATEADD (
'Depot Shipment Table'[PurchseCutoffDatetime].[Date],
'Depot Shipment Table'[Offset for load time in days],
DAY
)
VAR day2 =
CALCULATE (
COUNTROWS ( 'date1' ),
DATESBETWEEN (
date1[Date],
'Depot Shipment Table'[PurchseCutoffDatetime],
day1
),
date1[pdbz] <> TRUE,
ALL ( 'Depot Shipment Table' )
)
VAR day3 =
IF ( day2 = BLANK (), 0, day2 )
VAR day4 =
DATEADD ( day1, day3, DAY )
RETURN
day4
¡Y finalmente obtendrás lo que quieres!
¡Ojalá te sea útil!
Atentamente
Lucien
v-luwang-msft
Hola @mrahimtu,
Podrías usar los siguientes pasos:
Paso 1, cree una nueva tabla de fechas base con el siguiente dax:
Dates = CALENDAR("2019/1/1","2021/12/31")
date1 = var test1=
GENERATE (
CALENDARAUTO (),
VAR yyyy =
YEAR ( [Date] )
VAR mmmm =
MONTH ( [Date] )
RETURN
ROW (
"Year", yyyy,
"Month", FORMAT ( [Date], "mmmm" ),
"Month2", mmmm,
"Week1", FORMAT ( [Date], "dddd" ),
"Week2", WEEKDAY ( [Date] ),
"weekday", NOT WEEKDAY ( [Date] ) IN { 1,7 }
)
) return test1
entonces obtendrás lo siguiente:
Paso 2, cree una nueva base de columna en la tabla:
depot = IF ( date1[Date] IN DISTINCT ( Depot[Holidays]), 1, 0 )
Paso 3, basado en el paso 1 y el paso 2, cree una nueva columna:
pdbz = if(date1[weekday]=TRUE()&&date1[depot]=0,TRUE(),FALSE())
Paso 4, use el siguiente dax para crear una nueva columna:
dateneed =
VAR day1 =
DATEADD (
'Depot Shipment Table'[PurchseCutoffDatetime].[Date],
'Depot Shipment Table'[Offset for load time in days],
DAY
)
VAR day2 =
CALCULATE (
COUNTROWS ( 'date1' ),
DATESBETWEEN (
date1[Date],
'Depot Shipment Table'[PurchseCutoffDatetime],
day1
),
date1[pdbz] <> TRUE,
ALL ( 'Depot Shipment Table' )
)
VAR day3 =
IF ( day2 = BLANK (), 0, day2 )
VAR day4 =
DATEADD ( day1, day3, DAY )
RETURN
day4
¡Y finalmente obtendrás lo que quieres!
¡Ojalá te sea útil!
Atentamente
Lucien
amichandak
@mrahimtu, basado en lo que obtuve. Pruebe una nueva columna como
Día laborable = CUENTAS(FILTRO(AÑADIR COLUMNAS(CALENDARIO(Envío[PurchseCutoffDatetime].fecha,Envío[Loading Target time].fecha), «Día laboral», si (DÍA DE LA SEMANA ([Date],2) <6,1,0)),[WorkDay] =1))
– countx(filtro(Días festivos, Días festivos[Depot] = Envío[Depot_Slicer_Name] && Días festivos[Holidays] >= Envío[PurchseCutoffDatetime].fecha y días festivos[Holidays] = Envío[Loading Target time].fecha ),vacaciones[Holidays])
Cuente el día de trabajo – días festivos. Solo maneja negativo
mrahimtu
En respuesta a amichandak
@amitchandak Muchas gracias por tu respuesta
Lo siento, no estaba claro antes, necesito calcular nuevos «Loading Target time», que actualmente excluye el fin de semana entre las fechas. También debo ignorar los días festivos según el depósito específico.
Gracias