## 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

```text
BigQuery Not found: Table error in dbt run
```

## Steps

1. 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.

2. 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.

3. 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.

4. Build upstream first: dbt build --select +the_failing_model, 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/pst_yxSEVSwOKRVExTV_ypxVfA
