Перейти к содержимому
На этой странице

DWH

Все темы Data Engineer

Что такое DWH?

DWH (Data Warehouse) - это специализированное хранилище данных, предназначенное для анализа и отчетности. Оно объединяет данные из различных источников в единое хранилище, где они структурированы и оптимизированы для аналитических запросов. DWH обеспечивает быстрый доступ к данным и поддерживает широкий спектр аналитических операций, таких как OLAP (Online Analytical Processing), отчетность и бизнес-анализ.


В чём отличие DWH от DataLake?

Отличие между хранилищем данных (DWH) и озером данных (Data Lake) заключается в подходе к хранению и обработке данных.

  1. DWH (Data Warehouse):

    • Структурированные данные.

    • Данные предварительно обработаны и согласованы для аналитических задач.

    • Предназначен для анализа и отчетности.

  2. Data Lake:

    • Неструктурированные и полуструктурированные данные.

    • Хранение “сырых” данных в их первоначальном виде без предварительной обработки.

    • Обеспечивает возможность анализа данных в различных форматах и их преобразования в более структурированные формы по мере необходимости.


Объясните архитектуру типичного хранилища данных (DWH).

Типичная архитектура хранилища данных включает следующие компоненты:

  1. ETL (Extract, Transform, Load): Процессы извлечения данных из различных источников, их трансформации и загрузки в хранилище данных.

  2. Data Storage: Централизованное хранилище для структурированных и неструктурированных данных. Обычно использует реляционные СУБД, колоночные базы данных или распределенные файловые системы.

  3. Data Mart: Подмножества данных, ориентированные на конкретные бизнес-процессы или отделы.

  4. OLAP Cubes: Многомерные структуры данных для анализа и агрегации данных.

  5. BI Tools: Инструменты бизнес-анализа для визуализации данных и создания отчетов.

  6. Metadata Management: Управление метаданными для обеспечения качества и целостности данных.


Каковы основные отличия между OLAP и OLTP системами?

Основные отличия между OLAP и OLTP:

  • OLAP (Online Analytical Processing): Ориентированы на сложный анализ данных и бизнес-аналитику. Работают с большими объемами данных, часто агрегируют и обрабатывают исторические данные.

  • OLTP (Online Transaction Processing): Ориентированы на выполнение транзакций в реальном времени. Обрабатывают небольшие объемы данных, часто обновляют данные, обеспечивают высокую скорость и надежность транзакций.


Какие ETL процессы вы использовали для загрузки данных в DWH?

Примерный ETL процесс включает:

  1. Extract (Извлечение): Извлечение данных из различных источников (реляционные базы данных, файлы CSV, API).

    • Использование JDBC для подключения к базам данных.

    • Использование API и REST для извлечения данных из веб-источников.

    • Чтение файлов CSV, JSON и Parquet.

  2. Transform (Трансформация): Преобразование данных для приведения к требуемому формату и структуре.

    • Очистка данных (удаление дубликатов, заполнение пропусков).

    • Преобразование типов данных.

    • Агрегация и обогащение данных.

    • Применение бизнес-правил.

  3. Load (Загрузка): Загрузка преобразованных данных в хранилище данных.

    • Использование JDBC для вставки данных в реляционные базы данных.

    • Загрузка данных в распределенные файловые системы (например, HDFS).

    • Загрузка данных в колоночные базы данных (например, Amazon Redshift).


Чем факты отличаются от измерений в DWH?

Таблица фактов фиксирует событие или измерение процесса в выбранном grain и содержит меры и внешние ключи. Измерения описывают участников и контекст, по которым фильтруют и группируют: клиента, товар, дату. Grain объявляют до выбора столбцов, иначе появляются дубли и неверные суммы. Меры бывают аддитивными, полуаддитивными и неаддитивными; например, остаток нельзя бездумно суммировать по времени. Grain и временную семантику фиксируют до реализации, иначе технически корректный join даст неверную бизнес-метрику.


Как типы SCD сохраняют историю измерений?

SCD 1 заменяет значение и не хранит историю. SCD 2 добавляет новую версию строки с surrogate key, интервалом действия и признаком текущей записи, сохраняя состояние на дату. SCD 3 держит ограниченное число прежних значений в дополнительных столбцах. Тип выбирают по бизнес-вопросу: нужна ли реконструкция прошлого, аудит или только актуальное состояние. SCD 2 требует непересекающихся интервалов и корректного join по времени факта.


Зачем разделять Staging и Data Mart?

Staging принимает сырой снимок или поток с минимумом необратимых преобразований, фиксирует партию и позволяет повторить очистку без нового чтения источника. Data Mart публикует данные в бизнес-grain, с согласованными метриками и SLA для конкретных потребителей. Разделение упрощает аудит и backfill: ошибка витрины не требует заново извлекать источник, а сырой слой не становится пользовательским контрактом. Grain и временную семантику фиксируют до реализации, иначе технически корректный join даст неверную бизнес-метрику.


Чем витрина для BI отличается от датасета для ML?

BI-витрина обычно оптимизирована под устойчивые метрики, агрегаты, понятные измерения и интерактивные запросы. ML-датасет связывает признаки с labels на корректный момент времени, чтобы исключить leakage, и должен воспроизводиться по версии данных и кода. Для online inference добавляются freshness и согласованность offline/online значений. Поэтому один физический источник возможен, но grain, SLA и проверки различаются. Grain и временную семантику фиксируют до реализации, иначе технически корректный join даст неверную бизнес-метрику.

Вопросы и ответы

Не нашли ответ? Напишите мне в чат. Я делаю Шпаргалку и сам отвечаю на сообщения. Расскажите, что не работает или чего вам не хватает. Может, смогу сразу взять это в работу.

Откуда взяты вопросы?

Из реальных собеседований. Основой подборки стал опыт Вадима Новосёлова: он проходил интервью и записывал вопросы. Подробнее о материалах.

Насколько эти вопросы актуальны?

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

На какой уровень рассчитана подборка?

Мы проходили собеседования на вакансии уровня Middle+, а иногда и на Senior-позиции. Вопросы из этих интервью вошли в подборку. Направления работы: Data Engineer, ETL-разработчик. Глубина обсуждения зависит от вакансии: будь готов объяснить основную идею, привести практический пример и разобрать ограничения и альтернативы решения.

Этот вопрос точно будет на моём собеседовании?

Гарантии нет: набор вопросов зависит от компании, задач команды, уровня вакансии и самого интервьюера. Эти вопросы уже встречались на реальных собеседованиях, но на твоём интервью ту же тему могут проверить другой формулировкой, практической задачей или обсуждением твоего опыта. Используй подборку, чтобы разобраться в теме: объясняй идею своими словами, приводи примеры и готовься обсудить ограничения и альтернативы решения. Так будет проще ответить и на знакомый вопрос, и на неожиданные уточнения.