# Adding a column to an incremental model

**URL:** <https://discourse.getdbt.com/t/adding-a-column-to-an-incremental-model/55>\
**Category:** Archive\
**Created:** [June 15, 2018, 4:46pm UTC](https://discourse.getdbt.com/t/adding-a-column-to-an-incremental-model/55 "2018-06-15T16:46:53Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![mehdi.elamine](https://sea2.discourse-cdn.com/flex020/user_avatar/discourse.getdbt.com/mehdi.elamine/32/28_2.png) [@mehdi.elamine](https://discourse.getdbt.com/u/mehdi.elamine)\
**Post date:** [June 15, 2018, 4:46pm UTC](https://discourse.getdbt.com/t/adding-a-column-to-an-incremental-model/55/1 "2018-06-15T16:46:53Z")

</div>

What will `dbt` do if I add a new column to an existing incremental model? Add the column and keep the value for it as NULL for older rows?

---

<div class="post-metadata">

**Author:** ![joellabes](https://sea2.discourse-cdn.com/flex020/user_avatar/discourse.getdbt.com/joellabes/32/3980_2.png) [@joellabes](https://discourse.getdbt.com/u/joellabes)\
**Post date:** [January 10, 2025, 12:30am UTC](https://discourse.getdbt.com/t/adding-a-column-to-an-incremental-model/55/11 "2025-01-10T00:30:12Z")

</div>

I’ve hidden the old discussion since it’s no longer accurate, but this page still ranks highly in search results, so a quick update:

As of v0.21 (back in October 2021!), you can configure `on_schema_change` behaviour, choosing between

- `ignore` (default): Don’t add new columns, fail if a column has been removed
- `fail`: Triggers an error message when the source and target schemas diverge
- `append_new_columns`: Append new columns to the existing table. Note that this setting does _not_ remove columns from the existing table that are not present in the new data.
- `sync_all_columns`: Adds any new columns to the existing table, and removes any columns that are now missing. Note that this is _inclusive_ of data type changes. On BigQuery, changing column types requires a full table scan; be mindful of the trade-offs when implementing.

None of these will backfill a new column’s values in old rows. In that case you will still need to `--full-refresh` your model (or manually update the records in a one-off operation outside of dbt).

For more details and examples, [check out the docs](https://docs.getdbt.com/docs/build/incremental-models#what-if-the-columns-of-my-incremental-model-change)
