Skip to main content

04-conformed-dimensions

Enterprise integration patterns for Gold layer dimensional models. Covers conformed dimensions, the enterprise data warehouse bus matrix, shrunken/rollup dimensions, conformed facts, and drill-across query patterns. Use when planning dimensions shared across multiple fact tables, creating a bus matrix for enterprise integration, designing rollup dimensions, or enabling cross-process analytics. Triggers on "conformed dimension", "bus matrix", "drill-across", "shrunken dimension", "rollup", "enterprise integration", "cross-process".

インストールへ移動

ソース情報

リポジトリ
databricks-solutions/vibe-coding-workshop-template
ソースの最終更新活動
2026年6月2日 13:00
検出された SKILL.md の言語
英語
スター
6
フォーク
7

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

ファイルエクスプローラー
2 ファイル

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
04-conformed-dimensions
description
Enterprise integration patterns for Gold layer dimensional models. Covers conformed dimensions, the enterprise data warehouse bus matrix, shrunken/rollup dimensions, conformed facts, and drill-across query patterns. Use when planning dimensions shared across multiple fact tables, creating a bus matrix for enterprise integration, designing rollup dimensions, or enabling cross-process analytics. Triggers on "conformed dimension", "bus matrix", "drill-across", "shrunken dimension", "rollup", "enterprise integration", "cross-process".
license
Apache-2.0
clients
["ide_cli","genie_code"]
bundle_resource
none
deploy_verb
bundle_deploy
deploy_note
Design-phase pattern; output feeds the Gold design/setup artifacts deployed downstream via `bundle deploy --target dev`. No standalone resource.
coverage
full
metadata
{"author":"prashanth subrahmanyam","version":"1.0.0","domain":"gold","role":"worker","pipeline_stage":1,"pipeline_stage_name":"gold-design","called_by":["gold-layer-design"],"standalone":true,"last_verified":"2026-02-19","volatility":"low","upstream_sources":[]}
# Conformed Dimensions & Enterprise Integration ## Overview A dimensional model becomes an **enterprise data warehouse** when dimensions are shared (conformed) across multiple fact tables, enabling consistent drill-across queries. Without conformed dimensions, each fact table becomes an isolated silo — users cannot compare sales with inventory with marketing in a single report. **Key Principle:** Conformed dimensions are built once, used everywhere. They must have identical column names, data types, and domain values across all fact tables that reference them. **Anti-Pattern:** Never join fact tables directly to each other. Instead, use conformed dimensions to "drill across" from one fact to another. ## When to Use This Skill - Planning which dimensions will be shared across multiple fact tables - Building an enterprise data warehouse bus matrix - Designing shrunken (rollup) dimensions for aggregate fact tables - Enabling cross-process analytics (e.g., comparing sales with returns with inventory) - Reviewing a dimensional model for consistency before ERD creation ## The Bus Matrix The bus matrix is the master planning document for a dimensional model. It maps business processes (fact tables) to the dimensions they use, revealing which dimensions must be conformed. ### Bus Matrix Template | Business Process (Fact) | dim_date | dim_customer | dim_product | dim_store | dim_employee | dim_promotion | |------------------------|----------|-------------|-------------|-----------|-------------|---------------| | **fact_sales_daily** | X | X | X | X | | X | | **fact_inventory_snapshot** | X | | X | X | | | | **fact_returns** | X | X | X | X | X | | | **fact_promotions** | X | | X | X | | X | ### Reading the Bus Matrix - **Columns with multiple X's** = conformed dimensions (shared across processes) - **dim_date, dim_product, dim_store** have X in every row → must be conformed - **dim_employee** only appears in returns → does not need conformance yet - **Rows** represent individual star schemas (fact + its dimensions) ### Key Rules 1. **Build the bus matrix before creating ERDs** — it is the blueprint for the entire model 2. Every X means the fact table has a foreign key to that dimension 3. Conformed dimensions must have **identical** column definitions across all references 4. The bus matrix drives domain grouping for ERD organization ## Conformed Dimension Rules ### What Makes a Dimension "Conformed" | Requirement | Detail | |------------|--------| | **Same name** | `dim_product` everywhere (not `dim_product_sales` and `dim_product_inventory`) | | **Same keys** | `product_key` is the same surrogate key in all fact tables | | **Same attributes** | Column names, types, and domain values are identical | | **Same grain** | One row per product (not one row per product-store) | | **Single source** | Built once, referenced by all fact tables | ### Common Conformance Violation ```yaml # ❌ BAD: Two separate "product" dimensions with different attributes # fact_sales references dim_product_sales (has price columns) # fact_inventory references dim_product_inventory (has warehouse columns) # ✅ GOOD: One conformed dim_product with ALL attributes table_name: dim_product columns: - name: product_key type: BIGINT - name: product_name type: STRING - name: list_price # Used by sales type: DOUBLE - name: warehouse_zone # Used by inventory type: STRING ``` ## Shrunken (Rollup) Dimensions When an aggregate fact table operates at a coarser grain than the base fact, it needs a **shrunken dimension** — a strict subset of rows from the conformed dimension. ### Example ```yaml # Base dimension: one row per store table_name: dim_store columns: - name: store_key type: BIGINT - name: store_name type: STRING - name: district_name type: STRING - name: region_name type: STRING # Shrunken dimension: one row per district (rollup of stores) table_name: dim_district description: "District rollup dimension. Business: Geographic districts. Technical: Shrunken dimension — subset of dim_store rolled up to district grain." columns: - name: district_key type: BIGINT - name: district_name type: STRING - name: region_name type: STRING ``` ### Key Rules - Shrunken dimensions must be **strict subsets** of the conformed dimension - Column names and domain values must match the parent dimension exactly - Shrunken dimensions are used with aggregate fact tables (pre-computed summaries) - Always maintain a FK relationship between the base dimension and shrunken dimension ## Conformed Facts Just as dimensions must be conformed, **facts (measures)** that appear in multiple fact tables must use identical definitions. | Rule | Detail | |------|--------| | **Same name** | `revenue` in fact_sales = `revenue` in fact_returns (not `sales_revenue` vs `return_revenue`) | | **Same calculation** | quantity × unit_price in both tables | | **Same units** | USD everywhere (not USD in sales, EUR in international) | | **Same data type** | DOUBLE in all tables | If the same measure has different semantics in different processes, use **different names** (e.g., `gross_revenue` vs `net_revenue`). ## Drill-Across Queries ### What Is Drill-Across Drill-across combines measures from multiple fact tables using conformed dimensions as the join key. This is the primary benefit of conformed dimensions. ### Pattern ```sql -- Drill-across: combine sales and inventory using conformed dimensions WITH sales AS ( SELECT date_key, product_key, store_key, SUM(revenue) AS total_revenue FROM fact_sales_daily GROUP BY date_key, product_key, store_key ), inventory AS ( SELECT date_key, product_key, store_key, on_hand_quantity FROM fact_inventory_snapshot ) SELECT d.date_value, p.product_name, s.store_name, COALESCE(sales.total_revenue, 0) AS total_revenue, COALESCE(inventory.on_hand_quantity, 0) AS on_hand_quantity FROM dim_date d JOIN dim_product p ON ... JOIN dim_store s ON ... LEFT JOIN sales ON sales.date_key = d.date_key AND sales.product_key = p.product_key AND sales.store_key = s.store_key LEFT JOIN inventory ON inventory.date_key = d.date_key AND inventory.product_key = p.product_key AND inventory.store_key = s.store_key ``` ### Critical Anti-Pattern: Direct Fact-to-Fact Joins **NEVER** join one fact table directly to another fact table. ```sql -- ❌ BAD: Direct fact-to-fact join SELECT * FROM fact_sales s JOIN fact_inventory i ON s.product_key = i.product_key AND s.date_key = i.date_key -- This produces a Cartesian explosion if grains don't match! ``` **Why:** Fact tables at different grains produce incorrect Cartesian products. Always drill across through conformed dimensions using separate aggregated subqueries. ## Validation Checklist (Design Phase) Before finalizing the enterprise model: - [ ] Bus matrix created mapping all fact tables to their dimensions - [ ] Conformed dimensions identified (dimensions with X in multiple bus matrix rows) - [ ] Conformed dimensions have identical column definitions everywhere - [ ] No duplicate dimensions for the same business concept - [ ] Shrunken dimensions documented as subsets of their parent dimension - [ ] Conformed facts use identical names, calculations, and units - [ ] No fact-to-fact joins planned in any query patterns ## Reference Files - **[Conformed Dimension Examples](references/conformed-dimension-examples.md)** — Bus matrix template, shrunken dimension YAML examples, drill-across SQL patterns, and multi-star integration examples ## Inputs - **From `01-grain-definition`:** Fact table grain definitions (determines which dimensions each fact needs) - **From `02-dimension-patterns`:** Dimension designs (reveals which dimensions exist and their attributes) - **From `03-fact-table-patterns`:** Fact table designs with measure classifications ## Outputs - Enterprise bus matrix (fact tables × dimensions) - List of conformed dimensions with conformance requirements - Shrunken dimension designs (if aggregate facts exist) - Conformed fact definitions (measures that appear in multiple facts) ## Design Notes to Carry Forward After completing this skill, note: - [ ] The bus matrix (which fact references which dimensions) - [ ] Which dimensions are conformed (shared across multiple facts) - [ ] Any shrunken dimensions needed for aggregate facts - [ ] Drill-across query patterns planned for cross-process analytics ## Next Step Proceed to `design-workers/05-erd-diagrams/SKILL.md` to create ERD diagrams that visualize the dimensional model. The bus matrix from this step drives domain grouping and relationship documentation. ## Related Skills - **Grain Definition:** `design-workers/01-grain-definition/SKILL.md` — Grain types for fact tables - **Dimension Patterns:** `design-workers/02-dimension-patterns/SKILL.md` — Individual dimension patterns - **Fact Table Patterns:** `design-workers/03-fact-table-patterns/SKILL.md` — Fact table design patterns - **ERD Diagrams:** `design-workers/05-erd-diagrams/SKILL.md` — Visualizing the model ## References - [Kimball Dimensional Modeling Techniques](https://www.kimballgroup.com/data-warehouse-business-intelligence-resources/kimball-techniques/dimensional-modeling-techniques/) - [AgentSkills.io Specification](https://agentskills.io/specification)
GitHubで見る