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)
| OrderID | Customer | Product | Category | Region | Amount |
|---|---|---|---|---|---|
| 1001 | Rahul | Laptop | Electronics | Delhi | 45,000 |
| 1002 | Rahul | Mobile | Electronics | Delhi | 18,000 |
| 1003 | Priya | Laptop | Electronics | Noida | 47,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
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