Что такое data lineage и зачем он нужен?

Data Lineage (происхождение данных) — это процесс отслеживания и документирования пути, который проходят данные от источника до конечного потребителя. Он охватывает все этапы обработки данных, включая извлечение (extract), трансформации (transform), загрузку (load), агрегации, фильтрации и визуализацию. Data Lineage даёт представление о том, где данные были собраны, какие изменения с ними происходили и как они в итоге попали в отчёты, дашборды или машинное обучение.

Зачем нужен Data Lineage

1. Прозрачность и отслеживаемость

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

2. Отладка и устранение проблем

Когда в отчётах или дашбордах появляются подозрительные значения, lineage позволяет быстро отследить путь данных до источника и выявить, где именно произошёл сбой или ошибка в трансформации.

3. Соблюдение нормативных требований (compliance)

Регуляторные органы, такие как GDPR, HIPAA, SOX и др., требуют прозрачности в обработке персональных данных. Lineage помогает доказать, как и где использовались данные, и какие трансформации к ним применялись.

4. Оценка влияния изменений (impact analysis)

Если планируется изменение в источнике данных (например, изменение структуры таблицы или типа поля), lineage показывает, какие downstream-процессы, отчёты, скрипты или модели будут затронуты. Это помогает управлять рисками и уменьшает вероятность поломок.

5. Управление качеством данных

Позволяет связать метрики качества (например, количество пропущенных значений, ошибки форматов) с конкретными этапами обработки данных и источниками, что делает систему мониторинга более эффективной.

6. Каталогизация и документирование

Интеграция lineage с data catalog'ами позволяет создать живую документацию, которая автоматически отслеживает, где используются определённые поля, таблицы или колонки.

Компоненты Data Lineage

1. Источник данных

Место первоначального хранения данных: база данных, API, CSV-файл, стриминг-сервис (Kafka), дата-лейк.

2. Точки трансформации

Места, где данные подвергаются изменениям:

  • SQL-запросы (join, group by, case, кастомные функции).

  • ETL/ELT-пайплайны.

  • Скрипты (Python, Spark).

  • BI-инструменты (Power BI, Tableau).

3. Слоёная структура

Data Lineage отображает зависимости:

  • Horizontal lineage — между разными наборами данных (таблица A → таблица B → отчёт).

  • Vertical lineage — между конкретными колонками или полями (поле "client_id" → используется в join → агрегация "count(distinct client_id)").

4. Конечные потребители

Визуализации, отчёты, ML-модели, API-интерфейсы, отчёты внешним пользователям и регуляторам.

Типы Data Lineage

Тип Описание
Business Lineage Высокоуровневое описание, удобно для бизнеса: от CRM → отчёт по продажам
--- ---
Technical Lineage Технический уровень: SQL-выражения, поля, скрипты, пайплайны
--- ---
Column-Level Lineage Отслеживание происхождения каждой отдельной колонки данных
--- ---
End-to-End Lineage Полный маршрут от источника до визуализации
--- ---

Подходы к построению Lineage

1. Static Analysis

Анализ исходного кода SQL, ETL-скриптов, YAML-файлов, Spark- или dbt-скриптов для построения графа зависимостей. Не требует исполнения, но может быть неполным.

2. Dynamic/Runtime Analysis

Lineage строится на основе журналов выполнения (execution logs), query history, логов Airflow или Spark. Даёт точную информацию, включая данные, которые реально прошли по пайплайну.

3. Hybrid

Комбинация статического и динамического анализа. Static нужен для предсказуемости, dynamic — для верификации реального выполнения и метрик.

Инструменты для Data Lineage

Open Source:

  • OpenLineage — стандарт и API для сбора lineage-информации во время исполнения пайплайнов. Интеграция с Airflow, dbt, Spark.

  • Marquez — система визуализации lineage, построенная на OpenLineage.

  • DataHub (LinkedIn) — каталог данных с функцией lineage (интеграции с Kafka, Hive, dbt, Airflow).

  • Amundsen (Lyft) — Data Catalog с возможностью отображения lineage.

  • Apache Atlas — решение для Apache Hadoop-экосистемы.

Коммерческие:

  • **Informatica Enterprise Data Catalog
    **
  • **Collibra
    **
  • **Alation
    **
  • Microsoft Purview (для Azure)

  • **Google Data Catalog
    **

  • **Talend Data Fabric
    **
  • **Ataccama
    **

Примеры использования

  1. Ошибка в отчёте по выручке
    С помощью lineage отслеживается, что поле revenue пришло из SQL-запроса с join-ом, который стал выдавать нули из-за обновления справочника в источнике.

  2. Изменение в схеме
    Бизнес хочет удалить поле middle_name из таблицы пользователей. Lineage показывает, что оно используется в отчёте по маркетингу → принимается решение не удалять.

  3. Аудит ML-модели
    Требуется проверить, откуда пришли данные в модель прогнозирования оттока. Lineage показывает весь путь от CRM → ETL → feature store → модель.

Data Lineage как часть Data Governance

Data Lineage — ключевая часть управления данными (Data Governance). Он помогает:

  • Управлять метаданными и схемами.

  • Снижать риски при изменениях.

  • Обеспечивать соответствие требованиям.

  • Ускорять поиск источников ошибок.

  • Улучшать командное взаимодействие между бизнесом, инженерами, аналитиками.

Особенно он важен при работе с микросервисной архитектурой, большим количеством источников и департаментами, использующими одни и те же данные с разными целями.