sqb compile
Compiles all discovered models, seeds, audits, and tests. Resolves references, expands macros, validates SQL, checks column contracts, computes column lineage, and writes compiled artifacts totarget/. The compile command is fully offline - it does not connect to the warehouse.
Usage
Flags
What compile does
- Discovery - finds
sqlbuild_project.toml, scans for models, sources, seeds, functions, audits, tests, and macros - Graph resolution - resolves
ref()andsource()calls, expands macros, orders models by dependency - SQL validation - validates SQL syntax (when SQL analysis is enabled)
- Column lineage - analyzes column-level dependencies across models (fast mode by default)
- Contract validation - checks declared column contracts against inferred query output
- Artifact write - writes compiled SQL to
target/compiled/
Static analysis
When SQL analysis is enabled (default), compile performs static analysis on your models without connecting to the warehouse:- Column inference: Infers output columns from each model’s SQL, including through CTEs, subqueries, and JOINs
- Column contract validation: If a model declares columns in its
MODEL()header, compile checks that every declared column exists in the query output. If a column declares a type andtype_enforcementis enabled, compile also verifies the inferred type matches the declared type - Column lineage: Traces which source columns flow into each output column, including transform classification. See Column Lineage for details
Contract diagnostics
When a contract violation is found, compile reports it with source-annotated diagnostics:
Compile returns exit code
1 when any error-severity diagnostic is found, making it suitable for CI checks.
Output
Text output (default)
JSON output
summary- model, seed, function, audit, test, error, and warning countsresources- per-model details including column count, dependencies, lineage summary, and compiled SQLdiagnostics- all contract violations with source locationscompile_timings- timing breakdown for discovery, graph, lineage, contracts, and write phaseslineage_mode- which lineage mode was usedartifacts- paths to written files
Column lineage modes
The--lineage-mode flag controls how column lineage is computed during compile:
The JSON compile report includes a lineage summary for each model, not the full column graph. Use
sqb lineage <model>[.<column>] to inspect lineage as a tree, edge list, or JSON. See Column Lineage for details on analysis modes and transform types.

