Big Data

Data Quality и Observability

Garbage In, Garbage Out - не просто поговорка. Gartner оценивает потери от плохого качества данных в $12.9 млн в год для средней компании. IBM: компании тратят 50-80% времени data scientists на очистку данных вместо анализа. Data Quality Engineering - одна из самых востребованных специализаций в 2024 году.

  • **Uber Data Quality (Cadence)**: автоматическая валидация 1000+ таблиц ежедневно через Great Expectations + Airflow. Failure останавливает pricing pipeline - лучше задержка, чем неверные тарифы.
  • **Airbnb Minerva**: data contracts + lineage для всех метрик компании. Правило: каждая метрика имеет owner, definition и SLA. Изменение метрики = breaking change с версионированием.
  • **Netflix Data Mesh**: каждая команда owns свои данные и публикует data contracts. Central Data Platform только обеспечивает инфраструктуру. 10 000+ датасетов под контрактами.

Great Expectations: контрактное тестирование данных

«Плохие данные молча ломают модели» - классическая проблема ML pipeline. Цена: Amazon в 2019 году потерял $100M из-за бага в recommendation системе, вызванного corrupted обучающими данными. Great Expectations - Python фреймворк для описания и проверки данных через «expectations» (ожидания).

**Great Expectations** позволяет декларировать правила для данных: `expect_column_values_to_not_be_null()`, `expect_column_values_to_be_between(0, 100)`, `expect_column_to_exist()`. При нарушении - отчёт с конкретными строками-нарушителями.

Great Expectations интегрируется с Apache Airflow (validation как отдельный task), dbt (тесты для трансформаций), и Databricks. Shopify использует GE для валидации 500+ таблиц ежедневно. Failure в GE останавливает pipeline и алертирует команду до того, как битые данные уйдут дальше.

Great Expectations запускается после ETL и обнаруживает, что 15% значений в колонке `user_id` NULL. Что должно произойти дальше в pipeline?

Data Contracts: соглашения между producer и consumer

Проблема без data contracts: команда Product молча переименовывает колонку `user_id` в `customer_id` в источнике. Через 2 часа 10 аналитических pipeline падают. Никто не предупредил, потому что не было формального соглашения.

**Data Contract** - формальное соглашение между producer (команда, создающая данные) и consumer (команда, использующая). Включает: схему (типы, nullable), SLA (freshness, availability), семантику (что означает `revenue` - gross или net?). Форматы: YAML спецификации, OpenAPI для data APIs.

Netflix, Airbnb, Uber публично описали свои data contract практики. Airbnb Minerva и Netflix Dataportal строятся на принципах data contracts: любое breaking change требует 30-дневного notice и версионирования. PayPal оценивает экономию от data contracts в $5M+ ежегодно за счёт предотвращения pipeline failures.

Команда Order Service хочет изменить тип колонки `amount` с INTEGER на DECIMAL(10,2). По data contract требуется 30-дневный notice. Почему это важно?

Автоматическое обнаружение аномалий в данных

Data contracts проверяют структуру и явные правила. Но аномалии бывают тонкими: revenue вчера упал на 12% - это сезонность или баг в pipeline? Количество заказов растёт 10% в день - это успешная акция или дубликаты? **Data Observability** решает эту проблему мониторингом статистик данных во времени.

Monte Carlo, Bigeye, Soda - коммерческие платформы Data Observability. Open-source: dbt tests + Grafana. Принцип: отслеживание freshness, volume, distribution, schema, referential integrity. ML-based обнаружение аномалий: если row count падает на 2 sigma от скользящего среднего - alert.

Система observability детектирует: количество строк в таблице orders сегодня на 40% меньше чем вчера. Каков правильный процесс?

Data Lineage: прослеживаемость данных

Баг найден: в таблице orders неверный `tax_rate`. Вопрос: «Какие ещё таблицы и отчёты зависят от orders.tax_rate?» Без data lineage - ручной поиск по коду на несколько дней. С lineage - ответ за секунды.

**Data Lineage** - граф зависимостей: откуда пришли данные (upstream) и куда идут (downstream). Автоматически строится инструментами: dbt (SQL-based), Apache Atlas (Hadoop ecosystem), DataHub (LinkedIn open-source), OpenLineage стандарт.

LinkedIn DataHub управляет lineage для 10 000+ датасетов. Impact analysis при изменении schema: мгновенный список всех downstream зависимостей. GDPR compliance: «Удали все данные пользователя X» - lineage показывает все таблицы где встречается user_id, включая производные.

Data Quality - это только валидация схемы: правильные типы и NOT NULL ограничения

Data Quality включает freshness (свежесть), volume (объём), distribution (статистическое распределение), schema и referential integrity. Схема может быть правильной, а данные - устаревшими или аномальными

Классический пример: таблица обновляется, схема корректна, но pipeline завис и данные 3-дневной давности. Или: типы правильные, но revenue колонка содержит только нули из-за бага в ETL. Data Observability мониторит все 5 измерений качества.

GDPR запрос: удалить все данные пользователя user_id=12345. Как data lineage помогает?

Ключевые идеи

  • **Great Expectations** - declarative тесты для данных: expectations описывают правила, validation запускается в pipeline и останавливает его при нарушениях.
  • **Data Contracts** - формальные соглашения producer-consumer: схема, SLA, семантика, 30-дневный notice для breaking changes.
  • **Data Observability** - автоматический мониторинг freshness, volume, distribution, schema во времени. ML-based обнаружение аномалий без явных правил.
  • **Data Lineage** - граф зависимостей данных. Impact analysis за секунды; GDPR compliance: полный список таблиц с данными пользователя.

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

Data Quality - инфраструктурный слой поверх хранилищ и pipeline:

  • Data Governance и Catalog — Data catalog хранит metadata включая quality scores и lineage; governance policies определяют data quality SLA
  • Apache Spark и ETL — GE интегрируется в Spark pipeline как validation step; Spark DataFrame API позволяет встраивать quality checks в трансформации

Вопросы для размышления

  • Great Expectations запускается и останавливает pipeline из-за 0.1% NULL в некритичной колонке. Как балансировать строгость правил с практичностью - когда hard failure, когда warning?
  • Data contracts требуют 30-дневного notice. Но стартапу нужно итерировать быстро. Как применять data contracts без замедления разработки?
  • Data lineage отслеживает трансформации на уровне таблиц. Но если ML модель обучена на данных и её предсказания используются в следующей таблице - как моделировать lineage через ML модели?

Связанные уроки

  • stat-31-eda
Data Quality и Observability

0

1

Войти