Привет, Хабр! Меня зовут Денис, я аналитик в Юнион — системе автоматизации подбора персонала. Как и в любой сфере, куда внедряется автоматизация, возникает необходимость анализировать данные. В подборе персонала это нужно, чтобы оценивать эффективность рекрутинга, отслеживать ключевые метрики и принимать решения на основе фактов, а не ощущений.

В этом году мы решили масштабную задачу — перенесли аналитику подбора из внутреннего сервиса в Apache Superset. В результате новая платформа значительно расширила наши возможности и наших клиентов в построении аналитики: теперь отчеты могут гибко настраиваться, работать с большим объемом данных и использовать ролевую модель Юнион.

В этой статье я кратко расскажу про Apache Superset, в целом про аналитику подбора, причины и процесс нашего переноса отчетов в новый BI-инструмент, а также поделюсь полезными лайфхаками, которые помогут сэкономить время при работе с дашбордами.

Хочу сразу уточнить: до этого я не работал с BI-инструментами, и Superset стал для меня первым опытом — причём очень положительным. Благодаря тому, что я уже давно использую SQL, работаю с таблицами и строю визуализации в Excel, освоить Superset мне удалось достаточно быстро.

Что такое аналитика подбора, какая она бывает и зачем нужна

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

Чтобы извлекать пользу из данных по подбору нужно определиться с отслеживаемыми показателями. Выделю основные, которые дают наиболее общую и полноценную картину по подбору:

  • Движение по воронке подбора и конверсия

  • Источники привлечения кандидатов

  • Отказы, их категории и причины

  • Время на этапах воронки

  • Сроки и стоимость закрытия вакансий и позиций

  • Эффективность рекрутеров

  • Удовлетворенность подбором

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

Движение по воронке подбора и конверсия

  • Что включает в себя? Метрика отражает количество кандидатов на каждом этапе воронки подбора — от первого контакта до выхода на работу. Позволяет анализировать как общий поток кандидатов в системе, так и динамику по конкретной вакансии или команде.

  • Как рассчитывается? Среди вариантов расчета конверсии можно выделить: конверсию от первого этапа воронки (количество кандидатов на этапе Х / количество кандидатов на первом в воронке этапе) и конверсию от предыдущего этапа воронки (количество кандидатов на этапе Х по очередности / количество кандидатов на этапе Х-1 по очередности).

  • Зачем нужна? Этапы воронки с количеством кандидатов показывают общую картину подбора. А конверсии между этапами позволяет выявить "узкие места" в воронке, на которых "теряются" кандидаты.

Источники привлечения кандидатов

  • Что включает в себя? Метрика отражает количество кандидатов по источникам подбора. Показывает общий поток кандидатов по источникам и их эффективность.

  • Как рассчитывается? Рассчитывать эффективность можно, как количество кандидатов, принятых на вакансию от общего количества кандидатов в системе по этом источнику подбора.

  • Зачем нужна? Этапы воронки с количеством кандидатов отражает общую картину подбора по источникам кандидатов и позволяет понять из каких источников строится воронка. Эффективность источников показывает из каких источников кандидаты закрывают позиции.

Отказы, их категории и причины

  • Что включает в себя? Комплекс показателей, отражающих отказы кандидатов по этапам воронки, категориям и конкретным причинам. Показывает, на каких стадиях и по каким причинам кандидаты выбывают из процесса подбора.

  • Зачем нужна? Позволяет выявить "узкие места" в воронке. Например, если кандидаты часто попадают в отказ на этапе "Резюме у заказчика" с причиной "не подходит по опыту", это указывает на некачественный сорсинг или несоответствие формулировок вакансии реальным требованиям. Анализ таких данных помогает корректировать процессы, улучшать коммуникацию с заказчиками и повышать точность подбора.

Время на этапах воронки

  • Что включает в себя? Метрика охватывает расчет среднего времени, которое кандидаты проводят на каждом этапе воронки подбора, включая статусы внутри этапов — например, время от отправки резюме заказчику до получения обратной связи, или время ожидания собеседования после согласования дат.

  • Зачем нужна? Позволяет выявить "узкие места", где процесс подбора замедляется. Например, если кандидаты длительное время находятся в статусе «На согласовании» у заказчика, это указывает на задержки в принятии решений со стороны бизнеса. Анализ времени помогает определить, кто именно затягивает процесс — рекрутер, интервьюер, HR-подразделение или сама система согласований. Это основа для оптимизации сроков закрытия вакансий и повышения качества взаимодействия с кандидатами.

