-- ============================================================ -- DWD 层(明细数据层)建表语句 -- 说明:在 ODS 层基础上关联生成的就诊明细事实表 -- ============================================================ -- 患者就诊明细事实表 CREATE TABLE IF NOT EXISTS fact_patient_exam_detail ( -- 主键 id BIGINT COMMENT '自增ID', -- 患者维度 patient_id BIGINT COMMENT '患者ID', patient_id_str VARCHAR(50) COMMENT '病历号', patient_name VARCHAR(100) COMMENT '姓名', sex VARCHAR(10) COMMENT '性别', age INT COMMENT '年龄', birthday DATE COMMENT '生日', mobile VARCHAR(20) COMMENT '手机号', identity VARCHAR(50) COMMENT '身份证号', -- 就诊信息 clinic_id BIGINT COMMENT '就诊ID', come_time DATETIME COMMENT '就诊时间', come_date DATE COMMENT '就诊日期', visit_type VARCHAR(20) COMMENT '就诊类型:初诊/复诊/预约/复查', channel VARCHAR(50) COMMENT '渠道', -- 商品维度 goods_id BIGINT COMMENT '商品ID', goods_name VARCHAR(200) COMMENT '商品名称', goods_uuid VARCHAR(100) COMMENT '商品UUID', fee_class VARCHAR(50) COMMENT '收费分类', -- 取镜信息 pickup_id BIGINT COMMENT '取镜记录ID', pickup_time DATETIME COMMENT '取镜时间', pickup_date DATE COMMENT '取镜日期', -- 订单信息 order_id BIGINT COMMENT '订单ID', orderdetail_id BIGINT COMMENT '订单明细ID', pay_time DATETIME COMMENT '支付时间', pay_date DATE COMMENT '支付日期', pay_amt DECIMAL(18,2) COMMENT '支付金额', refund_time DATETIME COMMENT '退款时间', -- 机构维度 org_id INT COMMENT '就诊机构ID', org_name VARCHAR(200) COMMENT '就诊机构名称', group_id INT COMMENT '地区ID', group_name VARCHAR(200) COMMENT '地区名称', -- 员工维度 customer_optometrist_staff_id BIGINT COMMENT '专属视光师ID', customer_optometrist_name VARCHAR(100) COMMENT '专属视光师姓名', customer_optometrist_org_name VARCHAR(200) COMMENT '视光师归属机构', accept_doctor_id BIGINT COMMENT '接诊医生ID', accept_doctor_name VARCHAR(100) COMMENT '接诊医生姓名', accept_optometrist_id BIGINT COMMENT '接诊视光师ID', accept_optometrist_name VARCHAR(100) COMMENT '接诊视光师姓名', -- 检查结果原始数据 exam_result_json STRING COMMENT '检查结果JSON', exam_tab VARCHAR(50) COMMENT '检查类型:yj_dnyg/tj_gxsw', exam_id INT COMMENT '检查项目ID', -- 检查指标(解析后的数值) right_se_val DECIMAL(10,2) COMMENT '右眼SE等效球镜', left_se_val DECIMAL(10,2) COMMENT '左眼SE等效球镜', right_sph_val DECIMAL(10,2) COMMENT '右眼球镜', left_sph_val DECIMAL(10,2) COMMENT '左眼球镜', right_cyl_val DECIMAL(10,2) COMMENT '右眼柱镜', left_cyl_val DECIMAL(10,2) COMMENT '左眼柱镜', al_od_val DECIMAL(10,2) COMMENT '眼轴右眼', al_os_val DECIMAL(10,2) COMMENT '眼轴左眼', -- 数据日期(用于增量同步) data_date DATE COMMENT '数据日期(就诊日期)', -- 元数据 create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' ) DUPLICATE KEY(id, come_time) PROPERTIES ( "replication_num" = "1", "in_memory" = "false", "storage_format" = "V2" ); -- 创建索引提升查询性能 CREATE INDEX idx_patient_id ON fact_patient_exam_detail(patient_id); CREATE INDEX idx_pickup_date ON fact_patient_exam_detail(pickup_date); CREATE INDEX idx_data_date ON fact_patient_exam_detail(data_date); CREATE INDEX idx_fee_class ON fact_patient_exam_detail(fee_class);