Kimball bus matrix mapping business processes against conformed dimensions Annotated Kimball bus matrix with each business process and dimension labelled

Kimball Bus Matrix

Ralph Kimball's dimensional approach builds a data warehouse incrementally, one business process at a time, while guaranteeing that the pieces fit together. The bus matrix is the tool that makes that guarantee concrete: a single grid that lists every business process as a row, every shared dimension as a column, and marks which dimensions each process uses. This page explains the structure, shows how a row turns into a star schema, demonstrates a drill-across query that only works because dimensions are conformed, and covers the trade-offs and common mistakes.

1. What Is the Kimball Bus Matrix

The Kimball Bus Matrix is a planning and governance artifact used in Kimball Dimensional Architecture. It defines how business processes relate to conformed dimensions across the enterprise.

It serves as the architectural blueprint for building a scalable, integrated dimensional data warehouse.

2. Visual Example of a Kimball Bus Matrix

Kimball Bus Matrix example

3. Structure of the Bus Matrix

3.1 Rows: Business Processes

Examples:

3.2 Columns: Conformed Dimensions

Examples:

3.3 Intersections

4. Textual Representation of a Bus Matrix

Business Process | Date | Product | Customer | Store | Promotion
---------------------------------------------------------------
Sales            |  X   |   X     |    X     |   X   |     X
Orders           |  X   |   X     |    X     |   X   |
Shipments        |  X   |   X     |          |   X   |
Inventory        |  X   |   X     |          |   X   |
Returns          |  X   |   X     |    X     |   X   |

5. Why the Bus Matrix Is Critical

6. How It Drives Dimensional Design

  1. Select a business process (row)
  2. Declare the grain of the fact table
  3. Attach all marked conformed dimensions
  4. Design the star schema

7. Relationship to Kimball Architecture

8. One-Sentence Summary

The Kimball Bus Matrix defines which conformed dimensions apply to each business process, ensuring scalable, consistent, and integrated dimensional analytics.

9. From a row to a star schema

The Sales row of the bus matrix becomes one star schema Bus matrix row Sales: Date, Product, Customer, Store, Promo Declare grain one row per product per receipt line fact_sales 5 dimension keys qty, amount, discount Conformed dims dim_date, dim_product, dim_customer, ... The Xs in a row become foreign keys; the shared columns are built once and reused by every fact table.

Each row is implemented with Kimball's four-step design: choose the business process, declare the grain (the exact meaning of one fact row), identify the dimensions (read straight off the row's Xs), and identify the numeric facts measured at that grain. Declaring the grain before choosing dimensions matters: a fact table at receipt-line grain can carry a product key, but one at daily store-total grain cannot.

Conformed dimensions shared by three fact tables fact_sales date_key product_key customer_key store_key promotion_key Conformed dimensions dim_date (same calendar) dim_product (same SKUs) dim_store (same stores) built once, reused fact_shipments date_key product_key store_key (no customer, no promotion) Identical keys and attribute values across facts are what make cross-process comparisons valid.

A dimension is conformed when every fact table that uses it means exactly the same thing by it: the same keys, the same attribute names, and the same values. Sometimes a process uses a subset of a dimension at a coarser grain (for example monthly budgets against a month-level rollup of the date dimension); a shrunken dimension that is a strict subset of the full one still conforms.

10. Worked example: drill-across with conformed dimensions

Drilling across means querying two fact tables separately at a common grain and joining the results on conformed attributes. It is the payoff of the bus matrix: because Sales and Shipments both use the same dim_product and dim_date, their totals line up row for row.

WITH sales AS (
    SELECT d.month, p.category, SUM(f.amount) AS sales_amount
    FROM fact_sales f
    JOIN dim_date d    ON f.date_key = d.date_key
    JOIN dim_product p ON f.product_key = p.product_key
    GROUP BY d.month, p.category
),
shipments AS (
    SELECT d.month, p.category, SUM(f.units_shipped) AS units_shipped
    FROM fact_shipments f
    JOIN dim_date d    ON f.date_key = d.date_key
    JOIN dim_product p ON f.product_key = p.product_key
    GROUP BY d.month, p.category
)
SELECT COALESCE(s.month, sh.month)       AS month,
       COALESCE(s.category, sh.category) AS category,
       s.sales_amount,
       sh.units_shipped
FROM sales s
FULL OUTER JOIN shipments sh
  ON s.month = sh.month AND s.category = sh.category
ORDER BY month, category;

Aggregating each fact separately before joining is essential. Joining the two fact tables directly on product and date multiplies rows (a fan-out) and inflates both totals.

11. Trade-offs and alternatives

ApproachIntegration pointStrengthsCosts
Kimball bus architectureConformed dimensionsIncremental delivery, business-friendly stars, fast queriesRequires cross-team agreement on dimensions
Inmon corporate information factoryNormalized enterprise warehouseSingle integrated model, flexible for new martsLarge upfront modelling before value is delivered
Data VaultHubs, links, satellitesAuditability, tolerant of source changeNeeds a presentation layer (often Kimball stars) on top
One big table per use caseNoneSimple for a single dashboardDuplicated logic, inconsistent numbers across teams

The bus matrix remains useful even under Data Vault or lakehouse designs, because the presentation layer still needs agreed dimensions and a plan for which processes to deliver first.

12. Pitfalls