Conformed and Role-Playing Dimensions: Advanced
What you will be able to do
When Two Fact Tables Need the Same Dimension
- ▸"The sales team and marketing team have different customer counts"
- ▸"Join the orders fact to the returns fact"
- ▸"We need consistent reporting across all business domains"
- ▸"How would you design a shared customer/product/date dimension?"
- ▸"Why do the numbers from team A not match team B?"
- ▸Any multi-domain or enterprise warehouse design question
What They're Really Testing
The hidden rubric: does this candidate understand that a warehouse is defined by its shared dimensions, not its fact tables? Fact tables are domain-specific. Dimensions are shared across domains. When sales and marketing share the same dim_customer with the same customer_sk, you can join fact_sales to fact_marketing_touches through dim_customer and get consistent results. Without conformance, you have two incompatible definitions of 'customer' and every cross-domain query produces wrong numbers.
The Problem: Non-Conformed Dimensions
The Fix: One Dimension, One Definition
The strong-hire sentence: 'Conformed dimensions are what let you drill across fact tables. Without them, each fact table is an island and cross-domain analysis requires brittle ad-hoc joins on natural keys with inconsistent definitions.'
The 60-Second Framework
Designing a Conformed Dimension
The Date Dimension: The Example Every Interviewer Expects
Conformed dimensions: orders and returns share ONE dim_customer and ONE dim_date, so 'customers' means the same thing in both reports and the two facts can be compared drill-across.
What Belongs in the Conformed Core vs the Extension
| Attribute | Conformed Dimension? | Why |
|---|---|---|
| customer_name | Yes | Universal identifier across all domains |
| customer_region | Yes | Used for geographic analysis in sales, marketing, and support |
| customer_ltv_score | No (marketing extension) | Only marketing uses this; would add clutter for other consumers |
| customer_support_tier | No (support extension) | Support-specific segmentation that sales does not need |
| customer_created_date | Yes | Universal attribute for cohort analysis across all domains |
The design principle: the conformed dimension contains attributes that are shared across domains. Domain-specific attributes go in extension tables or are handled as outrigger dimensions. Over-stuffing the conformed dimension with domain-specific columns is a common anti-pattern that creates unnecessary dependencies.
The Follow-Up Trap
- Each team builds their own customer table
- "We'll just join on email address"
- Puts every attribute in one giant dimension
- No concept of dimension ownership
- Shared dim_customer with universal attributes
- Surrogate key shared across all facts
- Domain-specific attributes in extension/outrigger
- One team owns the dimension, governance prevents drift
Role-Playing Dimensions
The Schema the Interviewer Expects
Role-playing dimension: ONE dim_date table joined three times (order / ship / delivery), aliased per role. 'Revenue by order month' vs 'by ship month' are different joins to the same conformed table.
How to Narrate the Query in the Interview
Views vs Aliases: The Implementation Detail Interviewers Probe
- JOIN dim_date AS order_date ON ...
- No schema objects to maintain
- Relies on query authors knowing the pattern
- Fine for small teams
- JOIN dim_order_date ON ...
- Self-documenting schema
- BI tools discover them automatically
- Better for large organizations
The Differentiator: Non-Date Role-Playing Examples
| Dimension | Fact Table | Roles |
|---|---|---|
| dim_date | fact_orders | order_date, ship_date, deliver_date |
| dim_geography | fact_shipments | origin_geo, destination_geo |
| dim_employee | fact_support_tickets | created_by, assigned_to, resolved_by |
| dim_account | fact_transfers | source_account, destination_account |
| dim_customer | fact_referrals | referrer_customer, referred_customer |
Identifying non-date role-playing dimensions unprompted is a strong-hire signal. Most candidates only think of dim_date as role-playing. Saying 'dim_employee plays three roles in the support ticket fact: creator, assignee, and resolver' shows deeper pattern recognition.
Outrigger and Mini-Dimensions
The Problem the Interviewer Describes
Mini-Dimensions: The Answer That Shows You Know Kimball
- The mini-dimension only has the volatile columns. Its row count is bounded by the number of unique combinations (e.g., 5 tiers x 10 credit bands x 8 segments = 400 rows total, not 10M per week).
- The main dim_customer tracks region changes (Type 2). The mini-dimension tracks behavioral changes separately. Neither is coupled to the other.
- Queries that only need name and region scan dim_customer (small). Queries that need behavioral data join to the mini-dimension (also small).
Outriggers: Know the Tradeoff, Defend Your Choice
What the Interviewer Writes
- Puts all 50 attributes in one dimension
- Does not notice the SCD explosion on volatile attributes
- "I'd just make the dimension wider"
- Identifies volatile vs stable attributes
- Extracts volatile attributes to a mini-dimension
- Knows the mini-dimension row count is bounded by unique combos, not entity count
- Can articulate the outrigger tradeoff: extra join vs denormalization
Cross-Functional Consistency
The Bridge Move: From Schema to Governance
Red Flag Phrases
Vocabulary That Signals Seniority
| Junior Phrasing | Senior Phrasing |
|---|---|
| "We'd make a customer table" | "We'd build a conformed dim_customer owned by the data platform team, shared across all domain fact tables via surrogate key" |
| "Both teams can use the same table" | "One team owns the dimension definition. Other domains consume it through a published contract." |
| "I'd add all the dates to dim_date" | "The date dimension plays three roles in this fact: order, ship, and delivery. Each role is a separate FK to the same physical dim_date." |
| "The dimension has too many columns" | "I'd extract the volatile behavioral attributes into a mini-dimension with its own SK to avoid SCD explosion on the main dimension." |
- One team owns each conformed dimension
- New attributes start as nullable columns
- Publish a data contract for every shared dimension
- Define metrics in a semantic layer, not in BI tool queries
- Let every team build their own customer/product dimension
- Join on natural keys across fact tables
- Add domain-specific columns to the conformed dimension
- Rename columns without a deprecation plan
> You are in an Airbnb data engineering interview. The interviewer asks: 'Sales and trust-and-safety have different numbers for active hosts. How would you fix this?'
Shared dimensions are what make a data warehouse a warehouse instead of a collection of tables
- Category
- Data Modeling
- Difficulty
- advanced
- Duration
- 25 minutes
- Challenges
- 6 hands-on challenges
Topics covered: When Two Fact Tables Need the Same Dimension, Designing a Conformed Dimension, Role-Playing Dimensions, Outrigger and Mini-Dimensions, Cross-Functional Consistency
Lesson Sections
- When Two Fact Tables Need the Same Dimension (concepts: dmStarSchema)
What They're Really Testing The Problem: Non-Conformed Dimensions Cite this in your answer: 'At a ride-sharing company, operations defined active driver as completed-a-ride-in-30-days. Finance defined it as has-a-valid-payment-method. The CEO asked how many active drivers we have and got two different numbers. Neither was wrong. Both were right within their own definition. The warehouse had no way to produce one answer.' This is the problem conformed dimensions solve. Tell this story in 15 secon
- Designing a Conformed Dimension (concepts: dmStarSchema)
The interviewer will ask you to design a dimension that serves multiple fact tables. The trap: candidates over-stuff the dimension with domain-specific attributes that create unnecessary coupling. The signal they are looking for is whether you know what belongs in the conformed core versus what belongs in an extension. The Date Dimension: The Example Every Interviewer Expects Your conformance answer: 'Every fact table references the same dim_date via date_sk. When I GROUP BY dim_date.quarter, I
- Role-Playing Dimensions (concepts: dmDimensionTables)
When the interviewer gives you a fact table with three date columns (order_date, ship_date, deliver_date), they are testing whether you create three dimension tables or one. The correct answer is one dim_date referenced three times. This is a role-playing dimension, and naming it unprompted shows Kimball-level fluency. The Schema the Interviewer Expects Your role-playing answer: 'Three foreign keys, all pointing to the same dim_date. Each one plays a different role: when ordered, when shipped, w
- Outrigger and Mini-Dimensions (concepts: dmScdStrategy)
The interviewer will push back on your dimension design: 'This dimension has 50 columns and half of them change weekly. How do you handle that?' This tests whether you know the mini-dimension pattern. Candidates who say 'just apply Type 2 to everything' reveal they have never calculated the storage cost of that approach. The Problem the Interviewer Describes State the problem with numbers: 'A dim_customer with 50 columns, 12 of which change weekly. With Type 2 on all 12, that is 10 million custo
- Cross-Functional Consistency (concepts: dmDimensionTables)
Technical conformance is necessary but not sufficient. Conformed dimensions fail in practice not because the schema is wrong, but because governance breaks down. This section covers the organizational patterns that make conformance sustainable, and the vocabulary that tells the interviewer you have dealt with this in production. The Bridge Move: From Schema to Governance Red Flag Phrases Vocabulary That Signals Seniority