Forum Discussion
Snowflake schema
- 25 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.
Yes,denormalizing is one part of converting a snowflake model to a star schema, but you should not simply denormalize everything.If you are doing this in Microsoft Fabric for a Power BI semantic model, I would approach it as a dimensional-model redesign, not as a table-by-table conversion. Microsoft recommends star schema for analytical workloads: facts contain events/measures at a consistent grain, while dimensions contain the attributes used for filtering/grouping