Как показать промежуточные итоги времени, определенного интервалом и временем для каждого экземпляра - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть таблица, определяющая интервал, когда будет выполняться услуга для клиента. Также определяется выделенная длительность услуги каждый раз, когда она выполняется.

Примерно так:

enter image description here

Таблица выше является примером служб, которые будут выполняться для некоторых клиентов.

Для ClientId: 1 информация должна читаться следующим образом:

Клиент 1 заказал ServiceType: 100 будет выполняться в течение 1,5 часов каждый третий день, начиная с 2020-01- 01 и до дальнейшего уведомления.

Для Клиент: 4 информация должна читаться следующим образом:

Клиент 4 заказал ServiceType: 200 для выполняется в течение 4 часов каждый 4-й день, начиная с 2020-01-02 и до дальнейшего уведомления.

Теперь мой начальник хочет, чтобы я составил график, показывающий общее количество часов, потраченных на любую услугу, по дате.

Диапазон дат между 2020-01-01 и 2020-01-31 должен создать следующий теоретический набор данных для отображения:

(мне нужно только отобразить дату и общее время, остальные столбцы можно игнорировать)

enter image description here

Данные, приведенные выше, будут показаны На диаграмме, например:

enter image description here

Моя проблема заключается в том, как создать меру , которая может вычислять общее время, учитывая текущий выбранный фильтр даты в отчете, и это можно использовать для создания диаграммы выше.

Любая помощь очень ценится!

С уважением, Питер

1 Ответ

1 голос
/ 10 февраля 2020

Вы можете добиться этого, используя M (Power Query), мое решение не управляет всеми деталями, которые вы запрашиваете, например, «IntervalType», но позволяет вам получить нужные вам строки после стандартизации ввода.

Приведенный ниже сценарий M будет работать со следующими требованиями (вы можете просмотреть полный сценарий с помощью расширенного редактора):

  • Все строки и используемые метрики имеют одну и ту же единицу измерения ie: Дни
{here you have already loaded your table}
/*Calculate the difference between the 2 dates in days*/
/*note that if the end date is 9999-12-31 you may want to set an upper limit*/
#"Added Custom" = Table.AddColumn(#"Changed Type", "DaysInterval", each Duration.Days([EndDate]- [StartDate])),

/*Calculate how many times the service will be performed in the calculated interval*/
#"Added Custom1" = Table.AddColumn(#"Added Custom", "IntervalOccurence", each Number.RoundDown([DaysInterval]/[Interval])),

/*Use what has been calculated so far to create a list of dates for each row*/
#"Added Custom2" = Table.AddColumn(#"Added Custom1", "ListDates", each List.Dates([StartDate],[IntervalOccurence],#duration([Interval], 0, 0, 0))),

/*Expand the list to rows (using the UI click on the arrows in the column header)*/
#"Expanded ListDates" = Table.ExpandListColumn(#"Added Custom2", "ListDates")

После этого вам нужно будет только удалить ненужные столбцы.

...