DWH-аналитик отвечает за то, чтобы данные из разных систем превратились в понятное и надёжное хранилище. На собеседовании проверяют не набор сокращений, а способность проследить весь путь данных: от источника до витрины и SQL-запроса. Ниже мы собрали правильные ответы на основные вопросы реального интервью без личных данных участников.
Что такое DWH и какие слои в нём бывают?
DWH, или Data Warehouse, — это хранилище согласованных данных для аналитики и отчётности. Данные приходят из нескольких источников, проходят очистку и преобразование, а затем становятся доступны потребителям в единой модели.
Обычно путь выглядит так:
- Сырые данные попадают в staging-слой почти без изменений.
- В детальном слое значения очищаются, приводятся к общим справочникам и правилам.
- Витрины собирают готовые срезы под продажи, маркетинг, финансы или другую область.
Витрина отличается от отчёта: витрина хранит подготовленные данные, а отчёт показывает их пользователю. Data Lake чаще сохраняет большие объёмы данных ближе к исходному виду. Lakehouse объединяет свойства озера и управляемого аналитического хранилища.
Как работают Hadoop, Greenplum, MPP и шардирование?
Hadoop — экосистема для распределённого хранения и обработки данных, а HDFS — её файловая система. В HDFS метаданными управляет NameNode, сами блоки хранят DataNode. Документация Apache отдельно подчёркивает высокую пропускную способность и работу с крупными наборами данных.
Greenplum — аналитическая СУБД на основе PostgreSQL с архитектурой MPP. Координатор разбивает запрос на части, а сегменты выполняют их параллельно. Скорость зависит от ключа распределения: перекос данных заставит один узел работать дольше остальных.
Шардирование делит данные между узлами. Горизонтальное шардирование распределяет строки, например по customer_id; вертикальное — разносит группы столбцов. Параллельная система одновременно выполняет части одной работы, а распределённая размещает вычисления и данные на независимых машинах. Эти свойства могут сочетаться.
Чем отличаются звезда, снежинка и Data Vault?
В звезде таблица фактов связана напрямую с таблицами измерений. Такая модель понятна аналитикам и даёт короткие запросы. В снежинке измерения дополнительно нормализованы: повторов меньше, но связей и JOIN становится больше.
В центре находятся измеримые события, вокруг — контекст для фильтрации и группировки. Источник: Microsoft Learn.
В Data Vault данные разделяют на хабы с бизнес-ключами, линки со связями и сателлиты с описательными атрибутами и историей. Якорное моделирование тоже рассчитано на изменения схемы, но использует собственный набор сущностей. На интервью не нужно доказывать, что одна модель всегда лучше: назовите объём изменений, требования к истории и удобство потребителей.
Чем ETL отличается от ELT и как хранить историю?
В ETL данные преобразуются до загрузки в целевое хранилище, а в ELT — уже внутри него. Microsoft описывает выбор через возможности целевой системы и место выполнения тяжёлых преобразований.
Для истории измерений часто применяют SCD:
- SCD1 перезаписывает значение и не хранит прошлое состояние;
- SCD2 добавляет новую строку с периодом действия версии;
- SCD3 хранит ограниченное число состояний в отдельных полях.
Snapshot фиксирует состояние набора на конкретный момент. Инкремент содержит только новые или изменившиеся данные после предыдущей загрузки. При миграции мы сначала фиксируем контрольные суммы и число строк, переносим тестовую часть, сравниваем результаты, затем переключаем поток и повторяем проверки на полном объёме.
Как отвечать на SQL-задачи про NULL и оконные функции?
Сначала определите ожидаемый результат запроса, затем проверяйте синтаксис и типы. Частые ошибки из интервью: неоднозначное имя столбца после JOIN, сравнение через = NULL вместо IS NULL, неверное число аргументов функции и сравнение несовместимых типов.
RANK() оставляет пропуски после одинаковых значений, а DENSE_RANK() — нет. Это поведение зафиксировано в документации PostgreSQL. Агрегаты обычно игнорируют NULL, но COUNT(*) считает все строки.
SELECT
employee_id,
salary,
RANK() OVER (ORDER BY salary DESC) AS rank_with_gaps,
DENSE_RANK() OVER (ORDER BY salary DESC) AS rank_without_gaps
FROM employees;
Если две зарплаты делят первое место, следующий RANK() будет равен трём, а DENSE_RANK() — двум. На собеседовании полезно не только назвать разницу, но и вручную показать результат на трёх строках.
Итог: получил ли кандидат оффер?
Да, фактический результат раскрыт: кандидат получил оффер на 265 000 рублей. Ответы были неровными: базовые понятия хранилищ и SQL знакомы, но в распределённых системах и моделировании не везде хватало глубины. При этом кандидат смог поддерживать разговор, отвечал на большую часть вопросов и показал достаточную основу для роли.
Мы бы перед следующим интервью отдельно повторили MPP, различия архитектур и проверку SQL-запросов. Сделать это можно в тренажёре собеседований ЮНИКОД, а если нужен полный маршрут от обучения до трудоустройства — посмотреть программу «Оффер под ключ».
Источники
частые вопросы
Короткие ответы
Нужно ли DWH-аналитику программировать на Python?
Для старта важнее уверенный SQL, понимание баз данных и моделей хранилища. Python расширяет возможности, но не заменяет основную базу профессии.
Чем DWH-аналитик отличается от обычного аналитика данных?
DWH-аналитик проектирует хранение, слои и витрины данных. Аналитик данных чаще использует готовые наборы, чтобы отвечать на бизнес-вопросы.
Как тренировать SQL перед собеседованием?
Решайте задачи на JOIN, NULL, оконные функции и поиск ошибок. После каждого решения объясняйте, какой набор строк вернёт запрос и почему.


