DBT Snapshot question
I am learning how to build a pipeline using dbt and am confused with snapshot. I have a question about snapshot.
So, I have read somewhere that snapshot should be made as close to raw data as possible.
Let's say I make snapshot of raw data. I need a stage layer to clean the data before loading it to the dimension layer. In this case, do I make the stage model as incremental and load only the changes at the dimension layer? Would I be tracking history in two layers, snapshot and dimension if this is the case?
Also, which layer is responsible for generating keys? I assume it would be the snapshot layer.
And are only dimension table candidates for snapshot? Do I load fact as incremental straight to the fact table?