140 lines
5.3 KiB
SQL
140 lines
5.3 KiB
SQL
-- =============================================================================
|
||
-- 迁移脚本:创建员工档案 ODS + DWD 表
|
||
-- 日期:2026-02-22
|
||
-- 说明:从 SearchSystemStaffInfo API 抓取员工数据,ODS 落地后清洗至 DWD 维度表
|
||
-- 需求:US-1, US-2, US-3
|
||
-- =============================================================================
|
||
|
||
-- ---------------------------------------------------------------------------
|
||
-- 1. ODS 层:ods.staff_info_master
|
||
-- ---------------------------------------------------------------------------
|
||
CREATE TABLE ods.staff_info_master (
|
||
id BIGINT NOT NULL,
|
||
tenant_id BIGINT,
|
||
site_id BIGINT,
|
||
tenant_org_id BIGINT,
|
||
system_user_id BIGINT,
|
||
staff_name TEXT,
|
||
alias_name TEXT,
|
||
mobile TEXT,
|
||
avatar TEXT,
|
||
gender INTEGER,
|
||
job TEXT,
|
||
job_num TEXT,
|
||
staff_identity INTEGER,
|
||
status INTEGER,
|
||
account_status INTEGER,
|
||
system_role_id INTEGER,
|
||
rank_id INTEGER,
|
||
rank_name TEXT,
|
||
new_rank_id INTEGER,
|
||
new_staff_identity INTEGER,
|
||
leave_status INTEGER,
|
||
entry_time TIMESTAMP WITHOUT TIME ZONE,
|
||
resign_time TIMESTAMP WITHOUT TIME ZONE,
|
||
create_time TIMESTAMP WITHOUT TIME ZONE,
|
||
is_delete INTEGER,
|
||
is_reserve INTEGER,
|
||
shop_name TEXT,
|
||
site_label TEXT,
|
||
cashier_point_id BIGINT,
|
||
cashier_point_name TEXT,
|
||
group_id BIGINT,
|
||
group_name TEXT,
|
||
staff_profile_id BIGINT,
|
||
auth_code TEXT,
|
||
auth_code_create TIMESTAMP WITHOUT TIME ZONE,
|
||
ding_talk_synced INTEGER,
|
||
salary_grant_enabled INTEGER,
|
||
entry_type INTEGER,
|
||
entry_sign_status INTEGER,
|
||
resign_sign_status INTEGER,
|
||
criticism_status INTEGER,
|
||
user_roles JSONB,
|
||
-- ETL 元数据
|
||
content_hash TEXT NOT NULL,
|
||
source_file TEXT,
|
||
fetched_at TIMESTAMP WITH TIME ZONE DEFAULT now(),
|
||
payload JSONB NOT NULL
|
||
);
|
||
|
||
COMMENT ON TABLE ods.staff_info_master IS '员工档案主数据(来源:SearchSystemStaffInfo API)';
|
||
|
||
-- ---------------------------------------------------------------------------
|
||
-- 2. DWD 层:dwd.dim_staff(主表,核心业务字段,SCD2)
|
||
-- ---------------------------------------------------------------------------
|
||
CREATE TABLE dwd.dim_staff (
|
||
staff_id BIGINT NOT NULL,
|
||
staff_name TEXT,
|
||
alias_name TEXT,
|
||
mobile TEXT,
|
||
gender INTEGER,
|
||
job TEXT,
|
||
tenant_id BIGINT,
|
||
site_id BIGINT,
|
||
system_role_id INTEGER,
|
||
staff_identity INTEGER,
|
||
status INTEGER,
|
||
leave_status INTEGER,
|
||
entry_time TIMESTAMP WITH TIME ZONE,
|
||
resign_time TIMESTAMP WITH TIME ZONE,
|
||
is_delete INTEGER,
|
||
-- SCD2
|
||
scd2_start_time TIMESTAMP WITH TIME ZONE NOT NULL,
|
||
scd2_end_time TIMESTAMP WITH TIME ZONE,
|
||
scd2_is_current INTEGER,
|
||
scd2_version INTEGER,
|
||
PRIMARY KEY (staff_id, scd2_start_time)
|
||
);
|
||
|
||
COMMENT ON TABLE dwd.dim_staff IS '员工档案维度主表(SCD2)';
|
||
|
||
-- ---------------------------------------------------------------------------
|
||
-- 3. DWD 层:dwd.dim_staff_ex(扩展表,次要/低频变更字段,SCD2)
|
||
-- ---------------------------------------------------------------------------
|
||
CREATE TABLE dwd.dim_staff_ex (
|
||
staff_id BIGINT NOT NULL,
|
||
avatar TEXT,
|
||
job_num TEXT,
|
||
account_status INTEGER,
|
||
rank_id INTEGER,
|
||
rank_name TEXT,
|
||
new_rank_id INTEGER,
|
||
new_staff_identity INTEGER,
|
||
is_reserve INTEGER,
|
||
shop_name TEXT,
|
||
site_label TEXT,
|
||
tenant_org_id BIGINT,
|
||
system_user_id BIGINT,
|
||
cashier_point_id BIGINT,
|
||
cashier_point_name TEXT,
|
||
group_id BIGINT,
|
||
group_name TEXT,
|
||
staff_profile_id BIGINT,
|
||
auth_code TEXT,
|
||
auth_code_create TIMESTAMP WITH TIME ZONE,
|
||
ding_talk_synced INTEGER,
|
||
salary_grant_enabled INTEGER,
|
||
entry_type INTEGER,
|
||
entry_sign_status INTEGER,
|
||
resign_sign_status INTEGER,
|
||
criticism_status INTEGER,
|
||
create_time TIMESTAMP WITH TIME ZONE,
|
||
user_roles JSONB,
|
||
-- SCD2
|
||
scd2_start_time TIMESTAMP WITH TIME ZONE NOT NULL,
|
||
scd2_end_time TIMESTAMP WITH TIME ZONE,
|
||
scd2_is_current INTEGER,
|
||
scd2_version INTEGER,
|
||
PRIMARY KEY (staff_id, scd2_start_time)
|
||
);
|
||
|
||
COMMENT ON TABLE dwd.dim_staff_ex IS '员工档案维度扩展表(SCD2)';
|
||
|
||
-- =============================================================================
|
||
-- 回滚脚本(如需撤销)
|
||
-- DROP TABLE IF EXISTS dwd.dim_staff_ex;
|
||
-- DROP TABLE IF EXISTS dwd.dim_staff;
|
||
-- DROP TABLE IF EXISTS ods.staff_info_master;
|
||
-- =============================================================================
|