Kettle项目实战
比赛信息自动流转方案
1. 项目背景与介绍
众多的比赛都可以为抽象成以下的流程:

传统的报名工作需要赛事组工作人员以表格或是邮件等方式采集选手的信息,并归档处理。选参赛过程中的种种行为,诸如签到、比赛、得分都得不到高效的记录,往往由纸张的表格记录,再录入excel进行整理。在处理比赛结果时,需要重复地完成结算流程,并进行检查,非常消耗人工,且易产生错误。
在此番背景下,一个整合比赛从发起、开启报名、比赛到结算的工作流可以被搭建起来,以更高效地筹办与组织赛事。
简单来看,工作流需要解决的问题包括且不局限于:
- 完成比赛信息录入
- 完成选手信息录入
- 完成报名信息录入
- 完成参赛信息录入
- 完成打分信息录入
- 完成信息间的流转与分析
本文将使用ETL技术,在数据已有的前提下,实现数据的流转与不同维度的分析。
2. 准备工作
2.1 构建数据库
数据库型号:TDSQL-C for MySQL MySQL 5.7
在拆解完需求后,可以得到以下几个实体类(类之间的关系见3.1 项目架构 ):
表1 参赛选手信息表
| 库名 | 表名 | 字段名 | 数据类型 | 默认值 | 是否允许为空 | 字段说明 |
|---|---|---|---|---|---|---|
| ETL | player | player_id | varchar(12) | NULL | 否 | 选手学号 |
| ETL | player | player_name | varchar(10) | NULL | 否 | 选手姓名 |
| ETL | player | player_academy | varchar(15) | NULL | 否 | 选手学院 |
| ETL | player | player_class | varchar(15) | NULL | 否 | 选手班级 |
| ETL | player | player_tele | varchar(11) | NULL | 是 | 选手电话 |
| ETL | player | player_avatar | varchar(255) | NULL | 是 | 选手头像 |
| ETL | player | player_qq | varchar(20) | NULL | 是 | 选手qq |
| ETL | player | player_email | varchar(50) | NULL | 是 | 选手邮箱 |
表2 比赛信息表
| 库名 | 表名 | 字段名 | 数据类型 | 默认值 | 是否允许为空 | 字段说明 |
|---|---|---|---|---|---|---|
| ETL | competition | comp_id | varchar(255) | NULL | 否 | 比赛id |
| ETL | competition | comp_name | varchar(255) | NULL | 否 | 比赛名称 |
| ETL | competition | comp_ddl | datetime | NULL | 否 | 比赛报名截至日期 |
| ETL | competition | comp_start_date | datetime | NULL | 否 | 正式比赛日期 |
| ETL | competition | comp_end_date | datetime | NULL | 否 | 比赛结算日期 |
表3 场地信息表
| 库名 | 表名 | 字段名 | 数据类型 | 默认值 | 是否允许为空 | 字段说明 |
|---|---|---|---|---|---|---|
| ETL | venue | venue_id | varchar(255) | NULL | 否 | 场地id |
| ETL | venue | venue_name | varchar(255) | NULL | 否 | 场地名称 |
| ETL | venue | venue_capacity | int(11) | NULL | 否 | 场地容量 |
表4 报名信息表

本文介绍了使用Kettle实现比赛数据管理的解决方案,包括数据库设计、假数据生成、工作流构建和数据流转分析。通过ETL技术,自动化完成了报名、参赛、打分等信息的录入和流转,实现了比赛信息的高效管理和统计分析,如参赛率、得分排名等。同时,项目还涉及邮件服务的准备和测试,展示了Kettle在数据处理中的应用。
2370

被折叠的 条评论
为什么被折叠?