Сроки и стоимость закрытия вакансий и позиций

  • Что включает в себя? Метрика включает расчет двух ключевых показателей: времени, затраченного на закрытие вакансии, и совокупной стоимости этого процесса. Время может измеряется в рабочих днях — от момента открытия вакансии до выхода кандидата на работу. Стоимость может рассчитываться исходя из затраченного времени, количества проведенных интервью и оплаты тарифов работных сайтов.

  • Зачем нужна? Позволяет оценить эффективность работы рекрутеров, сравнить результативность подбора по разным направлениям, вакансиям или командам. Анализ сроков и стоимости помогает выявлять перерасходы, оптимизировать бюджет, принимать решения о привлечении внешних ресурсов или автоматизации процессов.

Эффективность рекрутеров

  • Что включает в себя? Метрика охватывает комплекс показателей, отражающих результативность работы рекрутера: количество закрытых вакансий за период, средние сроки закрытия, стоимость найма, конверсия по этапам воронки, качество нанятых сотрудников (удержание на 6–12 месяцев), количество кандидатов в процессе, процент отказов оффера. Также может включать субъективные оценки от заказчиков и обратную связь от кандидатов.

  • Зачем нужна? Позволяет объективно оценить производительность и эффективность работы рекрутера, выявить лучших специалистов, определить зоны для развития. Данные используются для постановки KPI, планирования нагрузки, а также для анализа и оптимизации общей стратегии подбора.

Удовлетворенность подбором

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

  • Зачем нужна? Позволяет оценить качество рекрутингового опыта, который формирует бренд работодателя. Высокая удовлетворенность снижает риск отказов оффера, повышает лояльность к компании и способствует удержанию. Анализ отзывов помогает выявлять системные проблемы в процессе и улучшать взаимодействие между всеми сторонами.

В идеале аналитика должна включать вышеописанные метрики и показатели с возможностью детализировать и группировать информацию по рекрутерам, заказчикам, отделам и т.д.

Что такое Superset и как он работает

Apache Superset — это платформа для исследования и визуализации данных с открытым исходным кодом, которая позволяет создавать интерактивные дашборды и отчеты на основе различных источников данных.

Superset поддерживает огромное количество типов визуализаций — от простых графиков до сложных аналитических виджетов. Для дашбордов по подбору мы в основном использовали: столбчатые и круговые диаграммы, а также сводные и детализированные таблицы.

Типы диаграмм в Superset
Типы диаграмм в Superset

Вкратце про то как работать с Superset. Основные сущности в Superset:

  • Датасет — источник данных: таблица или SQL-запрос, с которой вы работаете.

  • Чарт — графическое представление данных: график, диаграмма, таблица и т. п. Строится на основе датасета.

  • Дашборд — это страница, где вы объединяете чарты и управляете ими через общие фильтры.

Создание дашборда в Superset включает в себя следующие шаги:

  1. Вы подключаете Superset к базе данных

  2. Создаете датасет

  3. Создаёте основе датасета чарты

  4. Собираете их в дашборд

Примечание. Создание графиков и дашбордов в Superset с нуля требует базовых знаний SQL. Для рекрутеров, которые активно работают в системе и хотят строить собственные визуализации, это может стать серьёзным барьером. Им остаётся либо пользоваться готовыми датасетами, подготовленными командой, либо осваивать SQL самостоятельно.

В то же время в компаниях, где есть сотрудники с навыками работы с данными — например, аналитики, инженеры данных или разработчики, — Superset раскрывается по-настоящему: он превращается в мощный инструмент для глубокой аналитики и наглядной визуализации.

Для более глубокого погружения рекомендую ознакомиться со статьей на Хабре, посвящённой работе с Apache Superset: там подробно разобраны описываемые мной шаги по созданию дашборда.

Как выглядела отчётность в Юнион до Superset и предпосылки перехода

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

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

Как выглядел графический отчет "Воронка подбора" в Юнион до Superset
Как выглядел графический отчет "Воронка подбора" в Юнион до Superset

Со временем стало ясно, что текущие графические отчёты не дают конкурентных преимуществ на рынке — они ограничены по функциональности и визуальным возможностям. В связи с этим было принято решение интегрировать Юнион с Apache Superset и перенести всю аналитику по подбору в эту платформу.

Перед выбором новой BI-платформы были сформулированы ключевые требования и проведен сравнительный анализ существующих решений. Мы рассматривали три BI-платформы: Metabase, Apache Superset и Redash.

Предпочтение было отдано Apache Superset — он лучше всего соответствовал нашим требованием к аналитике подбора благодаря следующим преимуществам:

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

  • Быстрые кросс-фильтры — мгновенная смена фильтров по клику на любой элемент визуализации без перезагрузки страницы.

  • Экспорт в популярные форматы — данные и графики можно сохранить как CSV, Excel, PDF, PNG.

  • Простое создание отчётов и визуализаций — даже без знания SQL: достаточно выбрать датасет и настроить отображение через понятный интерфейс. *Применимо для создания графиков из предустановленных датасетов.

  • Текстовые блоки на дашборде с поддержкой HTML — позволяют встраивать пояснения, инструкции или контекстную информацию, а также оформлять текст с помощью ссылок, стилей и других HTML-элементов прямо внутри дашборда.

  • Глубокая кастомизация под заказчика — благодаря открытому исходному коду и модульной архитектуре Superset легко адаптируется под специфические требования.

