dbt Analytics Engineering study materials
dbt Analytics Engineering study resources

dbt Analytics Engineering key terms

dbt Analytics Engineering · Get comfortable with the vocabulary.

Model

A SQL file, usually a SELECT statement, that dbt compiles and runs against a warehouse to create a table or view. Models form the core building blocks of a dbt project.

Related: Materialization, ref Function, DAG
Materialization

The strategy controlling how dbt persists a model in the warehouse, such as table, view, incremental, or ephemeral. It determines rebuild behavior, storage cost, and query performance.

Related: Model, Incremental Model, Ephemeral Model
Incremental Model

A model configured to append or merge only new or changed rows on each run instead of rebuilding the whole table. It relies on a filter condition and often a unique key.

Related: Materialization, is_incremental Macro, Unique Key
Ephemeral Model

A model materialized as a common table expression rather than a warehouse object. Its SQL is inlined into downstream models, so it is never queried directly.

Related: Materialization, CTE
CTE

A named temporary result set defined with a WITH clause inside a query. dbt models commonly chain CTEs to break complex transformations into readable, testable steps.

Related: Ephemeral Model, Model
ref Function

A Jinja function that references another model by name, letting dbt resolve the correct schema and database at compile time and infer dependencies for ordering.

Related: source Function, DAG, Model
source Function

A Jinja function that references a declared source table, resolving its fully qualified name at compile time and recording lineage from raw data into models.

Related: Source, ref Function, Freshness Check
DAG

The directed acyclic graph of models, sources, tests, and seeds that dbt builds from ref and source calls. It defines execution order and prevents circular dependencies.

Related: ref Function, Lineage Graph, Selector
Source

A declaration in a YAML file describing raw tables loaded into the warehouse by another tool. Sources give dbt metadata, lineage, and testability for upstream data.

Related: source Function, Freshness Check, Source Table
Source Table

An individual table or view listed under a source definition, with an identifier and optional columns. It is referenced in models through the source function.

Related: Source, source Function
Freshness Check

A configuration that compares a timestamp column in a source against a warn and error threshold to flag stale upstream data before it silently reaches models.

Related: Source, Data Test, Alerting
Data Test

An assertion about model or source data that dbt runs as a query and fails when rows violate the expectation. Tests cover uniqueness, nulls, referential integrity, and custom rules.

Related: Generic Test, Singular Test, Severity
Generic Test

A reusable, parameterized test defined in YAML and applied to columns or models, such as unique, not_null, or relationships. dbt ships built-in ones and supports custom versions.

Related: Data Test, Singular Test, Accepted Values Test
Singular Test

A standalone SQL file under the tests directory that returns failing rows. It is written for one specific assertion and is not parameterized or reused across columns.

Related: Generic Test, Data Test
Accepted Values Test

A generic test that fails when a column contains values outside an explicit allowlist. It enforces categorical domains such as status or country codes.

Related: Generic Test, Data Test
Relationships Test

A generic test verifying that every value in a child column exists in a parent column, enforcing referential integrity across models or sources.

Related: Generic Test, Unique Key
Severity

A test setting of warn or error that controls whether a failure blocks downstream execution or only logs a warning. It lets teams phase in stricter quality gates.

Related: Data Test, Alerting
Unique Key

One or more columns that identify a row for merge or delete-and-insert logic in incremental models and snapshots. It must be unique in the incoming batch.

Related: Incremental Model, Snapshot, Relationships Test
Snapshot

A dbt feature that captures change history for a mutable source table by recording validity periods, enabling slowly changing dimension type 2 analysis.

Related: Unique Key, Slowly Changing Dimension
Slowly Changing Dimension

A modeling pattern that preserves historical attribute values over time, usually with valid-from and valid-to timestamps. Snapshots are dbt's built-in way to build type 2 versions.

Related: Snapshot
Seed

A CSV file in the seeds directory that dbt loads into the warehouse as a table. Seeds suit small, static reference data such as mappings or country lists.

Related: Model, Source
Macro

A reusable Jinja function defined in the macros directory that generates SQL or logic. Macros support DRY code, custom tests, and package-level extensions.

Related: Jinja, Package, is_incremental Macro
Jinja

The templating language dbt uses to add logic, loops, and variables to SQL. It renders at compile time, producing the final SQL sent to the warehouse.

Related: Macro, ref Function, Compilation
is_incremental Macro

A helper that returns true only when an incremental model already exists in the warehouse and is not running in full-refresh mode. It guards the incremental filter logic.

Related: Incremental Model, Full Refresh
Full Refresh

A run flag that drops and rebuilds models from scratch, bypassing incremental logic. It is used after logic changes or to repair corrupted tables.

Related: Incremental Model, is_incremental Macro
Project File

The dbt_project.yml file that names the project, sets the profile, configures paths, and applies default materializations and settings by folder.

Related: Profile, Materialization, Selector
Profile

A YAML entry in profiles.yml holding warehouse connection credentials and target settings. It separates environment secrets from the version-controlled project.

Related: Project File, Target
Target

A named connection environment within a profile, such as dev or prod. The active target determines which database and schema dbt writes to.

Related: Profile, Environment
Selector

A syntax or YAML definition that chooses which nodes a command runs, using tags, paths, graph operators, or state comparison. Selectors keep runs fast and scoped.

Related: DAG, Tag, State Comparison
Tag

A label attached to models, tests, or sources that selectors can target. Tags group nodes by purpose, such as hourly or finance, for tailored runs.

Related: Selector
State Comparison

A selection method that compares the current project against a previous manifest to run only new or modified nodes. It powers efficient CI and slim deployments.

Related: Selector, Manifest, Continuous Integration
Manifest

A JSON artifact produced at compile time that describes every node, its configuration, and its dependencies. Tools and state selection read it to understand the project.

Related: State Comparison, Lineage Graph, Documentation
Documentation

Descriptions of models, columns, and sources stored in YAML or markdown and rendered into a browsable site. Good docs make metric logic and ownership discoverable.

Related: Doc Block, Manifest, Exposure
Doc Block

A reusable markdown block referenced from YAML to avoid repeating long descriptions across many columns or models. It keeps documentation consistent and maintainable.

Related: Documentation
Exposure

A declaration of a downstream consumer such as a dashboard, report, or ML model, linked to the models it depends on. Exposures extend lineage beyond the transformation layer.

Related: Lineage Graph, Documentation
Lineage Graph

A visual and structural map of how sources, models, snapshots, tests, and exposures depend on one another. It supports impact analysis and debugging.

Related: DAG, Exposure, Manifest
Package

An external dbt project installed as a dependency, providing shared macros, models, or tests. Packages are pinned in packages.yml for reproducible builds.

Related: Macro, Project File
Continuous Integration

An automated pipeline that builds and tests changed dbt nodes on each pull request. It catches breakage before merge, often using state comparison for speed.

Related: State Comparison, Data Test, Environment
Orchestration

Scheduling and coordinating dbt runs alongside upstream loads and downstream consumers. Tools trigger jobs, manage dependencies, retry failures, and surface run status.

Related: Job, Alerting, Environment
Environment

An isolated deployment context, such as development, staging, or production, with its own credentials, schemas, and schedule. Environments prevent test data from reaching production.

Related: Target, Continuous Integration