Post-Image

Ретроспектива

Рвав-рвав, собака Смайл поздравляет всех с началом отопительного сезона!

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

Пример:

Имеется набор данных следующего вида:

– сотрудник;

– дата приема на работу;

– дата увольнения с работы;

– признак того, что сотрудник работает в компании в настоящее время;

– должность (позиция) сотрудника.

art_008_screen_1

  • Календарь выделен в качестве отдельной таблицы, при этом он создан “динамическим образом”, а именно:

    Calendar =
    CALENDAR ( FIRSTDATE ( 'Dataset'[Employment_Date] ); TODAY () )

    Задача:

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

    Рвав-рвав, предварительное описание составлено, теперь можно приступать к построению машины времени!

    Решение:

  • На уровне Power Query cоздано представление таблицы “Dataset”, при помощи контекстного меню “Reference” (“Ссылка”), имя представления задано как “Employee_dates”.

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

    List.Dates ( [Employment_Date], 
    Duration.TotalDays( [Dismissal_Date] - [Employment_Date] ) + 1,
    #duration( 1, 0, 0, 0 ) )

    Рвав-рвав, есть один тонкий момент:

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

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

    art_008_screen_2

  • На этом работы с Power Query завершены, далее необходимо настроить связи между данными:

    – связь одностороннего типа “Many to one” (“Многие к одному”) для Employee_dates -> Calendar;

    – связь двустороннего типа “Many to one” (“Многие к одному”) для Employee_dates -> Dataset.

    art_008_screen_3

  • После формирования модели данных, можно приступить к дополнительным рассчетам, иллюстрирующим полученный результат, в виде, понятном конечному пользователю. Например, можно рассчитать:

    – общее количество персонала;

    – количество персонала, работающего в настояцее время;

    – количество персонала на определенной должности.

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

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

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

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

  • создать таблицу “Список сотрудников”, используя элемент “Table” (“Таблица”), таблица является основным элементом отчета, и содержит полный список сотрудников.

  • Исходя из нашего набора данных, в период с 01 января по 27 сентября 2019 года в компании было 12 сотрудников, 2 сотрудника занимали позицию Старшего менеджера, а 10 – Менеджера, и при этом в настоящий момент в компании работает 8 человек:

    art_008_screen_4

    Пояснения к отчету:

  • Если все сделано верно, то при изменении кочечного отрезка времени с “27.09.2019” на “12.02.2019” в таблице “Список сотрудников” должно отобразиться два сотрудника, поскольку ближайшая дата приема 3-го сотрудника – это “14.02.2019”, а подобное значение не должно учитываться в расчетах в соответствии с указанным периодом:

    art_008_screen_5

    То есть, по данным построенного отчета, в период с 14.01.2019 по 12.02.2019 в компании работало 2 человека на позиции Старшего менеджера, и при этом они оба продолжают работать в настоящий момент.

  • Фильтр “Период” работает в обе стороны, и вернув конечную дату в значение “сегодня” (или более позднее), а затем изменив значение начального отрезка времени с “14.01.2019” на “01.06.2019”, в таблице “Список сотрудников” должно будет отобразиться 11 записей, поскольку один из сотрудников покинул компанию накануне (31.07.2019):

    art_008_screen_6

  • Фильтрация данных при помощи дополнительных срезов (например, “Должность”), также производится корректным образом, поскольку, при нажатии кнопки “Менеджер”, таблица “Список сотрудников” отображает 9 записей, что соответствует значению меры “Менеджер, всего”, визуализированному при помощи элемента “Card” (“Карточка”).

    art_008_screen_7

    Рвав-рвав, наша машина времени успешно введена в эксплуатацию, хотя, конечно, смотреть “что у тебя было” – несколько грустновато…

    Бегу проверять свои заначки :-)

    Ваш Смайл

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