Домашка по моделированию
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
-- ===============================================
|
||||
-- DDL: дополнительные таблицы для домашки
|
||||
-- Тема: статусы клиента (SCD2 поверх статуса)
|
||||
-- Скрипт можно запускать после 01_ddl_stg-dds.sql
|
||||
-- ===============================================
|
||||
|
||||
-- 1. STG: сырые события о статусе клиента из CRM
|
||||
DROP TABLE IF EXISTS stg.customer_status_raw;
|
||||
CREATE TABLE stg.customer_status_raw (
|
||||
customer_id TEXT,
|
||||
status TEXT,
|
||||
event_ts TEXT,
|
||||
_load_id TEXT,
|
||||
_load_ts TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 2. ODS: очищенные и типизированные статусы
|
||||
DROP TABLE IF EXISTS ods.customer_status;
|
||||
CREATE TABLE ods.customer_status (
|
||||
customer_id INT NOT NULL,
|
||||
status VARCHAR(20) NOT NULL,
|
||||
event_ts TIMESTAMP NOT NULL,
|
||||
_load_id TEXT NOT NULL,
|
||||
_load_ts TIMESTAMP NOT NULL
|
||||
);
|
||||
|
||||
ALTER TABLE ods.customer_status
|
||||
ADD PRIMARY KEY (customer_id, event_ts);
|
||||
|
||||
-- 3. DDS: измерение статусов клиента с историей (SCD Type 2)
|
||||
DROP TABLE IF EXISTS dds.dim_customer_status;
|
||||
CREATE TABLE dds.dim_customer_status (
|
||||
customer_status_sk BIGSERIAL PRIMARY KEY,
|
||||
customer_bk INT NOT NULL,
|
||||
status VARCHAR(20) NOT NULL,
|
||||
hashdiff TEXT NOT NULL,
|
||||
valid_from TIMESTAMP NOT NULL,
|
||||
valid_to TIMESTAMP NOT NULL,
|
||||
is_current BOOLEAN NOT NULL DEFAULT TRUE,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user