Forum Discussion
Snowflake schema
- 26 days ago
Hi powerbiexpert22,
You don't necessarily need to denormalize everything to get a star schema.
I'd start with the fact table and define its grain first. Then look at the related tables and see which ones are mainly providing descriptive attributes.
For example:
FactSales
→ DimProduct
→ DimSubcategory
→ DimCategorycould become a single DimProduct containing Product, Subcategory, Category, Brand, etc.
The same can be done with other dimensions where it makes sense.
You also don't have to physically change the Snowflake tables. You can keep the source schema as it is and create a dimensional layer using Snowflake views or your ETL/ELT process for Power BI.
The main goal is to have simple relationships such as:
DimProduct 1 → * FactSales
DimCustomer 1 → * FactSales
DimDate 1 → * FactSalesI wouldn't flatten every table blindly, though. Tables with different grains or many-to-many relationships need to be handled separately to avoid duplicate rows and incorrect measures.
If you share the table names/relationships, it would be easier to suggest exactly which ones I'd combine.
Hi,
Denormalizing is the right approach, snowflake to star is basically collapsing sub-dimension chains into their parent table.
To pick candidates, look for dimensions that only exist to normalize another dimension, no fact table relates to them directly. Product → Category → Subcategory chains are classic examples, collapse into one Product table with those as columns.
Keep tables separate if they're genuinely reused across multiple fact tables independently.
Do the merges in Power Query, join sub-dimensions into parents, then drop the redundant tables.
If this helped, feel free to give it a kudos or mark it as solution, helps others find it too.