Forum Discussion
NETWORKDAYS en horas
Hola
He encontrado el código a continuación para crear una función que calcula NETWORKDAYS en power query. ¿Alguna idea sobre cómo convertir a algo que calcule horas en lugar de días (por ejemplo, 23 horas o 0,96 días en lugar de 1 día)? ¡Gracias de antemano!
fnNETWORKDAYS
let func =
(StartDate, EndDate, vacaciones opcionales como lista, StartOfWeek opcional como número) =>
dejar
StartOfWeek opcional, si está vacío, la semana comenzará en Monaday
startOfWeek = if StartOfWeek = null then 1 else StartOfWeek,
Atender fechas vacías
StartEmpty = if StartDate = null then #date(1900,1,1) else StartDate,
EndEmpty = if EndDate = null then #date(1900,1,1) else EndDate,
Proporcionar lógica donde EndDate es después de StartDate
Inicio = List.Min({StartEmpty, EndEmpty}),
End = List.Max({StartEmpty, EndEmpty}),
Signo de cambio si EndDate es anterior a StartDate
Sign = if EndEmpty < StartEmpty then -1 else 1,
Obtener una lista de fechas entre Start- y EndDate
ListOfDates = List.Dates(Start, Number.From(End - Start) + 1,#duration(1,0,0,0)),
si se usa el parámetro opcional Holidays: Mantenga solo aquellas fechas en la lista que no aparecen en la lista de días festivos;
De lo contrario, continúe con la tabla anterior
DeleteHolidays = if Holidays = null then ListOfDates else List.Difference(ListOfDates, List.Transform(Holidays, Date.From )),
Seleccione solo los primeros 5 días de la semana
El 1 en el segundo parámetro de Date.DayOfWeek asegura que el lunes se tomará como primer día de la semana
DeleteWeekends = List.Select(DeleteHolidays, each Date.DayOfWeek(_, startOfWeek) < 5 ),
Contar el número de días (elementos de la lista)
CountDays = List.Count(DeleteWeekends) * Signo
en
CountDays ,
documentación = [
Documentation.Name = " Date.Networkdays.pq ",
Documentation.Description = " Devuelve el número de días laborables completos entre StartDate y EndDate similar a la función NETWORKDAYS de Excel. Los días laborables excluyen los fines de semana y cualquier fecha identificada en días festivos. ",
Documentation.LongDescription = " Devuelve el número de días laborables completos entre StartDate y EndDate similar a la función NETWORKDAYS de Excel. Los días laborables excluyen los fines de semana y cualquier fecha identificada en días festivos (opcionales). ",
Documentation.Category = " Fecha ",
Documentation.Source = " www.TheBIccountant.com https://wp.me/p6lgsG-2fA . ",
Documentation.Version = " 3.1 Catering para fechas vacías",
Documentation.Author = " Imke Feldmann ",
Documentation.Examples = {[Descripción = " ",
Código = " ",
Resultado = " "]}]
en
Value.ReplaceType(func, Value.ReplaceMetadata(Value.Type(func), documentation))
2 Replies
- Syndicate_AdminAdministrator
@DimAt , Consulte si el código DAX de Matt puede ayudar
https://exceleratorbi.com.au/calculating-business-hours-using-dax/
- Syndicate_AdminAdministrator
Gracias por el enlace, pero tendría que hacerlo en power query, no DAX 😪