# Enquiry on incremental materialisation

**URL:** <https://discourse.getdbt.com/t/enquiry-on-incremental-materialisation/5356>\
**Category:** Help\
**Tags:** incremental\
**Created:** [November 16, 2022, 12:10pm UTC](https://discourse.getdbt.com/t/enquiry-on-incremental-materialisation/5356 "2022-11-16T12:10:32Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![oliver.ng](https://avatars.discourse-cdn.com/v4/letter/o/8e8cbc/32.png) [@oliver.ng](https://discourse.getdbt.com/u/oliver.ng)\
**Post date:** [November 16, 2022, 12:10pm UTC](https://discourse.getdbt.com/t/enquiry-on-incremental-materialisation/5356/1 "2022-11-16T12:10:32Z")

</div>

Hello,

A few general enquiries on incremental materilisation.

1. If I add new columns in a table that is materialised as “incremental”. Is the only way to pick up these new columns in the next refresh via --full-refresh? I’d like to confirm that without --full-refresh, and even there are incremental rows that can be picked up, the new columns will not be reflected?

2. As such, if I add new columns into incremental models. Whenever I merge my dev branch into prod, would I need to manually update my prod job to --full-refresh for once then removing the --full-refresh flag after the 1st run is completed. Would dbt “knows” new columns are added based on the PR such that the user can avoid the manual change of prod job, please?

Thanks,  
Oliver

---

<div class="post-metadata">

**Author:** ![fraserwatt](https://sea2.discourse-cdn.com/flex020/user_avatar/discourse.getdbt.com/fraserwatt/32/1260_2.png) [@fraserwatt](https://discourse.getdbt.com/u/fraserwatt)\
**Post date:** [November 17, 2022, 8:22am UTC](https://discourse.getdbt.com/t/enquiry-on-incremental-materialisation/5356/2 "2022-11-17T08:22:14Z")

</div>

I guess it depends on your implementation, but I know that at least on bigquery your build will fail if you’re adding new tables to an incremental table without a --full-refresh.

I’m not sure what your use case is, but if that’s going to cause a problem maybe [snapshots](https://docs.getdbt.com/docs/build/snapshots) would be a better solution?

---

<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:** [November 25, 2022, 2:57am UTC](https://discourse.getdbt.com/t/enquiry-on-incremental-materialisation/5356/3 "2022-11-25T02:57:59Z")

</div>

Have a look at the on-schema-change configurations of your incremental model: [Incremental models | dbt Developer Hub](https://docs.getdbt.com/docs/build/incremental-models#what-if-the-columns-of-my-incremental-model-change)

If you use `append_new_columns`, dbt will add the new column and include its values (for new rows). dbt will never go back and do a backfill of old data without you issuing a `--full-refresh` command.

---

<div class="post-metadata">

**Author:** ![oliver.ng](https://avatars.discourse-cdn.com/v4/letter/o/8e8cbc/32.png) [@oliver.ng](https://discourse.getdbt.com/u/oliver.ng)\
**Post date:** [November 30, 2022, 2:50pm UTC](https://discourse.getdbt.com/t/enquiry-on-incremental-materialisation/5356/4 "2022-11-30T14:50:51Z")

</div>

Thanks @joellabes that is exactly what I am looking for.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex020/uploads/getdbt/original/1X/a7a7ca1fe379aaf90952b0e13118a817babcd14f.png) [@system](https://discourse.getdbt.com/u/system)\
**Post date:** [December 7, 2022, 2:51pm UTC](https://discourse.getdbt.com/t/enquiry-on-incremental-materialisation/5356/5 "2022-12-07T14:51:43Z")

</div>

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.
