Рвав-рвав, терпеливый собака Смайл рад вас приветствовать!
Данная статья появилась, так сказать, "по запросам пользователей", хотелось при помощи визуализации "Датчик" отслеживать ход проекта по времени.
Любопытный пес провентилировал вопрос, результаты следующие:
- Напрямую "воткнуть" данные, содержащие даты, в визуализацию "Датчик" не получилось, причем упорный пес пробовал разные варианты.
- Гугл выдал подобный англоязычный "тикет", где ответ поддержки был "Можно", но не написали, как :-Р
В общем, взяв себя в лапы, решил справиться своими силами, ну и, конечно, наклепать материал по результатам.Пример:
Таблица "График проектов" содержит даты начала и окончания проектов, то есть это обычный справочник:
Рвав-рвав, вообще, используя методику данного примера, можно отслеживать длительность чего угодно, а отслеживать проект только по времени его продолжения не совсем правильно. Тут, скорее, нужно отслеживать процент реализации проекта, ведь время может и пройти, но ничего не будет сделано…
А еще лучше, использовать процент реализации проекта в комплексе с денежной оценкой. Но что имеем, то имеем :-)
Задача:
На основе представленных данных необходимо отслеживать длительность проекта, используя визуализацию "Датчик” в качестве основного элемента.
Процесс разработки:
- Создана таблица "График проектов" – это таблица, созданная на уровне Power Query, и содержащая входящие данные в столбцах "Дата начала проекта" , "Дата окончания проекта" и "Название проекта".
Рвав-рвав, собака Смайл умеет удивлять: по сути, то все, что было нам необходимо в качестве начальных данных, так как остальное просто чистые расчеты, реализация которых основана на наборе мер. Подчиняясь решению хозяина, пример было решено изменить и дополнить следующим образом:
– Вывести отдельными элементами даты проекта.
– Визуализировать продолжительность проекта в абсолютном и относительном выражении.
– В качестве цели для датчика выставить некую константу, например, 85% времени, прошедшего с момента начала проекта.
Зачем оно надо? Предполагаем, что при пересечении данной отметки необходимо произвести проверку "состояния дел", ну и покусать кого-нибудь, для большей результативности, если это необходимо.
- Далее необходимо реализовать расчеты, позволяющие осуществить задумку, озвученную выше. Для начала, можем разобраться с датами, тут все просто. Мера для получения текущей даты выглядит следующим образом:
Текущая дата =
TODAY ()
- Мера для получения даты начала проекта:
Дата начала =
MINX ( 'График проектов', 'График проектов'[Дата начала проекта] )
- Мера для получения даты окончания проекта:
Дата окончания =
MINX ( 'График проектов', 'График проектов'[Дата окончания проекта] )
- Поскольку в качестве основного элемента визуализации прогресса проекта мы выбрали "Датчик", для того, чтобы его построить согласно описанным требованиям, нам понадобятся следующие элементы: значение, минимальное значение, максимальное значение, целевое значение.
- Мера для получения начального значения дуги, в днях, задана константой, и выглядит так:
Начало проекта, дни =
0
- Мера для получения конечного значения дуги, в днях, выглядит так:
Общая продолжительность проекта, дни =
SUMX (
'График проектов',
DATEDIFF (
'График проектов'[Дата начала проекта],
'График проектов'[Дата окончания проекта],
DAY
) + 1
)
Рвав-рвав, всегда проверяйте свои расчеты, или внимательно читайте документацию.
Конечно, можно положиться на удачу, но в данном случае это не наш метод, несмотря на то, что я собакен самый лучший, и, следовательно, самый удачливый :-)
Функция DATEDIFF возвращает разницу между двумя датами, значение "+1" в формуле стоит потому, что рассчитанное подобным образом количество дней на один день меньше.
- Мера для получения количества дней, прошедших с момента запуска проекта, построена таким образом:
Текущая продолжительность проекта, дни =
VAR _Duration =
DATEDIFF (
'График проектов'[Дата начала],
'График проектов'[Текущая дата],
DAY
) + 1
VAR _Result =
IF (
[Дата окончания] < [Текущая дата],
[Общая продолжительность проекта, дни],
_Duration
)
RETURN
_Result
- Теперь нам нужно сделать расчеты подобного рода для оформления длительности проекта в процентах. Меры для этого блока дополнительно должны иметь формат "Процентный". Мера для получения начального значения дуги, задана константой, и выглядит так:
Начало проекта, % =
0
- Мера для получения конечного значения дуги, задана константой, и выглядит так:
Общая продолжительность проекта, % =
1
- Мера для получения количества дней, прошедших с момента запуска проекта, при пересчете в проценты, построена таким образом:
Текущая продолжительность проекта, % =
DIVIDE (
[Текущая продолжительность проекта, дни],
[Общая продолжительность проекта, дни],
0
)
- Мера для получения целевого значения (наши 85%), после которого планируется проверить состояние проекта, задана константой, и выглядит следующим образом:
Проверка проекта, % =
0.85
Рвав-рвав, можно было, конечно реализовать это при помощи изменяемого пользователем параметра, но, поскольку описание процесса создания параметров это не "пара строк", собака Смайл напишет отдельную статью по этому поводу в будущем.
Тем более, что на это был запрос от аудитории, и удалось нагуглить только англоязычный контент. Тем не менее, человеку мы с хозяином помогли, кратко описав решение проблемы.
- Как вы, наверно, смогли заметить, при расчете мер для блока по количеству дней, формула подсчета целевого значения была пропущена, это было сделано умышленно, поскольку рассчитывать его константой неправильно, а “85% – это всегда 85%”. Тем не менее, теперь мы в состоянии почитать целевое значение для текущей продолжительности проекта в днях:
Проверка проекта, дни =
[Проверка проекта, %] * [Общая продолжительность проекта, дни]
Собственно, с расчетами закончено. Общий комплект мер – 11 штук. Построение связей в нашем примере не нужно, поскольку все данные хранятся в одной таблице. Результат разработки представлен на рисунке ниже:
Процесс визуализации данных:
- Создано два элемента "Карточка" для визуализации текущей даты и целевого значения проверки проекта.
- Создан визуальный фильтр "Название проекта", при помощи элемента "Срез", для корректной работы важно в свойствах элемента включить настройку "Единичное выделение".
- Визуализация длительности проекта производится при помощи элемента "Датчик".
- Создана таблица "Данные по проекту" при помощи элемента "Таблица".
Статья закончена, на этом все.
Рвав-рвав, товарищи, надеюсь, кому-нибудь помог, на этом все.
Пойду на обход территории, конкурентов гонять!
Ваш Смайл