Great Expectations на собеседовании Data Engineer
Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.
Содержание:
Зачем спрашивают на собесе DE
Data quality — must-have для production DWH. Great Expectations — популярный фреймворк. На собесе DE: «как ты тестируешь данные», «отличие GE от dbt tests».
Что делает Great Expectations
Идея. Декларативные «ожидания» о данных, проверяемые при загрузке.
expect_column_values_to_not_be_null("user_id")
expect_column_values_to_be_unique("order_id")
expect_column_values_to_be_in_set("status", ["pending", "paid", "shipped", "cancelled"])
expect_column_values_to_be_between("amount", 0, 1_000_000)При каждом запуске — Pass / Fail. История validation runs хранится. Документация авто-генерируется.
Expectations: типы тестов
Single column.
expect_column_values_to_not_be_nullexpect_column_values_to_be_uniqueexpect_column_values_to_match_regexexpect_column_values_to_be_in_setexpect_column_values_to_be_betweenexpect_column_value_lengths_to_be_between
Aggregate.
expect_column_mean_to_be_betweenexpect_column_sum_to_be_betweenexpect_column_max_to_be_betweenexpect_table_row_count_to_be_betweenexpect_column_values_to_be_unique(на таблице)
Multi-column.
expect_column_pair_values_to_be_equalexpect_compound_columns_to_be_uniqueexpect_select_column_values_to_be_unique_within_record
Statistical.
expect_column_kl_divergence_to_be_less_than(drift detection).expect_column_quantile_values_to_be_between.
В GE сотни expectations. Custom можно писать.
Suite и checkpoint
Expectation Suite — набор expectations для одной таблицы / view.
Checkpoint — конфигурация запуска: какие suites на каких datasets. Запускается из CLI, Python, Airflow.
context.run_checkpoint(checkpoint_name="orders_quality")Результат: HTML отчёт + JSON results, метрики в data docs.
Интеграция с Airflow и dbt
Airflow. GreatExpectationsOperator запускает checkpoint как task.
ge_check = GreatExpectationsOperator(
task_id="validate_orders",
expectation_suite_name="orders.warning",
data_context_root_dir="/path/to/great_expectations",
fail_task_on_validation_failure=True
)dbt. dbt-expectations — пакет, добавляющий GE-style тесты в dbt YAML.
models:
- name: orders
columns:
- name: amount
tests:
- dbt_expectations.expect_column_values_to_be_between:
min_value: 0
max_value: 1000000Запускается через dbt test — единая среда.
GE vs dbt tests vs Soda
| GE | dbt tests | Soda | |
|---|---|---|---|
| Базовый язык | Python + YAML | YAML + SQL | YAML (SodaCL) |
| Сложность setup | Средняя | Низкая | Низкая |
| Custom tests | Сложнее | SQL макросы | YAML + SQL |
| Data docs | Авто HTML | Через dbt docs | Soda Cloud |
| Drift detection | Есть | Нет | Есть |
| ML / statistical | Сильно | Слабее | Средне |
Стандартная практика:
- dbt tests — простые тесты внутри dbt-проекта (uniqueness, not_null, accepted_values).
- GE — сложные тесты, drift, statistical, на pre-dbt уровне (bronze).
- Soda — managed cloud-вариант с alerting.
Частые ошибки
Все тесты на gold-уровне. Поздно ловить баги. Тесты на bronze (sanity), silver (uniqueness), gold (бизнес).
Слишком много expectations. 1000 expectations на таблицу — никто не читает. Фокус на критичных.
Не интегрировать с alerting. Test failed — никто не узнал. Slack / PagerDuty.
Не обновлять при schema change. Expectations устарели — false positives.
fail_task_on_validation_failure=False для critical tests. Молчаливо пропускает плохие данные.
Игнорировать data drift. Если distribution изменилось — модель downstream деградирует. Drift expectations.
Связанные темы
- dbt на собесе DE
- Медальон-архитектура для DE
- Идемпотентность пайплайна для DE
- Data lineage для DE
- Подготовка к собесу Data Engineer
FAQ
GE сильно тормозит pipeline?
Зависит от объёма expectations. Лёгкие — миллисекунды. Тяжёлые статистические — десятки секунд. Запускать на сэмпле или партиции.
Можно использовать GE без Airflow?
Да, можно из cron, GitHub Actions, локально для разработки.
Это официальная информация?
Нет. Статья основана на документации Great Expectations 0.18+, dbt-expectations.
Тренируйте Data Engineering — откройте тренажёр с 1500+ вопросами для собесов.