Guide for designing and auditing Kimball-style dimensional models (star schemas, fact tables, dimension tables). Use when the user wants to create a dimensional model for a table or dataset, audit existing models for best practices, design fact or dimension tables, choose grain, identify SCDs, build a bus matrix, or optimize data models in a pipeline. Triggers on requests like "create a model for my orders table", "help me audit my models", "I want to create a dimensional model", "how should I …
Guide for designing and auditing Kimball-style dimensional models (star schemas, fact tables, dimension tables).
Use when the user wants to create a dimensional model for a table or dataset, audit existing models for best practices, design fact or dimension tables, choose grain, identify SCDs, build a bus matrix, or optimize data models in a pipeline.
Triggers on requests like "create a model for my orders table", "help me audit my models", "I want to create a dimensional model", "how should I model this data", or "optimize my data models".
Similar popular skills
Related neighbors and high-traction skills in the same topics — useful to compare before installing.
Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.
Claude CodeNot declared
CursorNot declared
CodexNot declared
GitHub CopilotNot declared
WindsurfNot declared
Gemini CLINot declared
ClineNot declared
OpenCodeNot declared
Package contents
Files included with this skill beyond the listing page.
skill mdSKILL.md4,761 B
docsSUMMARY.md570 B
History
First recorded snapshot · 0 installs
SKILL.md
Kimball Dimensional Modeling
Practitioner's guide for designing and auditing Kimball-style dimensional models.
Workflow Decision Tree
Determine the task, then follow the appropriate path:
"Create a dimensional model" -> Follow the [Four-Step Design Process](references/design-process.md)
Select the business process
Declare the grain
Identify the dimensions
Identify the facts
"What fact table pattern should I use?" -> See [Fact Table Patterns](references/fact-patterns.md)
Transaction (default) — one row per discrete event
Periodic snapshot — one row per entity per time period
Accumulating snapshot — one row per process lifecycle
Factless — event occurrence or many-to-many associations
"How should I handle changing dimensions?" -> See [SCD Reference](references/scd.md)
Default to Type 1 (overwrite) for most attributes
Upgrade to Type 2 (add new row) only when point-in-time analysis is needed
"Help me with special dimension patterns" -> See [Dimensions Reference](references/dimensions.md)
Date dimension, conformed dimensions, junk dimensions, role-playing dimensions, bus matrix
"Audit my existing model" -> Use the [Audit Checklist](#audit-checklist) below, with detailed anti-patterns in [Anti-Patterns Reference](references/anti-patterns.md)
"Plan an engagement end-to-end" -> See [Engagement Playbook](references/engagement-playbook.md) for Discovery -> Design -> Implementation -> Validation phases
Core Principles
One business process per fact table. Never combine different processes.
Declare the grain first. Write: "One row represents one [thing]." Every column must be consistent with this statement.
Go atomic. Store the finest grain the source system provides. Aggregate in marts, not fact tables.
Surrogate keys on all dimensions. Never use operational/natural keys as PKs.
Wide dimensions. A good dimension has 20-50+ columns of descriptive attributes.
Facts are numeric. Text belongs in dimensions or as degenerate dimensions.
Store components, not ratios. Keep numerator and denominator so ratios can be recalculated at any aggregation level.
Conformed dimensions enable cross-process analysis. Share dimdate, dimcustomer, dim_product across all fact tables.
Naming Conventions
Object
Prefix
Example
Staging model
stg_
stgnomosorders
Intermediate model
int_
intordersenriched
Dimension table
dim_
dimcustomer, dimdate
Fact table
fct_
fctorders, fctshipments
Mart / reporting table
mart_
martsalessummary
Surrogate key
_key suffix
customerkey, datekey
Natural/business key
_id suffix
customerid, orderid
Date FK in fact
datekey
orderdatekey, shipdatekey
Audit Checklist
Quick checklist for reviewing existing models. See [Anti-Patterns Reference](references/anti-patterns.md) for detailed explanations.
Grain statement exists and is documented
No mixed grains in any fact table
Surrogate keys on all dimensions
Natural keys preserved as attributes for traceability
Facts are numeric — no text in fact columns
Facts are consistent with the declared grain
Additive facts are truly additive across all dimensions
Semi-additive facts use snapshot tables
Non-additive facts store components, not just ratios