惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

云风的 BLOG
云风的 BLOG
The GitHub Blog
The GitHub Blog
Y
Y Combinator Blog
博客园 - 三生石上(FineUI控件)
T
The Blog of Author Tim Ferriss
宝玉的分享
宝玉的分享
Hugging Face - Blog
Hugging Face - Blog
WordPress大学
WordPress大学
V
Visual Studio Blog
小众软件
小众软件
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
MongoDB | Blog
MongoDB | Blog
V
V2EX
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 【当耐特】
Microsoft Azure Blog
Microsoft Azure Blog
The Cloudflare Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Engineering at Meta
Engineering at Meta
L
LangChain Blog
Martin Fowler
Martin Fowler
GbyAI
GbyAI
博客园 - 司徒正美

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания
HR‑аналитика: почему ваши метрики врут (и как это заметить)
Ксения Зайцева · 2026-05-29 · via Все публикации подряд на Хабре

7 мин

5.5K

Меня зовут Ксения Зайцева и я старший бизнес‑аналитик в компании «ДАР». Я хотела бы поделиться кейсом, который поможет начинающим тимлидам заранее предусмотреть проблемы из разряда «вроде всё понятно, но что‑то не сходится».

В HR‑аналитике есть метрики, которые «должны считаться просто»: выбрать статус, взять дату, посчитать кандидатов. На практике такие истории иногда заканчиваются нулём, потом несколькими миллиардами, а потом неделей расследований — как вообще устроены данные и почему всё это работает.

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

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

Задача на старте выглядела несложной:

  • перевести дашборды в общий контур к другим дашбордам нашей системы

  • доработать витрины

  • немного изменить визуальное отображение, чтобы все смотрелось гармонично

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

Приключение на 20 минут, вошли и вышли?

С чего мы начали

Первое знакомство с дашбордами слегка охладило наш энтузиазм.

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

Этот код создавал промежуточные таблицы, технические поля, делал предрасчёты и считал всё на лету. Читать это было сложно — особенно нам, аналитикам, не самым большим экспертам по DAX.

Следующий шаг казался очевидным — если мы не можем быстро разобраться в логике, значит нужно просто спросить заказчиков, как именно должны считаться метрики в «идеальном мире».

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

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

Тем не менее логика казалась очевидной:

  • уникальные люди

  • уникальные вакансии

  • статус «Новый»

  • считаем по дням

  • агрегируем как сумму

На практике же всё оказалось немного сложнее.

Первая проверка данных

После этого мы решили сверить результаты с существующим дашбордом.

Написали скрипт для расчёта. Сначала классически получили ноль, потом — несколько миллиардов.

После пары исправлений и учета технических полей цифра стала похожа на правду — около 35 новых кандидатов в день для одного из предприятий.

На существующем дашборде мы увидели 40 и с облегчением выдохнули — почти сошлись! Подумаешь, дельта в 10%.

Дальше план был простой:

  • выгрузить список наших 35 кандидатов

  • отправить его заказчикам

  • найти потерянных пятерых

Но на этом этапе выяснилось кое‑что неожиданное.

Когда источник не помогает

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

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

Нам выгрузили такую таблицу, и моим любимым методом пристального взгляда быстро выяснилось, что:

  • даты в выгрузке могут быть неправильными (иногда расходились на сутки, иногда больше)

  • из‑за этого отбор по дате фильтрует не все, что нужно

  • использовать эту выгрузку для полноценной проверки почти невозможно

В итоге кандидатов для конкретной даты приходилось собирать буквально руками, но даже это не давало полной уверенности в результате. Довольно быстро стало понятно, что проблема не только в формуле, а в самих данных. Задача «пересчитать метрику» в какой‑то момент превратилась в попытку разобраться — а что вообще происходит в данных?

Что ломало метрику?

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

1. Даты.

На дашборде есть возможность фильтровать данные по произвольному периоду. При анализе кандидатов возникает классический вопрос: какую дату мы должны учитывать?

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

2. Особенности процесса.

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

3. Большое количество дублей.

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

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

Почему дашборд работал и не вызывал вопросов?

В какой‑то момент возник вопрос — почему старая версия дашборда не вызывала серьёзных вопросов?

Причин оказалось несколько.

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

  1. найти вакансию, которая подходит под все требования

  2. посмотреть всех кандидатов для нее

  3. повторить это десятки раз для всех вакансий

  4. повторить это в следующем месяце

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

Во‑вторых, дашборд содержал внутри себя очень сложную логику:

  • промежуточные таблицы

  • предрасчёты

  • технические поля

Скорее всего, когда‑то эта логика работала корректно, но со временем из‑за объёма данных и небольших изменений процесса начала давать сбои.

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

Что я вынесла из этой истории?

В аналитике есть знакомая многим ситуация — метрика, которая давно считается и никем не проверяется.

Она может выглядеть правдоподобно и не вызывать вопросов, но при этом скрывать внутри множество допущений:

  • особенности бизнес‑процесса

  • структуру данных

  • историю изменений

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

Показалось важным и еще одно наблюдение — не стоит полностью полагаться на описание метрики от заказчика.

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

Когда мы обсуждали показатель «количество найденных кандидатов», разговор шёл о том, как работает подбор:

  • когда кандидат считается найденным

  • какие этапы есть в процессе

  • что происходит дальше

Но в данных этот процесс отражается совсем иначе:

  • статусы могут ставиться не так, как ожидается

  • этапы могут пропускаться

  • один кандидат может быть связан с несколькими вакансиями

  • история изменений создаёт дубли

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

Что делать, если завтра вам нужно перепроверить «простую» метрику

Теперь у нас есть набор «проверь себя», к которому мы теперь возвращаемся почти в каждом похожем кейсе.

Во‑первых, не стоит ограничиваться словами — лучше сразу смотреть реальные данные. Если заказчик говорит «нам нужно считать новых кандидатов», полезно попросить показать несколько живых примеров в системе и посмотреть, как эти кандидаты на самом деле выглядят в данных. Часто уже на этом этапе появляются первые несоответствия.

Во‑вторых, имеет смысл посчитать метрику самым простым способом — например, вывести список кандидатов в Excel и посмотреть на результат. Отсортировать, найти выбросы, посмотреть на странные случаи — кандидатов с десятком вакансий, даты из будущего или неожиданные статусы. Такие аномалии обычно очень быстро указывают на проблемы в логике.

Отдельный вопрос — это уникальность. В HR почти всегда есть риск «двойного счёта», поэтому важно заранее понять, что именно мы считаем: людей или отклики. Один человек, который подался на несколько вакансий, — это один кандидат или несколько?

Не менее важны даты. Дата создания кандидата, дата изменения статуса, дата вакансии — все они дают разные результаты, и выбор «не той» даты может серьезно изменить все расчеты.

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

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

И если попытаться это как‑то сократить до одного правила, оно звучит примерно так:

если показатель кажется вам очевидным и очень простым, скорее всего, вы пока ещё не нашли пример, который все сломает.