Your project has models/staging/stg_orders.sql. You misspell the ref in models/marts/fct_orders.sql as ref('stg_ordrs') and run dbt build in dev. The run ends with the log below. Which statement regarding this error is true?
- dbt executed the upstream models, then failed when it compiled fct_orders.
- dbt aborted before executing any node, so nothing was built.CORRECT
- dbt skipped fct_orders and completed the rest of the run.
- The warehouse raised the error because the relation stg_ordrs does not exist.
WHY
Every ref() is resolved while dbt reads the project files and links the DAG, before any node is executed. The name 'stg_ordrs' matches no model in the project or its packages, so dbt raises a Compilation Error and exits the invocation right there — the log shows no node result lines and no end-of-run summary, because no model was ever built and no relation was created or replaced. The fix is a one-character edit in models/marts/fct_orders.sql followed by a re-run; nothing has to be cleaned up in the warehouse.
WHY THE OTHERS ARE WRONG
- dbt executed the upstream models, then failed when it compiled fct_orders.
- dbt resolves the refs for the whole selected graph up front, not model by model during execution. The failure happens while the graph is being linked, so stg_orders never reached the execution phase either.
- dbt skipped fct_orders and completed the rest of the run.
- SKIP is the status dbt assigns to downstream nodes when an upstream node fails or errors at run time. An unresolved ref is fatal to the whole invocation: dbt stops instead of continuing with the remaining nodes.
- The warehouse raised the error because the relation stg_ordrs does not exist.
- An error coming back from the data platform is reported as a Database Error and quotes the failing SQL or relation. This one says Compilation Error and names a node in the dbt graph — dbt never issued a query for fct_orders.