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

After two decades of building BI solutions, I can tell you exactly where most Power BI reports go wrong: the data model. Not the visuals. Not the DAX. The model. Analysts who came from Excel naturally want to put everything into one flat table — the way a spreadsheet works. Customer name in every row. Product category in every row. Region in every row. It feels familiar. It is also the single biggest mistake you can make in Power BI, and I have seen it cripple reports that worked fine at 10,000 rows and became unusable at 500,000. Power BI's engine — VertiPaq — is specifically designed to compress column-store data across separate tables linked by relationships. When you feed it a properly designed star schema, it compresses data so efficiently that 50 million rows can sit in 2GB of RAM and query in under a second. When you feed it a single flat table with repeated text values in every row, you get a bloated model that is slow, hard to write DAX for, and even harder to maintain. The investment in understanding the data model pays compound interest. Every DAX formula you write is simpler with a good model. Every report loads faster. Every filter works correctly. Every new analyst who joins the team can understand the structure immediately. Build the model right once, and everything else becomes easier. Build it wrong, and every feature you add is a fight against your own foundation.
✗ 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)?

Related Topics

Relationships in Power BICreate and manage table relationships — the foundation of multi-table analysisStar Schema DesignDesign an efficient data model using star schema — the industry standard for Power BIDAX IntroductionWhat DAX is, how it works, and why it is the most important Power BI skill to master