refactor: multi-dashboard structural migration
Some checks failed
CI / lint-and-test (pull_request) Has been cancelled
Some checks failed
CI / lint-and-test (pull_request) Has been cancelled
- Rename dbt project from toronto_housing to portfolio - Restructure dbt models into domain subdirectories: - shared/ for cross-domain dimensions (dim_time) - staging/toronto/, intermediate/toronto/, marts/toronto/ - Update SQLAlchemy models for raw_toronto schema - Add explicit cross-schema FK relationships for FactRentals - Namespace figure factories under figures/toronto/ - Namespace notebooks under notebooks/toronto/ - Update Makefile with domain-specific targets and env loading - Update all documentation for multi-dashboard structure This enables adding new dashboard projects (e.g., /football, /energy) without structural conflicts or naming collisions. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
33
dbt/models/shared/_shared.yml
Normal file
33
dbt/models/shared/_shared.yml
Normal file
@@ -0,0 +1,33 @@
|
||||
version: 2
|
||||
|
||||
models:
|
||||
- name: stg_dimensions__time
|
||||
description: "Staged time dimension - shared across all projects"
|
||||
columns:
|
||||
- name: date_key
|
||||
description: "Primary key (YYYYMM format)"
|
||||
data_tests:
|
||||
- unique
|
||||
- not_null
|
||||
- name: full_date
|
||||
description: "First day of month"
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: year
|
||||
description: "Calendar year"
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: month
|
||||
description: "Month number (1-12)"
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: quarter
|
||||
description: "Quarter (1-4)"
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: month_name
|
||||
description: "Month name"
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: is_month_start
|
||||
description: "Always true (monthly grain)"
|
||||
25
dbt/models/shared/_sources.yml
Normal file
25
dbt/models/shared/_sources.yml
Normal file
@@ -0,0 +1,25 @@
|
||||
version: 2
|
||||
|
||||
sources:
|
||||
- name: shared
|
||||
description: "Shared dimension tables used across all dashboards"
|
||||
database: portfolio
|
||||
schema: public
|
||||
tables:
|
||||
- name: dim_time
|
||||
description: "Time dimension (monthly grain) - shared across all projects"
|
||||
columns:
|
||||
- name: date_key
|
||||
description: "Primary key (YYYYMM format)"
|
||||
- name: full_date
|
||||
description: "First day of month"
|
||||
- name: year
|
||||
description: "Calendar year"
|
||||
- name: month
|
||||
description: "Month number (1-12)"
|
||||
- name: quarter
|
||||
description: "Quarter (1-4)"
|
||||
- name: month_name
|
||||
description: "Month name"
|
||||
- name: is_month_start
|
||||
description: "Always true (monthly grain)"
|
||||
22
dbt/models/shared/stg_dimensions__time.sql
Normal file
22
dbt/models/shared/stg_dimensions__time.sql
Normal file
@@ -0,0 +1,22 @@
|
||||
-- Staged time dimension
|
||||
-- Source: shared.dim_time table
|
||||
-- Grain: One row per month
|
||||
-- Note: Shared dimension used across all dashboard projects
|
||||
|
||||
with source as (
|
||||
select * from {{ source('shared', 'dim_time') }}
|
||||
),
|
||||
|
||||
staged as (
|
||||
select
|
||||
date_key,
|
||||
full_date,
|
||||
year,
|
||||
month,
|
||||
quarter,
|
||||
month_name,
|
||||
is_month_start
|
||||
from source
|
||||
)
|
||||
|
||||
select * from staged
|
||||
Reference in New Issue
Block a user