TutorialsPower BIThe Data Model in Power BI

The Data Model in Power BI

What a data model is and why it is the foundation of every good Power BI report

The data model is the heart of Power BI. Everything you build — every visual, every measure, every filter — runs on top of the data model. Understanding it well separates analysts who build accurate reports from those who get wrong numbers. A data model is simply a collection of tables and the relationships between them. Instead of having one giant flat table with all your data (like a pivot table in Excel), Power BI links separate tables through key columns. This approach is faster, uses less memory, and makes calculations far more flexible. Power BI uses an in-memory engine called VertiPaq that compresses and stores your data — this is why even 10 million row reports can load in seconds when the model is designed correctly.
✗ Flat Table (Avoid)
OrderIDCustomerProductCategoryRegionAmount
1001RahulLaptopElectronicsDelhi45,000
1002RahulMobileElectronicsDelhi18,000
1003PriyaLaptopElectronicsNoida47,000
"Rahul", "Laptop", "Electronics" repeated in every row → bloated, slow
✓ Star Schema (Best Practice)
FACT_Sales
OrderID · CustID · ProdID · Amount
DIM_Customers
CustID · Name · Region · Segment
DIM_Products
ProdID · Name · Category · Price
DIM_Date
DateKey · Date · Month · Quarter · Year
Each name appears once → compact, fast, clean DAX

Example

Flat table vs data model
FLAT TABLE (Excel style — avoid this in Power BI):
OrderID | Customer | Region | Product | Category | Amount | Date
1001    | Rahul    | Delhi  | Laptop  | Electr.  | 45000  | Jan
1002    | Priya    | Noida  | Laptop  | Electr.  | 48000  | Jan
→ "Laptop" and "Electronics" repeated in every row = bloated

DATA MODEL (Star Schema — ideal in Power BI):
FACT TABLE: Sales
  OrderID | CustomerID | ProductID | Amount | DateKey

DIMENSION TABLES:
  Customers: CustomerID | Name | Region | Segment
  Products:  ProductID  | Name | Category | Price
  Date:      DateKey    | Date | Month | Quarter | Year

→ Each name appears ONCE in its dimension table
→ Sales table only stores IDs — compact and fast
💡 A well-structured data model makes your report faster and your DAX formulas simpler.

Key Points

  • Model View (chain-link icon on left) shows all tables and their relationships as a diagram
  • A good model has fact tables (transactions, sales, orders) and dimension tables (products, customers, dates)
  • Never combine all data into one flat table — it hurts performance and makes DAX harder
  • Relationships let you filter across tables — filter a dimension and it filters the fact table automatically
  • Power BI can handle hundreds of millions of rows in a well-optimised model

Practice Question

In a Power BI data model, which type of table typically contains the transactional data (like sales records with amounts and dates)?