Post-Image

Отслеживание длительности проекта

Рвав-рвав, зубастый собака Смайл рад вас приветствовать!

Данная статья появилась, так сказать, “по запросам пользователей”, хотелось при помощи визуализации “Gauge” (“Датчик”) отслеживать ход проекта по времени.

Любопытный пес провентилировал вопрос, результаты следующие:

  • Напрямую “воткнуть” данные, содержащие даты, в визуализацию “Gauge” (“Датчик”) не получилось, причем упорный пес пробовал разные варианты.

  • Гугл выдал подобный англоязычный “тикет”, где ответ поддержки был “Можно”, но не написали, как :-Р

    В общем, взяв себя в лапы, решил справиться своими силами, ну и, конечно, наклепать материал по результатам.

  • Пример:

  • Таблица “График проектов” содержит даты начала и окончания проектов, то есть это обычный справочник:

    art_004_screen_1

    Рвав-рвав, вообще, используя методику данного примера, можно отслеживать длительность чего угодно, а отслеживать проект только по времени его продолжения не совсем правильно. Тут, скорее, нужно отслеживать процент реализации проекта, ведь время может и пройти, но ничего не будет сделано…

    А еще лучше, использовать процент реализации проекта в комплексе с денежной оценкой. Но что имеем, то имеем :-)

    Как вы поняли, это был очередной совет от “хитрой собаки Смайла”. Впрочем, простите, что отвлекся. Начинаем.

    Задача:

  • На основе представленных данных необходимо отслеживать длительность проекта, используя визуализацию “Gauge” (“Датчик”) в качестве основного элемента.

    Процесс разработки:

  • Создана таблица “График проектов” – это таблица, созданная на уровне Power Query, и содержащая входящие данные в столбцах “Дата начала проекта”, “Дата окончания проекта” и “Название проекта”.

    Рвав-рвав, собака Смайл умеет удивлять –- это все, что было нам необходимо в качестве начальных данных, поскольку остальное просто чистые расчеты, реализация которых основана на наборе мер. Подчиняясь решению хозяина, пример было решено изменить и дополнить следующим образом:Вывести отдельными элементами даты проекта.

    Визуализировать продолжительность проекта в абсолютном и относительном выражении.

    В качестве цели для датчика выставить некую константу, например, 85% времени, прошедшего с момента начала проекта. Зачем оно надо? Предполагаем, что при пересечении данной отметки необходимо произвести проверку “состояния дел”, ну и покусать кого-нибудь, для большей результативности, если это необходимо.

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

    Текущая дата =
    TODAY ()

  • Мера для получения даты начала проекта:

    Дата начала =
    MINX ( 'График проектов', 'График проектов'[Дата начала проекта] )

  • Мера для получения даты окончания проекта:

    Дата окончания =
    MINX ( 'График проектов', 'График проектов'[Дата окончания проекта] )

  • Поскольку в качестве основного элемента визуализации прогресса проекта мы выбрали “Gauge” (“Датчик”), для того, чтобы его построить согласно описанным требованиям, нам понадобятся следующие элементы:

    – “Value” (“Значение”);

    – “Minimum value” (“Минимальное значение”);

    – “Maximum value” (“Максимальное значение”);

    – “Target value” (“Целевое значение”).

    Мера для получения начального значения дуги, в днях, задана константой, и выглядит так:

    Начало проекта, дни = 0

  • Мера для получения конечного значения дуги, в днях, выглядит так:

    Общая продолжительность проекта, дни =
    DATEDIFF (
        'График проектов'[Дата начала],
        'График проектов'[Дата окончания],
        DAY
    ) + 1

    Рвав-рвав, совет от хитрой собаки Смайла: всегда проверяйте свои расчеты, или внимательно читайте документацию.

    Конечно, можно положиться на удачу, но в данном случае это не наш метод, несмотря на то, что я собакен самый лучший, и, следовательно, самый удачливый :-)

    Функция “DATEDIFF” возвращает разницу между двумя датами, значение “+1” в формуле стоит потому, что рассчитанное подобным образом количество дней на один день меньше.

  • Мера для получения количества дней, прошедших с момента запуска проекта, построена таким образом:

    Текущая продолжительность проекта, дни =
    VAR _Duration =
        DATEDIFF (
            'График проектов'[Дата начала],
            'График проектов'[Текущая дата],
            DAY
        ) + 1
    VAR _Result =
        IF (
            [Дата окончания] < [Текущая дата],
            [Общая продолжительность проекта, дни],
            _Duration
        )
    RETURN
        _Result

  • Теперь нам нужно сделать расчеты подобного рода для оформления длительности проекта в процентах. Меры для этого блока дополнительно должны иметь формат “Persentage” (“Процентный”). Мера для получения начального значения дуги, задана константой, и выглядит так:

    Начало проекта, % = 0

  • Мера для получения конечного значения дуги, задана константой, и выглядит так:

    Общая продолжительность проекта, % = 1

  • Мера для получения количества дней, прошедших с момента запуска проекта, при пересчете в проценты, построена таким образом:

    Текущая продолжительность проекта, % =
    DIVIDE (
        [Текущая продолжительность проекта, дни],
        [Общая продолжительность проекта, дни],
        0
    )

  • Мера для получения целевого значения (наши 85%), после которого планируется проверить состояние проекта, задана константой, и выглядит следующим образом:

    Проверка проекта, % = 0.85

    Рвав-рвав, можно было, конечно реализовать это при помощи изменяемого пользователем параметра, но, поскольку описание процесса создания параметров это не “пара строк”, собака Смайл напишет отдельную статью по этому поводу в будущем.

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

  • Как вы, наверно, смогли заметить, при расчете мер для блока по количеству дней, формула подсчета целевого значения была пропущена, это было сделано умышленно, поскольку рассчитывать его константой неправильно, а “85% – это всегда 85%”. Тем не менее, теперь мы в состоянии почитать целевое значение для текущей продолжительности проекта в днях:

    Проверка проекта, дни =
    [Проверка проекта. %] * [Общая продолжительность проекта. дни]

    Собственно, с расчетами закончено. Общий комплект мер – 11 штук. Построение связей в нашем примере не нужно, поскольку все данные хранятся в одной таблице. Результат разработки представлен на рисунке ниже:

    art_004_screen_2

    Процесс визуализации данных:

  • Создано два элемента “Card” (“Карточка”) для визуализации текущей даты и целевого значения проверки проекта.

  • Создан визуальный фильтр “Перечень проектов”, при помощи элемента “Slicer” (“Срез”), для корректной работы важно в свойствах элемента включить настройку “Единичное выделение”.

  • Визуализация длительность проекта производится при помощи элемента “Gauge” (“Датчик”).

  • Создана таблица “Список проектов” при помощи элемента “Table” (“Таблица”).

    Рвав-рвав, товарищи, надеюсь, кому-нибудь помог, на этом все.

    Статья закончена, пойду на обход территории, конкурентов гонять!

    Ваш Смайл

    ДЛЯ ЛЮБИТЕЛЕЙ ПОНАЖИМАТЬ НА КНОПОЧКИ