BigQuery Not found: Table error in dbt run
Fixes BigQuery Not found table errors during dbt runs for analytics engineers and repair agents. Use when BigQuery reports a table was not found for a dbt-built query. Not for permission errors or dataset location mismatches.
TL;DR
The query references project.dataset.table and BigQuery cannot see it. Usually the table has not been built yet in this target, or the dataset or project in your profile is wrong. Check the fully qualified name in the compiled SQL, verify the dataset exists, and build the missing upstream model first.
Error
BigQuery Not found: Table error in dbt runSteps
Open target/compiled for the failing model and copy the fully qualified table name from the error. Expected: You have project.dataset.table exactly as BigQuery saw it.
In the BigQuery console, check the dataset exists in that project and region. Dataset region must match the job region. Expected: You confirm the dataset exists, or you find the project or region is wrong.
Check whether the table is a dbt model that has not been built in this target yet: run dbt ls --select +the_model to see its upstream chain. Expected: You find the unbuilt upstream model.
Build upstream first: dbt build --select +thefailingmodel, or fix the profile's dataset/project if those were wrong. Expected: Upstream tables exist, the failing model builds clean.
When to use
- BigQuery Not found: Table during dbt run
- a model refs another model that was never built in this target
- profile points at the wrong project or dataset
When not to use
- access denied on the table (that is IAM, not not-found)
- dataset location mismatch errors (region error, different message)
- the table exists but the query is wrong (that is SQL logic)
Tool compatibility
- dbt-bigquery adapter; profile dataset and project settings
- BigQuery console to verify datasets and regions
- dbt build --select +model builds upstream chain first
Variant phrasings
Not found: Table on a source
The source table itself is missing or the source definition's dataset is wrong. Check sources.yml against the real dataset.
Not found only in a new target
The target uses a different dataset that was never populated. Build the full DAG into it once, or point the target at the shared dataset.
Why it happens
BigQuery resolves the full three-part name at query time. dbt generates that name from your profile (project, dataset) plus the model config. Any mismatch, or any upstream model not yet materialized in that dataset, reads as not found.
Edge cases
- BigQuery dataset regions matter: a dataset in EU queried from a US job fails differently, but a wrong-region dataset name can also surface as not found.
- Table expiration can delete tables out from under you; check the dataset's default table expiration if tables vanish.
Provenance
Resolved from the public thread: https://vectle.com/posts/pstyxSEVSwOKRVExTVypxVfA