06-reference

book adwd ch2 modeling business events 2026 04 13

Sun Apr 12 2026 20:00:00 GMT-0400 (Eastern Daylight Time) ·reference ·source: Agile Data Warehouse Design (book) ·by Lawrence Corr, Jim Stagnitto

“Chapter 2: Modeling Business Events” — Corr & Stagnitto

Why this is in the vault

This chapter is the operational core of BEAM (Business Event Analysis & Modeling) — the method Corr proposes for collaboratively discovering dimensional models with stakeholders. For Ray Data Co, this matters because:

Key concepts

Data stories and the 3Ds

BEAM treats business events as the atomic unit of data modeling. Every event is processed through three steps: discover (ask “who does what?”), document (build a BEAM table), and describe (fill the table using the 7Ws and event stories). Data stories are the dimensional-modeling analogue of agile user stories — concrete, example-driven narratives told by stakeholders about their own business processes.

Story types

Events fall into three temporal categories, each mapping to a specific fact table architecture:

Story typeTime behaviorFact table type
Discrete (DE)Point-in-time, single verb, finished when recordedTransaction fact table
Evolving (EE)Multi-verb milestones over irregular durations (e.g. order -> ship -> deliver -> pay)Accumulating snapshot
Recurring (RE)Periodic measurement at predictable intervals (daily balance, monthly inventory)Periodic snapshot

The preposition on a when detail is the key signal: “on” suggests a date-grain discrete event, “at” implies date+time, and “every” flags a recurring event. If any when detail can change after initial load, the event is evolving.

The 7Ws

The 7Ws are both a questioning framework and a classification scheme for every detail in an event:

WData typeBecomes…
WhoPeople and organizationsDimension
WhatThings (products, services)Dimension
WhenTimeDate/calendar dimension
WhereLocationsDimension
How manyMeasures and KPIsFacts
WhyReasons and causality (promotions, weather)Causal dimension
HowTransaction IDs, status codes, methodsDegenerate dimension or dimension

The recommended sequence starts with who + what (to form the subject-verb-object main clause), then when (to establish time grain and story type), then where, how many, why, and how. In practice the answers flow between Ws — a quantity naturally prompts a “why” about its variance.

Event story themes

Five story themes let you populate 5-6 example rows that surface most modeling edge cases with minimal effort:

  1. Typical — representative values for every detail
  2. Different — extreme or contrasting values to expose data ranges and history depth
  3. Repeat — near-duplicate of the typical row to discover what combination of details defines uniqueness (granularity)
  4. Missing — which details can be null vs. mandatory (documented with short code MD)
  5. Group — variations in meaning (B2B vs. B2C customers, product bundles) that reveal mixed hierarchies

Event granularity

Granularity is the combination of detail values that uniquely identifies each event story. It is discovered through the repeat theme — if every detail in a repeat row matches the typical row, you need more details. Usually granularity comes from a combination of who, what, when, and where, but sometimes only a transaction ID (how detail) can guarantee uniqueness. Granular details are marked with the short code GD.

Detail about detail

Not every discovered detail belongs to the event itself. The position-sensitivity test distinguishes event details from dimensional attributes: swap a detail into the middle of the main clause. If it reads like nonsense (“CUSTOMER with PRODUCT TYPE orders PRODUCT”), it is detail about detail — an attribute of a dimension, not the event. These get parked above the relevant column and modeled as dimension attributes later.

Naming and completing the event

The event name is chosen last, after all details are known, typically as an uppercase plural noun phrase derived from subject + verb (e.g. CUSTOMER ORDERS). Story type codes [DE], [RE], or [EE] are added to the table header. A double bar on the right edge signals the table is complete.

Mapping against Ray Data Co

Client discovery sessions. The “who does what?” opener and the 5-theme story pattern can be templated into our standard intake questionnaire. Instead of asking clients to describe their reporting needs abstractly, we ask them to narrate concrete business events — a technique that sidesteps the common problem of clients requesting summary reports without understanding the underlying grain.

Data product architecture. Classifying client events as DE/EE/RE early in scoping lets us estimate ETL complexity before writing a line of code. Discrete events are insert-only and simple; evolving events require update logic and duration calculations; recurring events need careful attention to semi-additive measures. This classification should appear in our project scoping template.

Modelstorming as a service offering. BEAM’s whiteboard-and-spreadsheet approach is deliberately low-tech. For a consultancy that works async and remote, the spreadsheet variant (BEAM tables in Google Sheets) could become a deliverable in its own right — a collaborative artifact that clients continue to own and extend after our engagement ends.

Granularity discipline. The repeat-story technique for discovering grain is more rigorous than the ad-hoc “what’s the primary key?” conversation that most projects default to. Adopting it would reduce the frequency of grain-mismatch bugs in our dbt models.