Forum Discussion
NETWORKDAYS() Pregunta sobre las vacaciones
Recientemente descubrí la función NETWORKDAYS(), tengo una pregunta sobre el uso del parámetro Holidays de la función. Tenemos nuestra mesa navideña configurada de la siguiente manera:
Recibo el siguiente error al inyectar los días festivos en la fórmula NETWORKDAYS(): "La expresión se refiere a varias columnas. Varias columnas no se pueden convertir en un valor escalar".
FieldTAT =
VAR vStartDate = 'WF'[InspectionDate]
VAR vEndDate = MAX('WF'[ReportReceivedDate], TODAY())
VAR vHolidays =
FILTER(
'Holidays',
'Holidays'[Country] = 'WF'[Country]
&& 'Holidays'[Date] >= vStartDate && 'Holidays'[Date] <= vEndDate
)
RETURN
SWITCH(
TRUE(),
'WF'[WeekendType] = 3, NETWORKDAYS(vStartDate, vEndDate, 6, vHolidays), // THU/FRI
...
NETWORKDAYS(vStartDate, vEndDate, vHolidays)
)
Mi error es obviamente con la forma en que estoy tratando de usar la mesa navideña aquí, entonces, ¿hay alguna manera de solucionar esto?
Otra pregunta es, ¿hay alguna manera de agregar un identificador de fin de semana personalizado? Según la KB, no hay un identificador de fin de semana para viernes + domingo como fin de semana. Actualmente estamos calculando nuestro TAT utilizando un calendario personalizado que no es la solución más optimizada:
VAR vCalendar = CALENDAR(MIN(vStartDate, vEndDate), MAX(vStartDate, vEndDate))
VAR vWeekdays = ADDCOLUMNS(vCalendar, "Weekday", WEEKDAY([Date]))
VAR vTAT =
IF(vStartDate = vEndDate, 0,
SWITCH(
TRUE(),
'WF'[WeekendType] = 2, COUNTX(FILTER(vWeekdays, AND([Weekday] <> 6, [Weekday] <> 7)), [Date]) - 1, // Fri, Sat
'WF'[WeekendType] = 3, COUNTX(FILTER(vWeekdays, AND([Weekday] <> 5, [Weekday] <> 6)), [Date]) - 1, // Thu, Fri
'WF'[WeekendType] = 4, COUNTX(FILTER(vWeekdays, AND([Weekday] <> 6, [Weekday] <> 1)), [Date]) - 1, // Fri, Sun
...
)
)5 Replies
- Syndicate_Admin
Administrator
Hola @olimilo
La tabla de días festivos debe contener solo una columna y realmente no es necesario filtrar los días festivos por las fechas de inicio y finalización.
Networkdays Measure = VAR _holidays = SELECTCOLUMNS ( FILTER ( Holidays, Holidays[Country] = "A" ), [Holidays] ) RETURN NETWORKDAYS ( SELECTEDVALUE ( Start_End[End] ), SELECTEDVALUE ( Start_End[End] ), 1, _holidays )Networkdays Column = VAR _holidays = SELECTCOLUMNS ( FILTER ( Holidays, Holidays[Country] = "A" ), [Holidays] ) RETURN NETWORKDAYS ( Start_End[End], Start_End[End], 1, _holidays )1 significa que los fines de semana se omiten y no se incluyen en el conteo. DAX NETWORKDAYS incluye las fechas de inicio y finalización.
- Syndicate_Admin
Administrator
Hola Dan, gracias por la respuesta. Esto significa entonces que no es posible indicar fines de semana fuera de lo que está disponible en la KB? Estamos tratando de evitar tener que crear un calendario calculado por entrada en la tabla, que es lo que hicimos anteriormente para calcular los TATs.
- Syndicate_Admin
Administrator
¿A qué te refieres con indicar fines de semana fuera de lo que está disponible en la KB? Creo que las opciones para indicar qué días son los fines de semana son bastante completas.