Practice for the dbt Analytics Engineering Certification exam with 9 exam-style practice questions, instant answer reveals, and concise explanations of every correct answer. Topics include: A production run resulted in 30 models succeeding, 1 failing (fct_reviews), and 15 being skipped. You run: dbt retry How. Follow @CertPunch and visit certpunch.com for more certification practice exams and study content.
Prefer hands-on? Take this round as an interactive practice test — answer every question, get instant feedback, and see your score: Start the dbt Analytics Engineering Certification practice test →
What you will practice
- A production run resulted in 30 models succeeding, 1 failing (fct_reviews), and 15 being skipped. You run: db…
- Which statement about env_var() and var() is correct?
- What is the purpose of groups in dbt?
- After running dbt run, you see: Compilation Error in model src_listings (models/src/src_listings.sql) 'listin…
- What is the purpose of dbt build compared to running dbt run and dbt test separately?
- How can you configure a test to issue a warning instead of causing a build failure?
Answers and explanations
Tap a question to expand the answer and the exam reasoning. Try to commit to your own pick first.
Q1. A production run resulted in 30 models succeeding, 1 failing (fct_reviews), and 15 being skipped. You run: dbt retry How many models will dbt attempt to build?
Answer: C. The 1 failed model and the 15 skipped models (16 total), excluding the 30 successes
The retry command re-executes any nodes that did not succeed, including both failed and skipped models. The main distractor is option B, which incorrectly assumes skipped models are ignored.
Q2. Which statement about env_var() and var() is correct?
Answer: B. env_var() reads system environment variables and works in dbt_project.yml; var() reads from vars and only works in Jinja
The env_var function reads system environment variables and works in dbt_project.yml and profiles.yml. Remember that var reads project variables but is restricted to Jinja contexts, unlike env_var which can securely configure environments outside of models.
Q3. What is the purpose of groups in dbt?
Answer: A. To assign models to a logical grouping that restricts cross-group references based on the access config
Groups organize models into logical collections, often representing team ownership or business domains. Combined with the access config, groups restrict cross-group references, preventing private models from being referenced outside their group.
Q4. After running dbt run, you see: Compilation Error in model src_listings (models/src/src_listings.sql) 'listings' is undefined. This can happen when you try to reference a source or model that does not exist, or when you use an undefined va…
Answer: A. The table name listings is missing quotes — it should be {{ source('airbnb', 'listings') }} with both arguments quoted
The table name lacks quotes, causing Jinja to evaluate it as an undefined variable. Always pass string literals to functions like source, wrapping arguments in quotes to prevent compilation errors during execution.
Q5. What is the purpose of dbt build compared to running dbt run and dbt test separately?
Answer: A. dbt build runs models and tests in DAG order, testing each model immediately after it is built
The build command executes nodes in DAG order, interleaving models and tests so tests run immediately after their dependencies. It prevents downstream execution if tests fail, unlike running sequentially without fail-fast behavior.
Q6. How can you configure a test to issue a warning instead of causing a build failure?
Answer: A. Set severity: warn on the test configuration
Setting severity to warn allows the test to fail without returning a failure exit code. The run-level warn-only flag is a distractor because it applies globally to all tests rather than configuring a single test.
Q7. You want to run ONLY the unit tests in your dbt project, without running any data tests (such as not_null or unique). Which command achieves this?
Answer: A. dbt test –select test_type:unit
The test_type:unit selector filters the dbt test command to execute only unit tests. Remember that dbt unit tests are integrated into the standard test command rather than having a dedicated standalone command.
Q8. A developer wants to build all models that feed into the executive dashboard. They run: dbt build –select +exposure:executive_dashboard Looking at the lineage graph above, which models are built by this command?
Answer: B. Every upstream model: dim_listings_w_hosts, mart_fullmoon_reviews, and their ancestors
The plus prefix traverses the entire upstream dependency graph to build all ancestors. Option A is a strong distractor, but it only selects the direct parents and misses the indirect upstream dependencies.
Q9. Given this staging model configured as ephemeral in dbt_project.yml: WITH raw_listings AS ( SELECT * FROM {{ source('airbnb', 'listings') }} ) SELECT id AS listing_id, listing_url, name AS listing_name, room_type, minimum_nights, host_id…
Answer: C. No warehouse object is created — dbt injects the model's SQL as a CTE into the downstream model at compile time
Ephemeral models do not create physical tables or views in the warehouse. Instead, dbt compiles the model code into a Common Table Expression within downstream models. Use this materialization to avoid cluttering your schema with staging tables.
More dbt Analytics Engineering Certification drills and other practice exams are on @CertPunch. New rounds drop every few days at certpunch.com.