Где живут проверки в монорепозитории, как они запускаются и как от них отличать наблюдаемость (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.
- Селектор всех декларативных тестов:
dqc_all_tests—dbt/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 .- Ingress-проверки:
make smoke— см.scripts/smoke_ingress.sh. - Расширенные P0:
make p0-verify—scripts/p0_verify.sh. - Команда-подсказка:
make dqc-help.
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).