Как перевести рабочие дни в часы, которые можно обновлять чаще, чем раз в день, в Power BI? - PullRequest
1 голос
/ 29 января 2020

Я впервые использую Power BI, и мне было поручено сравнить время отклика билетов с тем, что мы обещали нашим клиентам. Мне нужно показать, сколько рабочих дней и рабочих часов прошло с момента создания заявки. Рабочие часы могут быть с 08:00 до 16:00 (зависит от клиента), а рабочие дни - понедельник, вторник, Wedensday, четверг и пятница. Делаем рабочий день 8 часов. Если билет приходит в 15:00, и у нас есть 1 рабочий день, чтобы ответить, то нам нужно будет ответить до 15:00 следующего дня, а не до 23:00 в тот же день. Моя проблема на данный момент состоит в том, что мои текущие расчеты в полных рабочих днях. Это означает, что мои истекшие рабочие часы обновляются только с 8-часовыми интервалами. Это не очень полезно на ежедневной основе, в случаях, когда у нас есть только один день, чтобы ответить на билет, и нужно знать, что он приближается к крайнему сроку.

На практике это переводит в столбец, где билет, созданный сегодня, будет иметь значение 0 рабочих дней и 0 рабочих часов, даже если текущее время 15:00, а билет был создан в 08:00.

В данный момент у меня есть (среди прочего) эти два столбца: истекшие рабочие дни (WDE) и истекшие рабочие часы (WHE).

WDE рассчитывается следующим образом, чтобы исключить выходные дни:

(InitialDate as date) as number => 
let
    FinalDate =  DateTime.Date(DateTime.LocalNow()),
    DaysBetweenDates = Duration.Days(FinalDate-InitialDate),
    DaysList = List.Dates(List.Min({InitialDate,FinalDate}),DaysBetweenDates, Duration.From(1)),
    WeekDaysList = List.Select(DaysList, each (Date.DayOfWeek(_, Day.Monday) < 5) ),
    WorkingDays = (if DaysBetweenDates < 0 then -1 else 1) * List.Count(WeekDaysList)
in
    WorkingDays

Рабочие часы истекли, на данный момент немного проще:

Work Hours Elapsed = 'Work Items'[Work Days Elapsed]*'Work Items'[Business Hours]

Как бы преобразовать это во что-то, что можно обновлять хотя бы каждый час? Может быть, даже чаще.

Я надеюсь, что предоставил достаточно информации, и все это имеет смысл.

1 Ответ

0 голосов
/ 30 января 2020

Я понял, это был в основном вопрос математики. Я сделал решение, которое можно обновлять ежечасно, что, кажется, хорошо.

Я добавил две колонки: Начало рабочих часов и Конец рабочих часов. Затем преобразовал мой WorkDaysElapsed в десятичные числа следующим образом (я попытался дать ему несколько значимых имен):

HowFarIntoTheDay = now - start

HowManyPercentageOfTheToalDayHasGoneBy = HowFarIntoTheDay / (end-start) * 1007 1008 * WorkDaysElapsedInDecimals = WorkDaysElapsed + HowManyPercentageOfTheToalDayHasGoneBy

Я не знаю, является ли это наилучшим возможным решением, но, похоже, оно выполняет свою работу.

...