03_create_ads_tables.sql 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. -- ============================================================
  2. -- ADS 层(应用数据层)建表语句
  3. -- 说明:患者检查周期全量宽表,以末次取镜时间为中心点
  4. -- ============================================================
  5. -- 患者检查周期宽表事实表
  6. CREATE TABLE IF NOT EXISTS fact_patient_exam_wide (
  7. -- 患者基本信息
  8. patient_id BIGINT COMMENT '患者ID',
  9. patient_id_str VARCHAR(50) COMMENT '病历号',
  10. patient_name VARCHAR(100) COMMENT '姓名',
  11. sex VARCHAR(10) COMMENT '性别',
  12. age INT COMMENT '年龄',
  13. birthday DATE COMMENT '生日',
  14. mobile VARCHAR(20) COMMENT '手机号',
  15. identity VARCHAR(50) COMMENT '身份证号',
  16. -- 商品和视光师信息
  17. fee_class VARCHAR(50) COMMENT '收费分类',
  18. customer_optometrist_name VARCHAR(100) COMMENT '专属视光师',
  19. customer_optometrist_org_name VARCHAR(200) COMMENT '专属视光师归属机构',
  20. last_pickup_time DATETIME COMMENT '末次取镜时间',
  21. last_pickup_date DATE COMMENT '末次取镜日期',
  22. last_pickup_goods VARCHAR(200) COMMENT '末次取镜商品名称',
  23. last_pickup_goods_id BIGINT COMMENT '末次取镜商品ID',
  24. -- 购买统计
  25. buy_cnt INT COMMENT '购买片数',
  26. refund_cnt INT COMMENT '退货片数',
  27. is_both_bs_xq TINYINT COMMENT '是否同时购买铂视控和星趣控:0=否,1=是',
  28. -- 基线时间
  29. baseline_date DATE COMMENT '基线时间',
  30. baseline_org_id INT COMMENT '基线检查机构ID',
  31. baseline_org_name VARCHAR(200) COMMENT '基线检查机构名称',
  32. -- 基线检查数据
  33. baseline_right_se_val DECIMAL(10,2) COMMENT '基线右眼SE等效球镜',
  34. baseline_left_se_val DECIMAL(10,2) COMMENT '基线左眼SE等效球镜',
  35. baseline_right_sph_val DECIMAL(10,2) COMMENT '基线右眼球镜',
  36. baseline_left_sph_val DECIMAL(10,2) COMMENT '基线左眼球镜',
  37. baseline_al_od_val DECIMAL(10,2) COMMENT '基线右眼眼轴',
  38. baseline_al_os_val DECIMAL(10,2) COMMENT '基线左眼眼轴',
  39. -- 1个月前检查数据
  40. m1_right_se_val DECIMAL(10,2) COMMENT '1个月前右眼SE等效球镜',
  41. m1_left_se_val DECIMAL(10,2) COMMENT '1个月前左眼SE等效球镜',
  42. m1_right_sph_val DECIMAL(10,2) COMMENT '1个月前右眼球镜',
  43. m1_left_sph_val DECIMAL(10,2) COMMENT '1个月前左眼球镜',
  44. m1_al_od_val DECIMAL(10,2) COMMENT '1个月前右眼眼轴',
  45. m1_al_os_val DECIMAL(10,2) COMMENT '1个月前左眼眼轴',
  46. -- 3个月前检查数据
  47. m3_right_se_val DECIMAL(10,2) COMMENT '3个月前右眼SE等效球镜',
  48. m3_left_se_val DECIMAL(10,2) COMMENT '3个月前左眼SE等效球镜',
  49. m3_right_sph_val DECIMAL(10,2) COMMENT '3个月前右眼球镜',
  50. m3_left_sph_val DECIMAL(10,2) COMMENT '3个月前左眼球镜',
  51. m3_al_od_val DECIMAL(10,2) COMMENT '3个月前右眼眼轴',
  52. m3_al_os_val DECIMAL(10,2) COMMENT '3个月前左眼眼轴',
  53. -- 6个月前检查数据
  54. m6_right_se_val DECIMAL(10,2) COMMENT '6个月前右眼SE等效球镜',
  55. m6_left_se_val DECIMAL(10,2) COMMENT '6个月前左眼SE等效球镜',
  56. m6_right_sph_val DECIMAL(10,2) COMMENT '6个月前右眼球镜',
  57. m6_left_sph_val DECIMAL(10,2) COMMENT '6个月前左眼球镜',
  58. m6_al_od_val DECIMAL(10,2) COMMENT '6个月前右眼眼轴',
  59. m6_al_os_val DECIMAL(10,2) COMMENT '6个月前左眼眼轴',
  60. -- 1个月后检查数据
  61. p1_right_se_val DECIMAL(10,2) COMMENT '1个月后右眼SE等效球镜',
  62. p1_left_se_val DECIMAL(10,2) COMMENT '1个月后左眼SE等效球镜',
  63. p1_right_sph_val DECIMAL(10,2) COMMENT '1个月后右眼球镜',
  64. p1_left_sph_val DECIMAL(10,2) COMMENT '1个月后左眼球镜',
  65. p1_al_od_val DECIMAL(10,2) COMMENT '1个月后右眼眼轴',
  66. p1_al_os_val DECIMAL(10,2) COMMENT '1个月后左眼眼轴',
  67. -- 3个月后检查数据
  68. p3_right_se_val DECIMAL(10,2) COMMENT '3个月后右眼SE等效球镜',
  69. p3_left_se_val DECIMAL(10,2) COMMENT '3个月后左眼SE等效球镜',
  70. p3_right_sph_val DECIMAL(10,2) COMMENT '3个月后右眼球镜',
  71. p3_left_sph_val DECIMAL(10,2) COMMENT '3个月后左眼球镜',
  72. p3_al_od_val DECIMAL(10,2) COMMENT '3个月后右眼眼轴',
  73. p3_al_os_val DECIMAL(10,2) COMMENT '3个月后左眼眼轴',
  74. -- 6个月后检查数据
  75. p6_right_se_val DECIMAL(10,2) COMMENT '6个月后右眼SE等效球镜',
  76. p6_left_se_val DECIMAL(10,2) COMMENT '6个月后左眼SE等效球镜',
  77. p6_right_sph_val DECIMAL(10,2) COMMENT '6个月后右眼球镜',
  78. p6_left_sph_val DECIMAL(10,2) COMMENT '6个月后左眼球镜',
  79. p6_al_od_val DECIMAL(10,2) COMMENT '6个月后右眼眼轴',
  80. p6_al_os_val DECIMAL(10,2) COMMENT '6个月后左眼眼轴',
  81. -- 9个月后检查数据
  82. p9_right_se_val DECIMAL(10,2) COMMENT '9个月后右眼SE等效球镜',
  83. p9_left_se_val DECIMAL(10,2) COMMENT '9个月后左眼SE等效球镜',
  84. p9_right_sph_val DECIMAL(10,2) COMMENT '9个月后右眼球镜',
  85. p9_left_sph_val DECIMAL(10,2) COMMENT '9个月后左眼球镜',
  86. p9_al_od_val DECIMAL(10,2) COMMENT '9个月后右眼眼轴',
  87. p9_al_os_val DECIMAL(10,2) COMMENT '9个月后左眼眼轴',
  88. -- 1年后检查数据
  89. y1_right_se_val DECIMAL(10,2) COMMENT '1年后右眼SE等效球镜',
  90. y1_left_se_val DECIMAL(10,2) COMMENT '1年后左眼SE等效球镜',
  91. y1_right_sph_val DECIMAL(10,2) COMMENT '1年后右眼球镜',
  92. y1_left_sph_val DECIMAL(10,2) COMMENT '1年后左眼球镜',
  93. y1_al_od_val DECIMAL(10,2) COMMENT '1年后右眼眼轴',
  94. y1_al_os_val DECIMAL(10,2) COMMENT '1年后左眼眼轴',
  95. -- 15个月后检查数据
  96. p15_right_se_val DECIMAL(10,2) COMMENT '15个月后右眼SE等效球镜',
  97. p15_left_se_val DECIMAL(10,2) COMMENT '15个月后左眼SE等效球镜',
  98. p15_right_sph_val DECIMAL(10,2) COMMENT '15个月后右眼球镜',
  99. p15_left_sph_val DECIMAL(10,2) COMMENT '15个月后左眼球镜',
  100. p15_al_od_val DECIMAL(10,2) COMMENT '15个月后右眼眼轴',
  101. p15_al_os_val DECIMAL(10,2) COMMENT '15个月后左眼眼轴',
  102. -- 18个月后检查数据
  103. p18_right_se_val DECIMAL(10,2) COMMENT '18个月后右眼SE等效球镜',
  104. p18_left_se_val DECIMAL(10,2) COMMENT '18个月后左眼SE等效球镜',
  105. p18_right_sph_val DECIMAL(10,2) COMMENT '18个月后右眼球镜',
  106. p18_left_sph_val DECIMAL(10,2) COMMENT '18个月后左眼球镜',
  107. p18_al_od_val DECIMAL(10,2) COMMENT '18个月后右眼眼轴',
  108. p18_al_os_val DECIMAL(10,2) COMMENT '18个月后左眼眼轴',
  109. -- 2年后检查数据
  110. y2_right_se_val DECIMAL(10,2) COMMENT '2年后右眼SE等效球镜',
  111. y2_left_se_val DECIMAL(10,2) COMMENT '2年后左眼SE等效球镜',
  112. y2_right_sph_val DECIMAL(10,2) COMMENT '2年后右眼球镜',
  113. y2_left_sph_val DECIMAL(10,2) COMMENT '2年后左眼球镜',
  114. y2_al_od_val DECIMAL(10,2) COMMENT '2年后右眼眼轴',
  115. y2_al_os_val DECIMAL(10,2) COMMENT '2年后左眼眼轴',
  116. -- 数据日期(用于分区和管理)
  117. data_date DATE COMMENT '数据日期(末次取镜日期)',
  118. -- 元数据
  119. create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  120. update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
  121. )
  122. UNIQUE KEY (patient_id, data_date)
  123. PROPERTIES (
  124. "replication_num" = "1",
  125. "in_memory" = "false",
  126. "storage_format" = "V2"
  127. );
  128. -- 按数据日期分区(可选,根据数据量决定)
  129. -- ALTER TABLE fact_patient_exam_wide
  130. -- ADD PARTITION BY RANGE(`data_date`) (
  131. -- PARTITION p202401 VALUES LESS THAN ('2024-02-01'),
  132. -- PARTITION p202402 VALUES LESS THAN ('2024-03-01'),
  133. -- ...
  134. -- );
  135. -- 创建常用查询的 Rollup(提升查询性能)
  136. -- ALTER TABLE fact_patient_exam_wide
  137. -- ADD ROLLUP recent_data (
  138. -- patient_id, patient_name, mobile,
  139. -- baseline_right_se_val, baseline_left_se_val,
  140. -- m3_right_se_val, m3_left_se_val,
  141. -- p3_right_se_val, p3_left_se_val,
  142. -- p6_right_se_val, p6_left_se_val
  143. -- );