Data lineage на собеседовании Data Engineer

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Карьерник — 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. Кто вообще читает эту таблицу? Если никто — можно архивировать.

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

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.

Связанные темы

FAQ

Lineage стоит внедрять с самого начала?

Если pipeline 5-10 таблиц — нет, overkill. С 50+ — обязательно.

dbt lineage достаточно?

Только если весь стек на dbt. Hybrid (Airflow + dbt + Spark) — нужен DataHub / OpenMetadata.

Это официальная информация?

Нет. Статья основана на документации DataHub, OpenLineage, OpenMetadata.


Тренируйте Data Engineering — откройте тренажёр с 1500+ вопросами для собесов.