Dimension Tables and SCD2 best practices

The problem I’m having

I’d like to understand how the community are building their Dimension tables and taking advantage of SCD6

The context of why I’m trying to do this

I have some qualitative data I’d like to model in a Dimension table to support my Fact table. Some attributes can be simply overwritten (SCD1) while others need to capture all historic changes (SCD2) and maybe an optional “previous value column” (SCD3) for handy reporting.

What I’ve already tried

I understand dbt Snapshots support SCD2, and best practice is to feed Source tables directly with no transformations.

I’d like to know how others are feeding their dimension tables.

I had hoped there would be a best practice to enable this on an dimension table

SCD and Star Schemas

I’m new to dbt and have enjoyed building out the raw, staging and intermediate tables. However, hitting some road bumps deploying the data marts. Should I be looking at MetricFlow?

Some example code or error messages

None.

I am also curious about this. I can understand the allocating of a surrogate key, maybe being a concatenation of fields. And that all works fine if you only have static dimensions or Type 1’s, but the minute you have Type 2’s, how do you create the correct surrogate key onto the facts? In typical SQL we would use a start and end effective date on the dimensions and join to the fact with that date. But now that is not how the dbt model typically would work?