TutorialsPower BIStar Schema Design

Star Schema Design

Design an efficient data model using star schema — the industry standard for Power BI

The star schema is not a Power BI concept. It predates Power BI by thirty years — it comes from Ralph Kimball's data warehousing methodology from the 1990s, and it has outlasted every BI tool trend since then. That longevity is not an accident. It works. I have modelled data in nearly every architecture imaginable over my career — normalised relational databases, denormalised flat files, ODS layers, data vaults, graph databases. For interactive business reporting, nothing performs better or maintains cleaner than a well-designed star schema. The reasons are not arbitrary. A star schema aligns with how BI engines — including Power BI's VertiPaq — are built to work. It separates facts (what happened: transactions, events, measurements) from dimensions (who, what, where, when: customers, products, regions, dates). This separation is what makes cross-dimensional filtering fast and DAX formulas readable. The practical test I use to check if a model is star schema ready: can you answer every business question with a measure on the fact table, filtered by one or more dimension tables? If yes, you have a star schema. If your answer requires joining two fact tables, or filtering a dimension by another dimension, you have a design problem — and it will show up as slow reports and confusing DAX. Learn this design pattern completely. It is the one modelling concept that transfers directly from Power BI to Tableau, SQL Server Analysis Services, Databricks, and any serious BI platform you will ever work with.
Star Schema — Industry Standard for Power BI
📅
DIM_Date
DateKey · Month · Quarter · Year
👤
DIM_Customer
CustID · Name · Region
⭐ FACT_Sales
OrderID
DateKey
CustID
ProductID
RegionID
Amount
Quantity
📦
DIM_Product
ProductID · Name · Category
🗺️
DIM_Region
RegionID · City · State · Zone
⭐ Fact tableTransactions — numeric + FK keys
🔷 Dimension tablesDescriptive attributes

Example

A complete star schema for a sales report

          ┌─────────────┐
          │  DIM_Date   │
          │  DateKey    │
          │  Date       │
          │  Month      │
          │  Quarter    │
          │  Year       │
          └──────┬──────┘
                 │
┌──────────┐    │    ┌──────────────┐
│DIM_Cust  │    │    │ DIM_Product  │
│CustID    │    │    │ ProductID    │
│Name      │    │    │ ProductName  │
│Region    ├────┤    │ Category     │
│Segment   │    │    │ Price        │
└──────────┘    │    └──────────────┘
                │
         ┌──────┴───────┐
         │  FACT_Sales  │  ← CENTRE (fact table)
         │  OrderID     │
         │  DateKey     │
         │  CustID      │
         │  ProductID   │
         │  Quantity    │
         │  Amount      │
         └──────────────┘

Rules:
• Fact table has FK columns + numeric measures only
• Dimension tables have descriptive attributes
• All relationships flow FROM dimensions TO fact
💡 The fact table only stores numbers and foreign keys. All descriptive text lives in dimension tables.

Key Points

  • Fact table = transactions (sales, orders, calls, events) with numeric columns and foreign keys
  • Dimension table = descriptive attributes (customer name, product category, region, date attributes)
  • Every dimension connects to the fact table — not to each other (in a pure star schema)
  • A date dimension table is non-negotiable — every good Power BI model has one
  • Snowflake schema (dimensions linked to dimensions) is harder in Power BI — flatten it when possible

Practice Question

In a star schema, which table should contain columns like Product Name, Category, and Price?

Related Topics

The Data Model in Power BIWhat a data model is and why it is the foundation of every good Power BI reportRelationships in Power BICreate and manage table relationships — the foundation of multi-table analysisDAX IntroductionWhat DAX is, how it works, and why it is the most important Power BI skill to master