02_create_dwd_tables.sql 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. -- ============================================================
  2. -- DWD 层(明细数据层)建表语句
  3. -- 说明:在 ODS 层基础上关联生成的就诊明细事实表
  4. -- ============================================================
  5. -- 患者就诊明细事实表
  6. CREATE TABLE IF NOT EXISTS fact_patient_exam_detail (
  7. -- 主键
  8. id BIGINT COMMENT '自增ID',
  9. -- 患者维度
  10. patient_id BIGINT COMMENT '患者ID',
  11. patient_id_str VARCHAR(50) COMMENT '病历号',
  12. patient_name VARCHAR(100) COMMENT '姓名',
  13. sex VARCHAR(10) COMMENT '性别',
  14. age INT COMMENT '年龄',
  15. birthday DATE COMMENT '生日',
  16. mobile VARCHAR(20) COMMENT '手机号',
  17. identity VARCHAR(50) COMMENT '身份证号',
  18. -- 就诊信息
  19. clinic_id BIGINT COMMENT '就诊ID',
  20. come_time DATETIME COMMENT '就诊时间',
  21. come_date DATE COMMENT '就诊日期',
  22. visit_type VARCHAR(20) COMMENT '就诊类型:初诊/复诊/预约/复查',
  23. channel VARCHAR(50) COMMENT '渠道',
  24. -- 商品维度
  25. goods_id BIGINT COMMENT '商品ID',
  26. goods_name VARCHAR(200) COMMENT '商品名称',
  27. goods_uuid VARCHAR(100) COMMENT '商品UUID',
  28. fee_class VARCHAR(50) COMMENT '收费分类',
  29. -- 取镜信息
  30. pickup_id BIGINT COMMENT '取镜记录ID',
  31. pickup_time DATETIME COMMENT '取镜时间',
  32. pickup_date DATE COMMENT '取镜日期',
  33. -- 订单信息
  34. order_id BIGINT COMMENT '订单ID',
  35. orderdetail_id BIGINT COMMENT '订单明细ID',
  36. pay_time DATETIME COMMENT '支付时间',
  37. pay_date DATE COMMENT '支付日期',
  38. pay_amt DECIMAL(18,2) COMMENT '支付金额',
  39. refund_time DATETIME COMMENT '退款时间',
  40. -- 机构维度
  41. org_id INT COMMENT '就诊机构ID',
  42. org_name VARCHAR(200) COMMENT '就诊机构名称',
  43. group_id INT COMMENT '地区ID',
  44. group_name VARCHAR(200) COMMENT '地区名称',
  45. -- 员工维度
  46. customer_optometrist_staff_id BIGINT COMMENT '专属视光师ID',
  47. customer_optometrist_name VARCHAR(100) COMMENT '专属视光师姓名',
  48. customer_optometrist_org_name VARCHAR(200) COMMENT '视光师归属机构',
  49. accept_doctor_id BIGINT COMMENT '接诊医生ID',
  50. accept_doctor_name VARCHAR(100) COMMENT '接诊医生姓名',
  51. accept_optometrist_id BIGINT COMMENT '接诊视光师ID',
  52. accept_optometrist_name VARCHAR(100) COMMENT '接诊视光师姓名',
  53. -- 检查结果原始数据
  54. exam_result_json STRING COMMENT '检查结果JSON',
  55. exam_tab VARCHAR(50) COMMENT '检查类型:yj_dnyg/tj_gxsw',
  56. exam_id INT COMMENT '检查项目ID',
  57. -- 检查指标(解析后的数值)
  58. right_se_val DECIMAL(10,2) COMMENT '右眼SE等效球镜',
  59. left_se_val DECIMAL(10,2) COMMENT '左眼SE等效球镜',
  60. right_sph_val DECIMAL(10,2) COMMENT '右眼球镜',
  61. left_sph_val DECIMAL(10,2) COMMENT '左眼球镜',
  62. right_cyl_val DECIMAL(10,2) COMMENT '右眼柱镜',
  63. left_cyl_val DECIMAL(10,2) COMMENT '左眼柱镜',
  64. al_od_val DECIMAL(10,2) COMMENT '眼轴右眼',
  65. al_os_val DECIMAL(10,2) COMMENT '眼轴左眼',
  66. -- 数据日期(用于增量同步)
  67. data_date DATE COMMENT '数据日期(就诊日期)',
  68. -- 元数据
  69. create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  70. update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
  71. )
  72. DUPLICATE KEY(id, come_time)
  73. PROPERTIES (
  74. "replication_num" = "1",
  75. "in_memory" = "false",
  76. "storage_format" = "V2"
  77. );
  78. -- 创建索引提升查询性能
  79. CREATE INDEX idx_patient_id ON fact_patient_exam_detail(patient_id);
  80. CREATE INDEX idx_pickup_date ON fact_patient_exam_detail(pickup_date);
  81. CREATE INDEX idx_data_date ON fact_patient_exam_detail(data_date);
  82. CREATE INDEX idx_fee_class ON fact_patient_exam_detail(fee_class);