С вами
снова Денис Костин и сегодня я покажу полезный лайфхак, который пригодится всем
тем, кто строит отчеты по персоналу в разрезе возраста или стажа в динамике за
период. Несколько раз наблюдал, как коллега испытывает мучения, пытаясь собрать
подобную аналитику из нашей не очень дружелюбной HR-системы. Для этого ему приходилось осуществлять следующие шаги:
сформировать настроенный
отчет по персоналу на конец каждого месяца необходимого периода;
В каждом отчете за месяц
добавить столбцы с расчетом стажа и возраста;
На отдельном листе рассчитать
необходимый показатель (например, списочную численность) для каждой группы
стажа и возраста за каждый период.
Как думаете, какие
сложности приносит такой подход?
На мой взгляд как
минимум следующие:
Необходимость
формировать большое количество отдельных отчетов из HR системы;
Большое количество формул
СУММЕСЛИ и СУММЕСЛИМН делает файл очень медленным;
При необходимости построения
отчета в новом разрезе (например, пола или грейда) дополнительные затраты
времени на создание новых формул.
Ошибки при расчете, т.к. не учитывается динамика в течение месяца.
Использование
предлагаемого мной подхода позволит уйти от этой громоздкой схемы к построению
динамического отчета, автоматически вычисляемого на каждую дату и агрегируемого
в любом необходимом разрезе и интервале времени.
В
результате вы сможете на основе единственного отчета из HR-системы сформировать с помощью Power Pivot подобный расчет:
Предположим, что нам
необходимо показать в динамике за определенный промежуток времени расчет
среднесписочной численности в разрезе следующих группировок стажа:
Стаж является
изменяющейся во времени величиной, поэтому на каждую дату в отчете он должен
быть рассчитан отдельно.
Решение будет
состоять всего из 6 шагов:
Создание в Excel таблицы с
группировками стажа
Импорт таблицыв Power Pivot
Создание вспомогательных мер
для расчета среднесписочной численности
Создание вспомогательной меры
для расчета стажа
Создание итоговой меры
Создание сводной таблицы с
использованием нашей итоговой меры
Для
начала создадим таблицу в Excel следующего
содержания:
№
Группа стажа
Стаж MIN
Стаж MAX
1
до 3
мес
0
3
2
03
мес-1 год
3
12
3
1-2
лет
12
24
4
2-3
лет
24
36
5
3-5
лет
36
60
6
5-10
лет
60
120
7
более
10 лет
120
999
В
столбце Стаж MIN указано
минимальное количество полных месяцев, при которых стаж будет относиться к
конкретной группе. Аналогично Стаж MAX будет показывать максимальное количество.
Мало кто в HRне знает, что такое воронка
подбора. Это хороший визуальный инструмент для первичного определения проблем в
процессе подбора. Она позволяет понять, как протекает процесс, состоящий из
нескольких стадий. Если ваш вопрос в определении самой «узкой» части в этом
процессе, то воронка как раз то, что надо. В сочетании с метриками,
позволяющими еще и время оценить на каждом этапе, у вас появляется реально
рабочий инструмент для контроля.
Мы сейчас
настраиваем на PowerBI такой дашборд. Он может выглядеть так (данные
фейковые 😊 )
Но и без PowerBIвы можете построить воронку подбора, используя обычный
excel, и excel«усиленный» надстройкой PowerPivot.
Этот пост
как раз про эти три способа построения воронки подбора, которые может применить
каждый в своих рабочих или учебных целях.
В качестве
примера использован датасет «данные» из 4840 наблюдений за 2018 год, содержащий
следующие переменные:
Дата
открытия вакансии;
Дата
закрытия вакансии;
Количество кандидатов;
Количество
телефонных интервью;
Количество
рассмотренных кандидатов;
Количество
проверок СБ;
Количество
предложений кандидатам;
Количество
приёмов;
Структурное
подразделение.
Мы предлагаем пройти решение вместе с нами, для этого скачать файл с учебными данными «Пример построения воронки подбора.xlsx»(в файле доступны решения для Способов 1 и 2 с
расчётом всех формул.) Формат файла оказывает влияние на последующий расчет,
и где-то такой формат удобен, а где-то придется писать много формул. Формат
можно конечно поменять, но оставим все как есть, чтобы почувствовать разницу 😊. Реализация ПРИГЛАШАЮ ОТСЛЕЖИВАТЬ НАС В ТЕЛЕГРАМ
Способ 1. MSExcel
Без труда в
Интернете можно найти большое число статей о построении воронок, как правило в
продажах, но принцип везде одинаковый. Мы же решили показать самый простой
вариант, который не потребует даже использования диаграмм.
Первое, что следует сделать – это
агрегировать имеющиеся данные, для этого воспользуйтесь сводными таблицами на
вкладке «Вставка» для имеющегося набора данных. Перенесите поля («Количество
кандидатов», «Количество телефонных интервью», «Количество направленных резюме»,
«Количество интервью с заказчиком», «Количество проверок СБ», «Джоб оффер
выставлен», «Количество приемов») в область значений сводной таблицы, а сами
значения отправьте в строки.
В начале логика: мы хотим вывести
на экран некий текстовый символ определенное количество раз пропорционально значению
в строке, для этого количество событий на каждом этапе воронки надо умножить на
некий множитель. Нам понадобится создать этот множитель - вспомогательную
величину, которая потребуется для визуализации результатов. Максимальное
количество символов (в нашем случае черточек), которое помещается в ячейку excel в этом примере выбрали равным 60, но оно может быть
любым числом. Далее считаем по следующей формуле:
=60/ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ("Сумма по
полю Количество кандидатов";$A$2)
Теперь можно визуализировать
нашу воронку и для этого напишем ряд простых формул, потом воспользуемся
простым форматированием. Используем следующую формулу (здесь нам и пригодится
тот множитель, который был рассчитан на предыдущем шаге).
=ПОВТОР("|";ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ("Сумма
по полю Количество кандидатов";$A$2)*$B$11)
Чтобы результат в строке казался
непрерывным выберите шрифт «BritanicBold» и необходимый размер. Ваш итоговый результат представлен на
рисунке далее.
Excel позволил нам быстро построить воронку подбора
кандидатов, не прибегая к сложным расчётам, но у этого подхода есть
существенный недостаток – вашу картинку может «сломать» другой пользователь или
вы сами захотите расширить исходную сводную таблицу, добавив новый столбец.
Вариантов много – исход один – надо всегда проверять, не затерлись ли формулы,
не уехали ли ссылки. Можно ли сразу все реализовать в единой сводной таблице и
больше не переживать об этом? Как «запихнуть» текст именно как текст в область
значений сводной таблицы и реализовать ровно тот же способ, но забыть навсегда
о прописывании отдельных формул где-то в стороне от сводной таблицы? Чтобы наша
черточка осталась черточкой, а не пересчиталась в число?
Это можно, но
использовать придется PowerPivot – надстройку для Excel. PowerPivot подключается отдельно в
параметрах Excel, в
надстройках COM и
доступенпользователем профессиональных
версий MicrosoftOffice (2010, 2013, 2016). У надстройки много преимуществ, и
одно из них (не главное, но очень приятное) – вы можете написать формулы,
результатом которых будет именно текст (не числовое значение), и выводя эту
формулу (меру языком powerpivot) в область значений вы
увидите именно текст. Попробуйте кто не знал и создайте меру:
Test for text:="Hellow
word"
А теперь
выведете ее в сводную таблицу, например, как тут:
Вы видите
куда ее «определили» в сводной таблице и что мы получили на выходе. Мы не увидели
ни одного числа, мы увидели именно текст. Именно эта особенность работы с powerpivotи даст возможность построить более «устойчивую» визуалку
для воронки подбора. Логика визуализации та же самая, что и в excel, просто теперь это становится элементом сводной
таблицы.
Что делаем:
1.Загружаем
исходные данные.
2. Создаем
таблицу дат. Очень сильно пригодится, если вы захотите гибко фильтровать отчет
по временным периодам. Он может быть создан рядом способов, в нашем примере был
использован код в PowerQuery (ещё одна надстройка Excel, позволяющая осуществлять наиболее эффективную подготовку
данных для последующей работы).
Пример создания календаря в Power Query (на английском) можно посмотреть здесь
1. Пишем
формулы для расчета мер на языке DAX.
Усложним
условия – если вакансия закрылась в январе или осталась активна на 31.01, то
выбирая в фильтре январь (или любой другой период), мы должны увидеть в воронке
все события по этой вакансии, даже если они случились в прошлом году. То есть
дата самого события (интервью, собеседование) здесь уже уходит на задний план.
Но тут у кого как поставлена задача, вариантов много.
Задачу
позволяют решить следующие формулы для каждого этапа воронки (приведена только первая, но они все есть в
прикрепленном файле). Формулы можно переписать гораздо более оптимально, но
в таком виде более понятна логика самого расчета.
Шаги
идентичны способу 2. Нам потребуется загрузить данные в PowerBI и создать календарь. В том случае, если вы выполнили Способ
2, то вы можете открыть ваш «xlsx» файл
через PowerBI и получить готовую модель со всеми таблицами и
мерами, останется только сверстать дашборд. Если нет, то понадобится написать
формулы для расчёта метрик по каждому этапу и это будут единственные меры, что
нам потребуются. PowerBI и PowerPivot использует один и тот же
язык DAX, соответственно формулы
будут аналогичными.
В PowerBI есть готовая диаграмма в виде воронки, в которую мы передаём
наши меры, и никаких дополнительных упражнений не требуется.
Ещё раз
посмотрим на полученный результат:
Заключение
Несмотря на
то, что задачу построения воронки подбора персонала нельзя отнести к глубокой
аналитической работе, тем не менее это повседневная необходимость для HR-руководителей, рекрутеров и специалистов
ответственных за подготовку отчётов в компании. Возможность самостоятельного
построения такой воронки существенно облегчает работу для них, а также может
стать первым шагом на пути решения уже более серьёзных аналитических задач, к
примеру, поиску ответа на вопрос: почему на данном этапе воронка приобретает
такой вид, а на следующем этапе иной?
Нами были представлены
три способа построения воронки подбора персонала, которые может использовать
каждый HR, в зависимости от удобства и
предпочтений. Может кому-то это будет полезно.
Всем, привет,
дорогие друзья аналитики и не только.
Часто
ли вам приходилось тратить уйму времени на переделку отчета, когда руководитель
просил показать его еще "вот
в таком разрезе" ? Используя
стандартные средства Excel на
переделку может уйти много времени, но это совершенно не обязательно.
Хочу
поделиться с вами тем, как можно использовать инструменты бизнес-аналитики в Excel - Power pivot и Power Query для анализа
текучести персонала. Использование этих мощных инструментов позволит вам
существенно сэкономить время, затрачиваемое на подготовку аналитики в любых
разрезах, имеющихся в исходных данных.
Ознакомиться
в деталях с тем, что такое Power Pivot, функциональный язык DAX, Power Query и скриптовый язык M вы
можете самостоятельно. Тут важно то, что, если вы хотите повысить свою
продуктивность как аналитика, освоение этих инструментов поможет вам
продвинуться в этом направлении. Ниже несколько ссылок на полезные источники:
Итак, в моем
распоряжении имеется следующий набор данных https://cloud.mail.ru/public/Ffce/Gev6hBqWE.
В файле отражены кадровые изменения (должность, подразделение, оклад,
руководитель, город, филиал, центр затрат, количество занимаемых ставок и др.)
по работникам за период с 2013 по 2016 годы. По одному работнику в таблице
может быть несколько строк, каждая из которых имеет свой период начала и
окончания действия. Периоды для одного работника не пересекаются. Также в крайних правых столбцах таблицы указаны причины увольнения и отношение компании к
увольнению (сожалеем или не сожалеем). Отношение компании указано в связи с
тем, что не все увольнения по собственному желанию являются нежелательной
текучестью.
На базе этих данных
я покажу как рассчитать среднесписочную численность, количество принятых и
уволенных, Коэффициент оборота по выбытию, Коэффициент текучести, Скользящую
среднюю текучесть за год. Итоговый файл со всеми формулами вы можете найти по
ссылке https://cloud.mail.ru/public/7zD9/ysPgHSYcg.
Работу над моделью
данных, в которой будут рассчитываться эти коэффициенты я построил в 2 шага:
Подготовительный -
создание календаря для Power pivot с помощью Power Query.
Основной - создание
формул, для расчета показателей текучести в Power Pivot.
В связи тем, что мы
собираемся проводить анализ показателей в динамике, нам необходим календарь.
Помимо собственно дат, он будет содержать ряд дополнительных столбцов, которые
мы сможем использовать при анализе. Например, рассчитать количество увольняющихся
в определенные дни недели или сравнить текучесть текущего и прошлого периода.
Первым делом
создадим новый лист Параметры, добавим на него таблицу Параметры, состоящую из
наименования параметра и значения.
Начало
и окончание периода я взял как начало первого года самого раннего события
имеющегося набора данных и окончание последнего года. Во избежание проблем
рекомендую при использовании календарей всегда захватывать год целиком.
Последний параметр "Язык" указывает для какой локализации
создавать календарь. Все вы знаете, что в разных странах могут использоваться
различные форматы записи дат. Более подробно можете ознакомиться здесь (https://ru.wikipedia.org/wiki/Календарная_дата)
Далее переходим на
вкладку Данные-Получить данные-Из других источников-Пустой запрос. В
открывшемся окне нажимаем кнопку Расширенный редактор, удаляем из него весь
текст и вводим следующий текст функции:
ParamRow = Table.SelectRows(ParamSource,
each ([Параметр]=ParameterName)),
Value=
if
Table.IsEmpty(ParamRow)=true
then
null
else
Record.Field(ParamRow{0},"Значение")
in
Value
После этого
наживаете Готово. Добавленная функция сохранится с именем Запрос1. Переименуем
во что-то более понятное. В моем случае я заменил название на fnGetParameter
Эта
функция необходима нам для того, чтобы получать из таблицы в Excel требуемых параметры.
Следующим
шагом создадим наш календарь. Для этого, не выходя из окна Power Query создадим еще один пустой запрос. Нажмите правой кнопкой мыши в левой области интерфейса и выберите пункт как на
скрине.
В
открывшемся окне снова удалим содержимое и далее вставим текст, скопированный
из файла Календарь PQ с параметрами задаваемыми из Excel.txt (https://cloud.mail.ru/public/vz7f/5Hygn66Q7). Созданный запрос
переименуем в Calendar.
Наш
календарь готов, и мы можем
переходить к его загрузке в Power Pivot. Для этого в интерфейсе Power Query нажмите "Закрыть и
загрузить-Закрыть и загрузить в". В следующем окне выберите "Создать только подключение" и в нижней части "Добавить
эти данные в модель данных"
Не
буду вдаваться в подробности описания кода Power Query.
Если возникнут вопросы, в части PQ
прошу задавать в
комментариях.
На
следующем шаге мы создадим непосредственно расчетные формулы в Power Pivot. Сначала перейдите на лист База, в
меню Excel перейдите на вкладку Power Pivot и нажмите добавить в модель данных,
после этого нажмите кнопку управление - откроется интерфейс Power pivot
На
листе Calendar добавьте столбец
УникальныйНомерДня. Выберите первую из ячеек столбца и введите формулу:
=COUNTROWS (
FILTER (
ALL ( 'Calendar' );
'Calendar'[Дата] <= EARLIER ( 'Calendar'[Дата] )
&& NOT (
MONTH ( 'Calendar'[Дата] ) = 2
&& DAY ( 'Calendar'[Дата] ) = 29
)
)
)
Этот столбец нам
впоследствии пригодится для расчета скользящей средней за год.
Далее
нам необходимо указать PP где у
нас указаны даты (непрерывный список дней). Для этого перейдите на вкладку
Конструктор -Пометить как таблицу дат. В открывшемся окне выберите наименование
столбца, в котором наш список дат. В нашем случае столбец так и называется
Дата.
Для
тех, кто знаком с Power Pivot скажу, что мы
не будем задавать связь между таблицами Calendar и Base в связи с расчетом
скользящей средней и ряда других формул.