Skip to content

Latest commit

 

History

History
53 lines (35 loc) · 4.36 KB

File metadata and controls

53 lines (35 loc) · 4.36 KB

Тестирование и Data Quality

Где живут проверки в монорепозитории, как они запускаются и как от них отличать наблюдаемость (Grafana, метрики) — см. OBSERVABILITY_AND_LOGGING.md.

Privacy / staging: модель stg_customers читается из таблицы staging.stg_customers, заполняемой Spark (анонимизация). Тесты и демо-данные не должны ожидать открытый email в этой цепочке; см. PIPELINES.md.

Где искать код тестов

Тип Каталог Запуск
Pytest (генератор, конфиги, константы, Kafka-билдеры, совместимость layout dbt/Spark) tests/ (unit, integration) pytest tests/unit; интеграции — см. SETUP.md
Архитектурная проверка layout dbt tests/unit/test_dbt_project_layout.py pytest tests/unit/test_dbt_project_layout.py
SQL-тесты dbt (generic, DQ-слой) dbt/tests/ cd dbt && dbt test …
Макросы для шаблонов DQC (generic tests, helper SQL) dbt/macros/dqc/ Подключаются из schema.yml и singular SQL

Интерпретация «половины тестов в разных местах»: это разные исполнители — интерпретатор Python (pytest) и CLI dbt. Последнему нужен свой проект под dbt/dbt_project.yml; путь по умолчанию:

test-paths: ["tests"]

относится к корню dbt-проекта (DataOpsShowcase/dbt/), поэтому SQL-тесты Data Quality лежат в dbt/tests/, а не в корне tests/. Перенос каталога SQL-тестов в другой топ-уровневый узел монорепо без смены test-paths ломает dbt test.

Конфигурация DQ в dbt

  • Селектор всех декларативных тестов: dqc_all_testsdbt/selectors.yml.
  • При падении проверок артефакты складываются в схему dwh_dq (store_failures: true в dbt/dbt_project.yml).

Локально (PostgreSQL OLAP доступен, установлен dbt), из корня репозитория:

./scripts/run_dqc.sh

Эквивалент руками:

cd dbt
dbt source freshness --profiles-dir . --project-dir .
dbt test --selector dqc_all_tests --profiles-dir . --project-dir .

Связка с пайплайном и Makefile

Airflow: после успешного dag_dbt_marts_rest выполняется dag_dbt_dqc_rest (полный dbt test с селектором dqc_all_tests через dbt-rest и configs/pipeline/dbt_rest.yaml, ключ runs.dqc); затем dag_data_quality_checks (Python-инварианты из dq_checks.yaml). Отдельный DAG качества не заменяет локальный dbt test при разработке.

Аудит дубликатов (исторический контекст)

Ранее существовал каталог топ-уровня monitoring/quality/ с обёртками и README; он создавал впечатление, что DQ «живёт там», хотя исполнимые проверки dbt всегда были только под dbt/. Каталог удалён в пользу scripts/run_dqc.sh и этого документа. Единственный канон дашбордов Grafana: infra/monitoring/grafana/ (см. OBSERVABILITY_AND_LOGGING.md).