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

ETL

Все темы Data Engineer

ETL - с какими инструментами работали?

ETL (Extract, Transform, Load) - это процесс извлечения данных из источников, их преобразования и загрузки в целевую базу данных или хранилище данных. Некоторые из популярных инструментов ETL включают Apache NiFi, Talend, Informatica PowerCenter, Microsoft SQL Server Integration Services (SSIS), Apache Airflow, AWS Glue и Google Cloud Dataflow. каждый из них имеет свои особенности и предоставляет различные функции для автоматизации и управления процессом ETL.


Какие платформы ETL вы знаете?

Некоторые из популярных платформ ETL включают Apache NiFi, Talend, Informatica PowerCenter, Microsoft SQL Server Integration Services (SSIS), Apache Airflow, AWS Glue и Google Cloud Dataflow. Каждая из этих платформ предоставляет средства для извлечения, преобразования и загрузки данных из различных источников в целевые системы хранения.


Какие этапы включает в себя процесс ETL?

Процесс ETL (Extract, Transform, Load) включает три основных этапа:

  1. Извлечение (Extract):

    • Сбор данных из различных источников, таких как базы данных, файлы, API и др.

    • Удостоверение, что данные извлекаются корректно и полностью.

  2. Трансформация (Transform):

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

    • Преобразование данных в нужный формат.

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

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

  3. Загрузка (Load):

    • Загрузка преобразованных данных в целевое хранилище данных.

    • Обеспечение целостности и согласованности данных в хранилище.


Как вы справляетесь с проблемой качества данных в процессе ETL?

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

  1. Очистка данных:

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

    • Корректировка ошибок и приведение данных к единому формату.

  2. Валидация данных:

    • Проверка данных на соответствие заданным правилам и требованиям.

    • Использование автоматических тестов и проверок для выявления аномалий.

  3. Мониторинг и логирование:

    • Настройка систем мониторинга и логирования для отслеживания качества данных.

    • Анализ логов и метрик для своевременного обнаружения и устранения проблем.

  4. Использование ETL-инструментов с функциями контроля качества:

    • Использование ETL-инструментов, таких как Apache NiFi, Talend, Informatica, которые поддерживают функции контроля качества данных.

Какие инструменты ETL вы используете и почему?

Используемые инструменты ETL включают:

  1. Apache NiFi:

    • Преимущества: Легкость настройки потоков данных, гибкость и масштабируемость.

    • Использование: Реализация сложных ETL-процессов и интеграция различных источников данных.

  2. Talend:

    • Преимущества: Богатый набор коннекторов, визуальный интерфейс для проектирования ETL-процессов.

    • Использование: Универсальное решение для ETL-задач и интеграции данных.

  3. Informatica:

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

    • Использование: Большие корпоративные проекты с высокими требованиями к надежности и производительности.

  4. Apache Airflow:

    • Преимущества: Управление сложными ETL-пайплайнами, гибкость и возможность интеграции с различными системами.

    • Использование: Автоматизация и оркестрация ETL-процессов.


Как сделать ETL-процесс идемпотентным?

Идемпотентный ETL дает один итог при повторе того же интервала. Для этого используют устойчивый бизнес-ключ или event ID, MERGE/UPSERT, атомарную замену партиции и checkpoint, который фиксируется только после успешной публикации. Частично записанный результат не должен считаться завершенным. Свойство проверяют практично: запускают один вход дважды и сравнивают строки, агрегаты и побочные эффекты. Повторный запуск той же партии и сбой посередине входят в приемку, иначе восстановление остается непроверенным.


Как безопасно пережить изменение схемы источника?

Сначала изменение схемы обнаруживают и классифицируют: добавление nullable-поля обычно совместимее удаления, переименования или сужения типа. Контракт и владельцы показывают затронутых потребителей. Несовместимое изменение проводят в несколько фаз: добавить новую форму, научить читателей принимать обе, выполнить backfill, переключить запись и лишь затем удалить старое. На каждом этапе проверяют данные и мониторят ошибки разбора и пропуски. Повторный запуск той же партии и сбой посередине входят в приемку, иначе восстановление остается непроверенным.


Как снизить нагрузку ETL на источник?

