dbt Analytics Engineering Certification · 14% practice allocation

dbt Analytics Engineering Certification: Managing dbt Model Governance Practice Questions

5 free sample questions from the Managing dbt Model Governance domain, with answers and explanations. The full dbt Analytics Engineering Certification bank has 327 questions across 7 domains. Questions are scenario-based and written from the official dbt Labs exam guide.

1.

Which ref() syntax correctly pins a reference to version 3 of a model named dim_products?

  • A. ref('dim_products', version='3') only, as a string
  • B. ref('dim_products_v3')
  • C. ref('dim_products', v=3)✓ Correct
  • D. ref('dim_products@3')
Explanation

dbt supports ref('model_name', v=3) (and the longer keyword version=3) to pin to a specific version. Referencing dim_products_v3 as a bare name is incorrect: the node's name is dim_products, with version as separate metadata — dbt would not resolve it. The version argument does not have to be a quoted string; it matches the v value declared in YAML, which is commonly numeric. The @ syntax does not exist in dbt.

2.

Which of the following are required for a model to be referenceable from a different dbt project in a dbt Mesh setup? (Select TWO.)

  • A. The model must have at least one version defined
  • B. The upstream project must be installed/resolved as a dependency (e.g., via dependencies.yml cross-project ref)✓ Correct
  • C. The model must have access: public✓ Correct
  • D. The model must have materialized: table
  • E. The model must belong to a group whose owner has an email address
Explanation

Cross-project references require both that the producer marks the model access: public (protected and private models are not visible outside the project) and that the consumer project declares the producer as a dependency so dbt can resolve ref('project_name', 'model_name'). Versions are optional — a public model may be unversioned. Group ownership metadata is good practice and required if the model is in a group, but a public model does not have to be in a group. Materialization is irrelevant to access; a view can be public.

3.

Consider this model YAML:

models:
  - name: dim_customers
    latest_version: 2
    access: public
    versions:
      - v: 1
        deprecation_date: 2026-06-30
      - v: 2

A downstream model uses ref('dim_customers') with no version argument. Which version is resolved?

  • A. The most recently built version at runtime
  • B. Version 1, because it is listed first
  • C. Version 2, because it is the latest_version✓ Correct
  • D. An error, because a versioned model must always be referenced with an explicit version
Explanation

An unpinned ref() to a versioned model resolves to latest_version — here, v2. Listing order in YAML is irrelevant. dbt explicitly supports unpinned refs (they are how consumers 'float' to the newest version), so it is not an error. Resolution is determined at parse time from the YAML, not from build recency.

4.

Which of the following constraints are typically enforced by the data platform when declared in a dbt model contract on platforms like Snowflake, versus only being informational metadata? (Select TWO that are commonly enforced on most warehouses.)

  • A. foreign_key on Snowflake
  • B. unique on Snowflake
  • C. not_null✓ Correct
  • D. Data type of each column✓ Correct
  • E. primary_key on Snowflake
Explanation

On most cloud warehouses, not_null and column data types are actually enforced by the database at build time — a violating row or mismatched cast fails the build. Snowflake, by contrast, accepts primary_key, unique, and foreign_key constraints as metadata only; they are not enforced, so a duplicate key will still load successfully. That is why dbt docs recommend pairing contracts with data tests for uniqueness and referential integrity.

5.

An analytics engineer wants int_orders_pivoted to be referenceable only by other models that belong to the same group, finance. Which access modifier should be applied to the model?

  • A. access: group_only
  • B. access: protected
  • C. access: public
  • D. access: private✓ Correct
Explanation

private restricts ref() to models that are members of the same group, which is exactly the requirement for intermediate models owned by a single team. protected would allow any model in the project to reference it, which is broader than required. public would additionally expose it to downstream projects. group_only is not a valid dbt access value — the only valid values are private, protected, and public.

Test yourself across every dbt Analytics Engineering Certification domain

The free dbt Analytics Engineering Certification practice test mixes about 20 questions weighted like the exam. The full 327-question bank adds instant grading, flashcards and a timed mock exam.

Study this domain

Managing dbt Model Governance study guide (dbt Analytics Engineering Certification) →

Other dbt Analytics Engineering Certification domains

← All dbt Analytics Engineering Certification study resources