Fact Tables and Dimension Tables in Power BI

Last Updated : 8 Sep, 2026

Power BI uses fact tables to store main transactional or measurable data and dimension tables to provide descriptive context for that data. They are connected through common key columns to support analysis and reporting.

Fact tables and dimension tables are also commonly referred to as data tables and lookup tables, respectively.

Frame-3340
Relationship between Data and Lookup Tables

Fact Tables

Fact tables store detailed records of business transactions, events or measurements used for analysis in Power BI. They typically contain measurable values along with key columns that connect them to related dimension tables.

For example, a Sales fact table may contain SaleID, ProductID, Quantity, SalesAmount and other transaction-related fields.

Characteristics

  • Detailed records: Usually contain individual transactions, events or observations.
  • Measurable values: Often include values such as quantity, sales, cost, profit or salary.
  • Key columns: May contain IDs that connect records to dimension tables.
  • Large volume: Generally contain more rows because each transaction or event can form a separate record.
  • Calculations: Provide the values used in aggregations, measures and other DAX calculations.

Dimension Tables

Dimension tables store descriptive information about the entities represented in a fact table. They commonly contain attributes such as product names, customer details, categories, locations or dates.

A dimension table can contain both text and numeric attributes. For example, a Product dimension table may contain ProductID, ProductName, Category and Price.

Characteristics

  • Descriptive attributes: Provide additional information about products, customers, dates, locations or other entities.
  • Unique keys: Typically contain a key that uniquely identifies each entity.
  • Fewer rows: Usually contain fewer rows than the related fact table because each entity is generally represented once.
  • Filtering and grouping: Their attributes can be used to filter, categorize and group data in reports.
  • Reusable information: A dimension table can provide context for analyzing one or more related fact tables.

Example: Creating & Connecting Tables

Fact and dimension tables can be imported or created in Power BI using different methods. The important step for this article is to establish relationships between them using their common key columns.

1. Import or Create Tables

Power BI allows you to:

  • Import data from different sources such as Excel, CSV, databases and other supported sources using Home > Get Data.
  • Create tables using options such as Enter Data or DAX.
  • Transform and prepare data using Power Query before loading it into the model.

datafieldsPane

2. Create a Relationship

Once the fact and dimension tables are available, open Model view to connect them.

For example: Product[ProductID] : Sales[ProductID]

Here, ProductID uniquely identifies products in the Product dimension and is used in the Sales fact table to identify the product associated with each transaction.

A common relationship between a dimension table and a fact table is one-to-many (1:*):

  • 1 : Dimension table
  • * : Fact table

For example, one product can appear in multiple sales records.

You can create the relationship by dragging the matching field from one table to the corresponding field in the other table or through Modeling > Manage relationships.

modellingCreatetable

3. Verify the Relationship

After creating the relationship, check its:

  • Cardinality, such as One-to-many (1:*).
  • Cross-filter direction, which is typically Single for a standard dimension-to-fact relationship.
  • Key columns, ensuring that the dimension-side key uniquely identifies each entity.

The resulting relationship allows fields from the dimension table to filter and group the data in the related fact table.

editR

Other Table Operations

Power BI also provides features for formatting tables, adding or modifying columns, applying filters and sorting, using DAX and publishing reports. These are separate Power BI topics and can be explored in their respective articles.

Benefits

1. Better Data Organization: Separating transactional data from descriptive information creates a structured and easier-to-understand data model.

2. Easier Filtering and Grouping: Dimension attributes can be used to filter and group the data stored in fact tables.

For example, sales can be analyzed by:

  • Product category
  • Customer city
  • Sales region
  • Month or year

3. Reduced Data Repetition: Descriptive information can be maintained in dimension tables instead of being repeatedly stored with every transaction. For example, the Sales fact table can store only ProductID, while product name and category are maintained in the Product dimension table.

  • More Flexible Analysis: The same fact table can be analyzed from different perspectives using related dimensions such as product, customer, location or time.
  • Easier Data Modeling: Separating facts and dimensions makes relationships and the overall structure of a Power BI data model easier to understand and maintain.

Fact Tables vs. Dimension Tables

FeatureFact TablesDimension Tables
PurposeStore transactions, events and measurable valuesStore descriptive information
ExamplesSales orders, TransactionsProduct, Customer, Date
RowsUsually represent individual transactionsUsually represent individual entities
Key ColumnsUsually contain foreign keysUsually contain unique keys
ValuesOften contain numeric measurementsCan contain text and numeric attributes
Used ForCalculations and aggregationFiltering and grouping
RelationshipUsually on the many sideUsually on the one side
RoleMain data being analyzedProvides context for analysis
Comment

Explore