Основной прием: читать только изменения по надежному watermark или CDC, а не сканировать источник целиком. Запросы делают пакетами, поддерживают нужными индексами и ограничивают частоту и параллелизм. Аналитическое чтение по возможности направляют на реплику, учитывая ее lag, и запускают в согласованное окно. Таймауты, метрики нагрузки и возможность остановить pipeline важнее фиксированной рекомендации по размеру batch. Повторный запуск той же партии и сбой посередине входят в приемку, иначе восстановление остается непроверенным.


Чем dbt отличается от хранимых процедур?

dbt компилирует модели и зависимости в SQL и выполняет их в целевом хранилище; рядом хранит тесты, документацию и lineage в коде проекта. Хранимая процедура живет в СУБД, может содержать процедурную логику и теснее связана с ее диалектом и правами. dbt удобен для управляемых преобразований наборами данных, процедура для атомарной серверной операции. Их можно сочетать, явно фиксируя границу ответственности. Повторный запуск той же партии и сбой посередине входят в приемку, иначе восстановление остается непроверенным.


Как проектировать инкрементальную загрузку в OLAP?

Инкремент хранит подтвержденный watermark, но читает с перекрытием, если события могут опаздывать. Партия получает стабильный ключ, дедуплицируется и пишется batch-операцией через MERGE, замену партиции или append с последующей консолидацией. Watermark продвигают только после атомарной публикации и проверок. Стратегия зависит от OLAP-системы: некоторые предпочитают immutable inserts и фоновое слияние вместо частых row updates. Повторный запуск той же партии и сбой посередине входят в приемку, иначе восстановление остается непроверенным.


Как CDC помогает мигрировать без долгого простоя?

Сначала делают согласованный initial snapshot, запоминая позицию журнала. CDC затем переносит все изменения после этой позиции в порядке, достаточном для ключа или транзакции. Источник и приемник работают параллельно, пока lag не станет приемлемым; перед cutover сверяют counts, hashes и бизнес-агрегаты. Переключение имеет явную точку, период наблюдения и план возврата, а consumer CDC должен быть идемпотентным. Повторный запуск той же партии и сбой посередине входят в приемку, иначе восстановление остается непроверенным.


Как вести инкрементальные загрузки в S3?

Объекты S3 лучше считать immutable: каждую партию пишут в новый префикс или партицию с уникальным run ID. Manifest или metadata table перечисляет опубликованные файлы, а watermark продвигается после их проверки; одним rename атомарность каталогов S3 не получают. Повторный запуск заменяет manifest либо дедуплицирует ключи. Периодическая compaction объединяет мелкие файлы без изменения уже опубликованного снимка. Повторный запуск той же партии и сбой посередине входят в приемку, иначе восстановление остается непроверенным.


Как организовать миграцию витрины между платформами?

Сначала инвентаризируют SQL, зависимости, расписание, grain и владельцев метрик, отдельно фиксируя различия диалектов SAS и Greenplum. Новую витрину считают параллельно на одинаковых срезах, сверяют row counts, ключи, суммы и известные исключения. Backfill делают идемпотентным. Cutover переключает потребителей по плану, после периода наблюдения; rollback возвращает старую публикацию без потери поступивших данных. Повторный запуск той же партии и сбой посередине входят в приемку, иначе восстановление остается непроверенным.


Где запускать проверки Great Expectations или Soda?

Great Expectations или Soda запускают после приема, после значимых преобразований и перед публикацией набора. Правила являются версионированным data contract: схема, null, uniqueness, ranges и сверки. Нарушения делят на blocking и warning по влиянию, результаты сохраняют с run ID и примерами. Инструмент не заменяет мониторинг freshness и объема; проверки должны укладываться в SLA и не сканировать весь lake без необходимости. Повторный запуск той же партии и сбой посередине входят в приемку, иначе восстановление остается непроверенным.


Как версионировать изменения схемы через Liquibase?

Liquibase хранит упорядоченный changelog из changeSet с устойчивыми id, author и путем файла. Примененные наборы и checksums записываются в служебную таблицу, поэтому один changeSet не редактируют задним числом, а добавляют новый. CI проверяет changelog, deploy применяет его один раз. Rollback нужно проектировать и тестировать отдельно: потерю данных или несовместимый type change автоматически обратить нельзя. Повторный запуск той же партии и сбой посередине входят в приемку, иначе восстановление остается непроверенным.

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

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

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

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

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

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

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

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

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

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