ETL
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.
Ссылки для изучения
Примеры хороших ответов из реальных собеседований
- Публичное собеседование Data Engineer в X5 Tech · 7:37–9:50Техническое собеседование · Ответ кандидата
Пример ответа об опыте с Talend и самописным ETL. Инструменты связаны с конкретными задачами переноса данных и построения отчётов.
Какие платформы ETL вы знаете?
Некоторые из популярных платформ ETL включают Apache NiFi, Talend, Informatica PowerCenter, Microsoft SQL Server Integration Services (SSIS), Apache Airflow, AWS Glue и Google Cloud Dataflow. Каждая из этих платформ предоставляет средства для извлечения, преобразования и загрузки данных из различных источников в целевые системы хранения.
Ссылки для изучения
Примеры хороших ответов из реальных собеседований
- Проваленное собеседование на аналитика данных | Компания BetCore · 19:36–20:07Разбор интервью · Ответ кандидата
Кандидат рассказывает об Airflow DAG для автоматизированной ежедневной или еженедельной выгрузки таблиц.
Какие этапы включает в себя процесс ETL?
Процесс ETL (Extract, Transform, Load) включает три основных этапа:
-
Извлечение (
Extract):-
Сбор данных из различных источников, таких как базы данных, файлы, API и др.
-
Удостоверение, что данные извлекаются корректно и полностью.
-
-
Трансформация (
Transform):-
Очистка данных (удаление дубликатов, обработка пропусков).
-
Преобразование данных в нужный формат.
-
Агрегация и обогащение данных.
-
Применение бизнес-правил.
-
-
Загрузка (
Load):-
Загрузка преобразованных данных в целевое хранилище данных.
-
Обеспечение целостности и согласованности данных в хранилище.
-
Ссылки для изучения
Как вы справляетесь с проблемой качества данных в процессе ETL?
Для обеспечения качества данных в процессе ETL используются следующие методы:
-
Очистка данных:
-
Удаление дубликатов и обработка пропусков.
-
Корректировка ошибок и приведение данных к единому формату.
-
-
Валидация данных:
-
Проверка данных на соответствие заданным правилам и требованиям.
-
Использование автоматических тестов и проверок для выявления аномалий.
-
-
Мониторинг и логирование:
-
Настройка систем мониторинга и логирования для отслеживания качества данных.
-
Анализ логов и метрик для своевременного обнаружения и устранения проблем.
-
-
Использование ETL-инструментов с функциями контроля качества:
- Использование ETL-инструментов, таких как Apache NiFi, Talend, Informatica, которые поддерживают функции контроля качества данных.
Ссылки для изучения
Примеры хороших ответов из реальных собеседований
- Senior Python-собеседование: GIL, Kafka и ETL · 1:37:20–1:40:45Собеседование · Ответ кандидата
Кандидат описывает raw-слой, автоматические тесты, мониторинг аномалий, алерты и очередь для проблемных записей.
Какие инструменты ETL вы используете и почему?
Используемые инструменты ETL включают:
-
Apache NiFi:-
Преимущества: Легкость настройки потоков данных, гибкость и масштабируемость.
-
Использование: Реализация сложных ETL-процессов и интеграция различных источников данных.
-
-
Talend:-
Преимущества: Богатый набор коннекторов, визуальный интерфейс для проектирования ETL-процессов.
-
Использование: Универсальное решение для ETL-задач и интеграции данных.
-
-
Informatica:-
Преимущества: Высокая производительность, масштабируемость, поддержка большого количества источников данных.
-
Использование: Большие корпоративные проекты с высокими требованиями к надежности и производительности.
-
-
Apache Airflow:-
Преимущества: Управление сложными ETL-пайплайнами, гибкость и возможность интеграции с различными системами.
-
Использование: Автоматизация и оркестрация ETL-процессов.
-
Ссылки для изучения
Примеры хороших ответов из реальных собеседований
- Публичное собеседование Data Engineer в X5 Tech · 12:00–14:35Техническое собеседование · Ответ кандидата
Кандидат объясняет выбор Talend визуальными потоками, фильтрацией, логированием и удобством сопровождения 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. Повторный запуск той же партии и сбой посередине входят в приемку, иначе восстановление остается непроверенным.
Ссылки для изучения
Примеры хороших ответов из реальных собеседований
- Публичное собеседование data-инженера в X5 Tech · 25:00–26:32Собеседование · Ответ кандидата
Кандидат объясняет микробатчи, инкрементальные модели и ReplacingMergeTree с ключом для слияния до последней версии.
Как 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 автоматически обратить нельзя. Повторный запуск той же партии и сбой посередине входят в приемку, иначе восстановление остается непроверенным.
Ссылки для изучения





