Происхождение данных¶
Отслеживание происхождения данных (Data Lineage) — обязательное требование для всех контрактов. Lineage обеспечивает прозрачность: «откуда пришли данные?» и «куда они идут?».
Уровни lineage¶
| Уровень | Описание | Обязательные элементы |
|---|---|---|
| Системный | Высокоуровневый поток между системами | Источник, назначение, метод интеграции |
| Столбцовый | Маппинг на уровне полей | Исходное поле, трансформация, целевое поле |
Поля lineage в контракте¶
lineage:
upstream:
- system: "1C Enterprise"
database: "postgres://1c-db.local:5432/orders_db"
extraction_method: "cdc"
tables:
- name: "orders"
columns:
- source: "order_id"
target: "order_id"
transformation: "none"
- source: "created_date"
target: "created_at"
transformation: "timestamp_conversion"
downstream:
- system: "Clickhouse DWH"
database: "clickhouse://dwh.local:8123/production"
tables:
- "sales.orders_fact"
update_frequency: "hourly"
- system: "ML Feature Store"
path: "feast://feature-store/sales_features"
update_frequency: "daily"
Валидация lineage¶
Ежемесячный процесс верификации актуальности lineage:
1. Синтетический тест¶
Внедрить синтетические записи с уникальными маркерами в источник данных.
2. Проверка распространения¶
Убедиться, что маркеры появились во всех задокументированных downstream-системах.
3. Проверка сроков¶
Подтвердить, что данные прибывают в рамках SLA freshness.
4. Отчёт о расхождениях¶
Задокументировать любые незадокументированные потоки данных.
Анализ влияния¶
Перед изменением схемы необходимо выявить:
- Все затронутые downstream-системы
- Все затронутые поля назначения
- Команды потребителей для уведомления
- Оценку объёма работ по миграции
# Запуск анализа влияния
python contracts/ci/analyze_impact.py contracts/domains/sales/orders/
# Пример вывода:
# Анализ влияния для sales/orders
# ================================
# Модифицированные поля: [total_amount]
# Затронутые потребители:
# - Clickhouse DWH (высокая критичность)
# Использует: total_amount → sales.orders_fact
# - Revenue Forecast ML (средняя критичность)
# Использует: total_amount в расчёте фич
Дополнительные материалы¶
- Спецификация контракта — формат секции lineage
- Роли и ответственность — кто отвечает за актуальность lineage
- Аудит и контроль — проверка точности lineage