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.