dbt Analytics Engineering Certification · 15% practice allocation

dbt Analytics Engineering Certification: Troubleshooting and Optimizing dbt Pipelines Practice Questions

5 free sample questions from the Troubleshooting and Optimizing dbt Pipelines 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.

A dbt Cloud job is configured with three commands executed in order: dbt run, dbt test, dbt snapshot. If dbt test fails on one model, what is the DEFAULT behavior for the rest of the job?

  • A. The job skips dbt snapshot but sends a warning notification rather than marking the job as failed
  • B. The job halts immediately after dbt test fails; dbt snapshot does not run✓ Correct
  • C. The job continues and runs dbt snapshot, but marks the overall job as failed
  • D. The job automatically retries dbt test up to three times before halting
Explanation

By default in dbt Cloud, when a command in a job step fails (returns a non-zero exit code), the subsequent commands in that job do not execute and the overall job is marked as failed. dbt snapshot would not run. Option C incorrectly describes a 'continue on error' behavior that is not the default. Option D is incorrect — dbt Cloud does not automatically retry individual commands within a job by default. Option A is incorrect; there is no built-in 'warning-only' mode for test failures at the job level.

2.

In dbt Cloud, a production job is configured to run the following commands in sequence: dbt run, dbt test. The job fails midway through dbt test because three data tests fail. Which statement BEST describes the default behavior of the remaining commands in that job?

  • A. dbt stops the entire job immediately on the first test failure and marks it as errored
  • B. dbt skips the failed tests, marks them as warnings, and continues the job normally
  • C. dbt completes all remaining tests in the dbt test step, then continues to execute subsequent job commands regardless of failures
  • D. dbt completes all remaining tests in the dbt test step, then stops before executing any subsequent commands in the job✓ Correct
Explanation

By default, dbt test uses --no-fail-fast, meaning dbt runs ALL tests even after encountering failures. However, when a step in a dbt Cloud job exits with a non-zero return code (because tests failed), the job halts and does not proceed to any subsequent commands. Option A is wrong — dbt does not stop mid-step on the first failure unless --fail-fast is explicitly set. Option C is wrong — subsequent job commands are NOT executed after a step fails. Option B is wrong — failed tests are recorded as errors (or warnings only if warn_if / error_if thresholds are configured), not silently skipped.

3.

A large dbt Cloud deployment has hundreds of models. The data team wants to set up a Slim CI job that:

  1. Only tests models changed in the PR
  2. Does NOT rebuild unchanged upstream models (to save cost)
  3. References the compiled outputs of unchanged upstream models from the production run

Which combination of settings is required to achieve all three goals? (Select TWO)

  • A. Use --select state:modified+ in the CI job's dbt build command to limit execution to changed models and their descendants✓ Correct
  • B. Use --select tag:ci and manually tag every model that should run in CI
  • C. Configure the CI job to defer to the production environment so unchanged upstream models are referenced from prod rather than rebuilt✓ Correct
  • D. Set --full-refresh on the CI job to ensure all models are rebuilt from scratch
  • E. Enable the 'Run on all models' toggle in the CI job to guarantee complete DAG coverage
Explanation

Goal 3 (reference prod outputs without rebuilding) requires deferral to the production environment (Option C). Goal 1 and 2 (only changed models and descendants, no full rebuild) require --select state:modified+ (Option A). Together these two settings implement the standard Slim CI pattern. Option D (--full-refresh) is the opposite of cost-saving — it forces a full rebuild of all selected models. Option E does not exist as a dbt Cloud toggle. Option B using manual tag:ci does not dynamically adapt to what changed in each PR and requires constant maintenance.

4.

A production dbt Cloud job runs every night. The team wants to ensure that if the job fails, only the failed models (and their downstream dependents) are retried in a follow-up run — NOT the models that succeeded. They also want to avoid using --full-refresh on the retry. Which command should be used in the retry job?

  • A. dbt retry which automatically re-runs all nodes from the last failed run without any additional configuration
  • B. dbt run --select result:error result:skipped
  • C. dbt build --select state:modified+ --defer --state /path/to/prior/artifacts
  • D. dbt build --select result:failed+ --defer --state /path/to/prior/artifacts✓ Correct
Explanation

result:failed+ selects nodes that failed in the prior run plus all their downstream dependents (which were likely skipped due to upstream failure). Combined with --defer and --state, unchanged upstream models are referenced from their existing prod materializations rather than rebuilt. This is the precise pattern for targeted retries. Option C (state:modified+) compares file state, not run result state — it would not correctly identify which models errored at runtime. Option B (result:error result:skipped) is close but misses the + to include downstream dependents of failed models; also using dbt run skips tests. Option A is tempting — dbt retry is a real command introduced in dbt v1.6 that re-runs failed and skipped nodes from the last run — however, it does not support the --defer flag for cross-environment deferral, making it less suitable for a separate retry job that needs to reference production state artifacts explicitly. Option D represents the fully explicit and controllable production pattern.

5.

Your team wants to implement a Slim CI check in dbt Cloud. The goal is to run tests only on models that have changed in a pull request, while deferring the builds of unchanged upstream models to the production environment. Which command correctly implements this pattern?

  • A. dbt test --select path:modified --defer --state ./prod-artifacts
  • B. dbt test --select state:modified+ --defer --state ./prod-artifacts
  • C. dbt build --select state:modified+ --defer --state ./prod-artifacts✓ Correct
  • D. dbt run --select state:modified --no-defer --state ./prod-artifacts
Explanation

dbt build is the preferred command for Slim CI because it runs models, tests, seeds, and snapshots together. state:modified+ selects all modified models AND their downstream dependents (ensuring nothing downstream of a change is missed). --defer tells dbt to resolve references to unmodified upstream nodes from the production manifest rather than rebuilding them. --state points to the directory containing the production manifest.json. Option B uses dbt test alone, which skips the model build step — changed models would not be rebuilt before testing. Option D omits --defer, meaning dbt would try to build all upstream models rather than reusing production artifacts, and state:modified (without +) misses downstream impacts. Option A uses path:modified, which is not a valid dbt selection method — state:modified is the correct selector.

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

Troubleshooting and Optimizing dbt Pipelines study guide (dbt Analytics Engineering Certification) →

Other dbt Analytics Engineering Certification domains

← All dbt Analytics Engineering Certification study resources