Data Modelling in Power BI

Last Updated: 03 Sep, 2026

What Is Data Modelling in Power BI?

Data modelling in Power BI is the process of organizing multiple tables, defining relationships between them, and structuring data so that visuals, DAX calculations, and reports return correct, combined results. A well-designed Power BI data model separates facts from dimensions and follows a star schema layout.

Why Data Modeling Matters in Power BI

A Power BI data model determines how every visual, measure, and filter behaves. When tables are properly organized with clear relationships, DAX formulas become simpler, report performance improves, and end users can slice data intuitively. Without a deliberate model, reports rely on a single flat table — leading to duplicated data, slow refreshes, and unpredictable filter interactions.

Key Data Modeling Concepts in Power BI

  • Fact tables: Central tables holding transactional or measurable data (e.g., Sales, Orders) with numeric values and foreign keys linking to dimension tables.
  • Dimension tables: Descriptive lookup tables (e.g., Date, Product, Customer, Region) that provide context for the numbers in fact tables.
  • Relationships: Links between tables via a shared column (key) that allow filters to flow between them, created automatically or manually in Model View.
  • Star schema: The recommended layout where a single fact table sits at the center with dimension tables radiating outward — simplifying relationships, improving performance, and making DAX calculations more predictable.
  • Normalization vs. denormalization: Normalization splits data across multiple related tables to minimize redundancy (preferred for clean star schemas); denormalization combines data into fewer, wider tables (sometimes used for small, simple reports).

How to Create a Data Model in Power BI

Building a data model in Power BI Desktop involves connecting to data sources via Get Data, transforming and cleaning the data in Power Query, then switching to Model View to arrange tables and define relationships. You drag a key field from one table onto the matching field in another to create a relationship. Power BI may auto-detect some relationships, but reviewing and correcting them manually ensures accuracy.

Power BI Data Model Best Practices

  • Use a star schema: Keep one central fact table connected to surrounding dimension tables rather than chaining multiple fact tables together or using a single flat table.
  • Create a dedicated Date table: Mark it as the official date table in Model View so time intelligence DAX functions (TOTALYTD, SAMEPERIODLASTYEAR, etc.) work correctly.
  • Minimize calculated columns: Calculated columns are stored in memory and increase file size. Prefer measures for dynamic aggregations and use Power Query for row-level computations where possible.
  • Hide helper columns: Foreign key columns and technical fields that end users don’t need should be hidden from Report View to keep the Fields pane clean.
  • Name tables and columns descriptively: Use plain-language names (“Product Category” rather than “ProdCat”) so that Q&A and report builders can find fields easily.

Can You Create a Data Model in Power BI Online?

The Power BI Service (app.powerbi.com) is primarily for publishing, sharing, and viewing reports. Full data modeling — defining relationships, creating calculated columns, and building complex DAX measures — is done in Power BI Desktop. The online service supports lightweight dataflow transformations and basic measure creation in browser-based datasets, but for a proper multi-table data model you need Power BI Desktop.

Power BI Advanced Data Modeling

Advanced data modeling techniques include composite models (combining DirectQuery and Import mode in a single report), role-playing dimensions (using the same Date table for multiple date columns via inactive relationships and USERELATIONSHIP), calculation groups for reusable DAX patterns, and aggregation tables that cache summarized data for faster queries over large datasets.

Data Modeling with DAX in Power BI

DAX and the data model work together: DAX formulas reference the relationships defined in Model View to filter and aggregate data across tables. RELATED() pulls a value from a connected table in a one-to-many relationship, RELATEDTABLE() returns filtered rows, and CALCULATE() modifies the filter context that flows through relationships. A clean star schema makes these DAX patterns straightforward; a messy model forces workarounds.

How to Build a Data Model in Power BI Desktop

This tutorial walks you through building a star schema data model in Power BI Desktop — from importing raw tables to defining relationships — in about 8 steps. You will end with a clean, well-structured model ready for DAX measures and report visuals.

Prerequisites

  • Power BI Desktop installed (free from the Microsoft Store)
  • A dataset with at least 2-3 related tables (e.g., Sales, Products, Customers)
  • Basic familiarity with the Power BI interface (Report View, Model View, Fields pane)

Step-by-Step: Creating a Data Model

Step 1 — Import your data tables. Go to Home > Get Data, select your source (Excel, CSV, SQL Server, etc.), and load each table. If your data needs cleaning, click Transform Data to open Power Query.

Step 2 — Clean and shape tables in Power Query. Remove unnecessary columns, fix data types, rename columns to plain-language names, handle missing/duplicate rows. Click Close & Apply when done.

Step 3 — Switch to Model View. Click the Model View icon on the left sidebar. You will see all loaded tables displayed as boxes.

Step 4 — Identify your fact and dimension tables. The fact table holds transactional/numeric data (e.g., Sales). Dimension tables provide descriptive context (Product, Customer, Date). Arrange the fact table in the center.

Step 5 — Create relationships. Drag a key column from a dimension table onto the matching foreign key in the fact table. Power BI draws a line with cardinality indicators (1 and *).

Step 6 — Verify cardinality and cross-filter direction. Double-click the relationship line. Confirm cardinality is One-to-Many and cross-filter direction is Single. Click OK.

Step 7 — Create a Date table and mark it. Create one using DAX: Dates = CALENDAR(DATE(2020,1,1), DATE(2025,12,31)). Add Year, Month, Quarter columns. Right-click > Mark as Date Table.

Step 8 — Hide technical columns. Right-click foreign key columns and select Hide in Report View to keep the Fields pane clean.