Перейти к содержанию

SQL reconciliation / dbt runtime

Примеры3B · Общие setup/версии · Фактические проверки (архив рабочего проекта)

Тип материала: учебное практическое упражнение. Выполненные и непроверенные шаги указаны отдельно.

Команды выполняются из examples/processing после общего setup; $labPython — interpreter venv. Runtime и documented expected result различаются.

Зависимости и версии

dbtCore1.10.13, dbt-duckdb1.10.0, DuckDB1.4.3; project, SQL, runner.

Команды запуска

New-Item -ItemType Directory -Path output -Force | Out-Null
$env:HANDBOOK_DBT_PATH = Join-Path (Get-Location) 'output/report.duckdb'
& .venv/Scripts/dbt.exe build --project-dir dbt --profiles-dir dbt --target-path output/dbt-target --log-path output/dbt-logs
& $labPython reconcile.py --database output/report.duckdb

Тестовые данные

events.csv содержит5 input rows/4 identities; отдельные golden expected_keys/expected_totals определяют contract fixture. Models facts и totals не выполняют authoritative monetary operation.

Ожидаемый результат

dbt build выполняет12 nodes: seeds/models/tests. Reconcile выдаёт facts4, пустые amount_mismatches/key_mismatches. QA реально выполнил build и затем искусственно изменил сумму/удалил key: checks обнаружили оба нарушения.

Ограничения и статус проверки

Проверен только локальный target DuckDB и bounded fixture, не extraction Oracle/PG/S3/Spark E2E. dbt tests не атомарный rollback всех моделей и не замена financial reconciliation на согласованном production cut. Runtime artifacts отправляются в output; golden constants учебные, не benchmark.

Полный журнал ограничений (архив рабочего проекта) хранит NOT_RUN и failed runtime attempts; их нельзя считать выполненными integration tests.