# 线上门诊离线数仓 **Repository Path**: cutlery/DataWarehouse ## Basic Information - **Project Name**: 线上门诊离线数仓 - **Description**: 基于Python+MySQL+sqoop+Hive+Spark+Superset的医院门诊大数据可视化项目 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-03 - **Last Updated**: 2026-05-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 医院线上门诊离线数仓 基于 Python + Hive + Superset 的医院数据可视化项目 ## 1.项目背景与需求 随着医院线上门诊业务量激增,传统报表系统难以应对海量历史数据的分析需求。本项目旨在构建一个离线数据仓库,整合挂号、处方、费用等多源数据,并对接superset大屏展示每日运营情况。 ## 2. 项目目标 - 数据整合:将 MySQL 业务库中的线上门诊数据通过Sqoop增量导入Hive数仓,通过spark将ads报表数据存储至MySQL - 分层建模:设计 ODS → DWD → DWS → ADS 分层,构建科室、医生、患者、药品、费用五大主题 - 指标输出:生成 5 张核心分析表(科室就诊统计、医生工作量、患者分析、药品销售、费用分析) - 可视化呈现:基于 Superset 搭建运营仪表盘,支持动态筛选与下钻 - 高可用保障:三节点 HA 集群,确保数据采集与计算的稳定性 ## 3. 要点说明 - 分层设计说明:ODS层存储原始数据,DWD层清洗去重、字段脱敏,DWS层轻度聚合形成宽表,ADS层对接BI工具、输出报表 - 调度方式:使用Linux原生工具crontab进行任务自动化 - 对数据按指定日期分区,1点自动执行前一天数据(crontab可通过管理数据脚本实现,但由于需要手动生成模拟数据,因此未用crontab自动化调度),采用增量导入方式 - 图表每日更新:自动删除MySQL旧数据,对接superset,刷新数据源可直接展示日运营情况 ## 4.技术栈 - 数据生成:Python - 数据库/仓库:MySQL、Hive - 数据传输:sqoop、spark - 可视化:Superset - 存储:HDFS ## 5.环境配置 VMware7+Centos9+jdk-8+python-3.10+MySQL-8.0+sqoop-1.4.7+zookeeper-3.7.2+hadoop-3.1.3+Spark-3.5.0+hive-3.1.3+superset-5.7.2(HA三台虚拟机高可用集群) ## 6.项目结构 - data_generator/ 数据生成脚本 - sql/ Hive 建表 & ETL 脚本 - images/ 可视化截图 - README.md 项目说明 - hive调优.md:针对小型虚拟机集群调优说明,以及资源充足环境下优化查询的方式 ## 7.核心报表表 - dept_visit 科室就诊统计 - doctor_workload 医生工作量 - patient_visit_analysis 患者分析 - medicine_sales_analysis 药品销售 - medical_fee_analysis 费用分析 ## 8.可视化图表 - 科室就诊量TOP10 - 就诊总费用产出 - 医生工作量/患者满意度排行 - 费用支付方式分析 - 各年龄段病人画像 - 高频诊断疾病 - 多用趋势图、饼图、柱状图、词云图、表格