Skip to main content

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 to target/. The compile command is fully offline - it does not connect to the warehouse.

Usage

Flags

What compile does

  1. Discovery - finds sqlbuild_project.toml, scans for models, sources, seeds, functions, audits, tests, and macros
  2. Graph resolution - resolves ref() and source() calls, expands macros, orders models by dependency
  3. SQL validation - validates SQL syntax (when SQL analysis is enabled)
  4. Column lineage - analyzes column-level dependencies across models (fast mode by default)
  5. Contract validation - checks declared column contracts against inferred query output
  6. 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 and type_enforcement is 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:
Diagnostic codes: Compile returns exit code 1 when any error-severity diagnostic is found, making it suitable for CI checks.

Output

Text output (default)

Each model shows its name, status (OK or FAIL), and column count. Models with contract errors are marked FAIL.

JSON output

Returns a structured report including:
  • summary - model, seed, function, audit, test, error, and warning counts
  • resources - per-model details including column count, dependencies, lineage summary, and compiled SQL
  • diagnostics - all contract violations with source locations
  • compile_timings - timing breakdown for discovery, graph, lineage, contracts, and write phases
  • lineage_mode - which lineage mode was used
  • artifacts - 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.

Examples