Data lineage на собеседовании Data Engineer
Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.
Содержание:
Зачем спрашивают на собесе DE
Lineage — must-have для DWH > 100 таблиц. На собесе DE: «как ты отслеживаешь, какая таблица откуда», «зачем column-level lineage», «как внедрить в Airflow».
Что такое data lineage
Data lineage — карта зависимостей: откуда взялись данные, через какие трансформации прошли, куда пошли.
source.orders.csv → bronze.orders → silver.orders → gold.daily_revenue → BI dashboardНа каждом узле — какая трансформация, кто owner, какие тесты.
Уровни lineage
Pipeline-level. Граф: какой job породил какую таблицу.
Airflow DAG → DAG-граф зависимостейTable-level. Граф: какая таблица из каких таблиц получена.
Column-level. Какая колонка из каких колонок (через какие выражения). Самый детальный.
gold.daily_revenue.country = silver.orders.country (через join с dim_country)
gold.daily_revenue.revenue_usd = SUM(silver.orders.amount * fx.rate)Column-level — золотой стандарт, но самый сложный для извлечения.
Зачем lineage
Impact analysis. «Если я изменю silver.orders.amount — что сломается?» — список downstream таблиц / dashboards.
Root cause analysis. «BI показывает странную revenue» — пройти upstream до источника, найти сломанный шаг.
Compliance. GDPR, 152-ФЗ требуют tracking PII. Где есть user.email в DWH? Lineage отвечает.
Debugging. «Эта колонка пустая» — где первый раз появилась.
Documentation. Авто-генерируемая, всегда актуальная карта.
Cost optimization. Кто вообще читает эту таблицу? Если никто — можно архивировать.
Tools
DataHub (LinkedIn). Open source, supports много источников. UI с поиском, тегами, lineage graph.
Amundsen (Lyft). Похожее назначение, фокус на discovery.
OpenMetadata. Конкурент, активная разработка.
OpenLineage. Не tool, а стандарт. Pipeline tools (Airflow, dbt, Spark) emit события в OpenLineage формате — DataHub / Marquez их собирают.
dbt docs. Встроенная dbt feature — lineage между моделями + UI.
Marquez (WeWork). Reference implementation OpenLineage.
В РФ: чаще DataHub (open source friendly) или собственная разработка.
Внедрение в pipeline
dbt. Из коробки lineage между моделями через {{ ref() }} и {{ source() }}.
Airflow. OpenLineage-плагин — emit'ит события на каждый task.
Spark. OpenLineage Spark agent — захватывает lineage из Spark SQL plans.
Custom Python. Manual emit в OpenLineage.
from openlineage.client import OpenLineageClient, RunEvent
client.emit(RunEvent(
eventType="START",
job={"namespace": "etl", "name": "process_orders"},
inputs=[{"namespace": "source", "name": "orders"}],
outputs=[{"namespace": "warehouse", "name": "silver_orders"}]
))DataHub поднимается отдельно (или managed Datahub Cloud), подключается к OpenLineage / dbt / Snowflake / BigQuery.
Частые ошибки
Lineage только pipeline-level. Не помогает на column-level вопросах. Минимум — table-level.
Manual lineage в Confluence. Устаревает. Нужна автоматическая генерация.
Игнорировать ad-hoc запросы. Аналитики пишут SQL вне dbt → lineage не видит. Нужны парсеры SQL (через query log).
Lineage без owners. Граф есть, спросить некого. Каждой таблице — owner.
Не интегрировать с alerting. Если upstream сломалось — downstream должен получить notification.
Связанные темы
- dbt на собесе DE
- Медальон-архитектура для DE
- Партиционирование таблиц для DE
- ETL vs ELT для DE
- Подготовка к собесу Data Engineer
FAQ
Lineage стоит внедрять с самого начала?
Если pipeline 5-10 таблиц — нет, overkill. С 50+ — обязательно.
dbt lineage достаточно?
Только если весь стек на dbt. Hybrid (Airflow + dbt + Spark) — нужен DataHub / OpenMetadata.
Это официальная информация?
Нет. Статья основана на документации DataHub, OpenLineage, OpenMetadata.
Тренируйте Data Engineering — откройте тренажёр с 1500+ вопросами для собесов.