Именно этот набор функций сделал Apache Superset оптимальным решением для интеграции в Юнион.

Как мы перенесли аналитику Юнион в Superset

Для интеграции Superset в Юнион мне необходимо было выполнить следующие задачи:

  1. Сформировать SQL-запросы для датасетов на основе заданных требований к отчётам.

  2. Настроить чарты и собрать дашборды в Superset, соответствующие бизнес-потребностям.

В нашей команде нет отдельной роли аналитика данных — часть этих функций выполняю я. Подготовка SQL-запросов стала для меня значительным стимулом к росту в аналитике данных. В процессе работы пришлось глубже разобраться с устройством сложных запросов: эффективными JOIN'ами, подзапросами, CTE, агрегациями и оптимизацией производительности.

Создание визуализаций и дашбордов также стало важным этапом развития. Это был мой первый практический опыт работы с BI-инструментом в профессиональной среде. Я освоил основы Superset — от настройки графиков до компоновки дашбордов и управления фильтрами.

С какими проблемами столкнулись

В процессе переноса отчётности не обошлось без сложностей. Встречалось множество мелких вопросов, но одной из ключевых проблем стала производительность дашбордов.

Производительность дашбордов

При тестировании производительности дашбордов столкнулись с тем, что датасеты строились на основе тяжёлого SQL-запроса с JOIN-ов и CTE. На тестовой базе данных объемом около 500 тысяч кандидатов загрузка занимала более минуты. Кэширование Superset, конечно, спасало нас, но время загрузки при первом открытии нас не устраивало.

Решение: оптимизировали запрос — сократили количество JOIN'ов, особенно с большими таблицами, и вынесли основную логику в предварительно подготовленную таблицу-"скелет" в БД. Эта таблица содержит все необходимые данные для дашбордов и обновляется раз в час с помощью внутреннего инструмента.

В результате время отклика дашбордов сократилось до нескольких секунд, а нагрузка на базу значительно уменьшилась. Причем удалось сохранить возможность кастомизации отчетов.

Результаты переноса отчетности в Superset

В Юнион сейчас у нас есть несколько дашбордов, которые отвечают на следующие вопросы:

1. Воронка подбора

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

2. Источники привлечения: из каких источников

Дашборд дает понимание из каких источников формируется воронка и из каких источников приходят кандидаты, которые закрывают вакансии.

3. Категории и причины отказов

Дашборд показывает по каким причинам и категориям этих причин кандидаты выходят из воронки подбора. Позволяет отследить на каких этапах и по каким причинам кандидаты попадают в "отказ".

4. Срок закрытия вакансии

Дашборд включает в себя две вкладки, отражающие эффективности закрытия вакансий: расчеты по срокам закрытия позиций/вакансий и время на этапах с соблюдением нормативных значений (SLA) на этих этапах.

4.1. Срок закрытия вакансии

Позволяет отследить среднее время закрытия позиции в вакансии от даты открытия и от даты прикрепления с возможностью фильтровать данные по отделу, участнику вакансии и т.д.

4.2. Нормативные значения по срокам (SLA)

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

Итоги интеграции с Superset

Пора подвести итоги. В результате выполнения этой задачи я впервые поработал с BI-инструментом, улучшил свои знания в SQL и в визуализации данных, а наш продукт Юнион получил эффективный и гибкий инструмент аналитики данных по подбору.

Перенос Superset существенно улучшил наши визуальные отчеты: теперь по ним проще искать данные, делать кастомные фильтры, использовать кросс-фильтры и использовать сложные расчеты в графиках.

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

Полезные лайфхаки по работе с Superset

  • Как перевести Superset на русский язык? Добавить в superset_config.py параметр русского языка и настроить его по умолчанию. Таким образом большая часть кнопок и надписей буду отображены на русском языке.

LANGUAGES = {
    "ru": {"flag": "ru", "name": "Русский"},
    "en": {"flag": "us", "name": "English"}    
}

BABEL_DEFAULT_LOCALE = "ru"
  • Шаблонов фильтров в Superset нет, но вы можете поделиться настроенными фильтрами по ссылке. Как? Просто настройте нужные фильтры прямо в дашборде, а затем скопируйте и отправьте ссылку — любой, кто откроет дашборд по этой ссылке, увидит точно такие же параметры фильтрации, как будто вы передали ему готовый «шаблон» одним кликом.

  • В Superset есть особенность настройки фильтров: при выборе типа интервала "За последний период" текущая дата не включается в рассматриваемый диапазон, что может быть неудобно или нелогично для некоторых пользователей. Для включения текущей даты вы можете перенастроить фильтр по примеру ниже: в левом поле можно выставлять необходимый период (в днях от текущего дня).

Комментарии (0)