助睿零代码平台实战:学生考勤主题标签ETL全流程构建
本次实验基于助睿零代码平台,通过ETL流程将原始考勤数据自动化处理为学生考勤主题标签表,实现了迟到、早退、请假、未穿校服等指标的多维度统计。告别手工Excel,让校园考勤管理更高效、更规范。
一、实验背景与目标
1.1实验背景
在校园考勤管理中,传统的人工Excel统计方式存在三大痛点:效率低且数据量大时极易出错、统计口径不统一导致不同老师对迟到早退的理解不一致、难以进行多维度分析如按年级或住校走读对比。
所以本实验基于数智教育大赛真实数据集,使用助睿零代码ETL平台,设计并实现一个自动化的学生考勤主题标签构建流程。
1.2实验目标
实验目标包括掌握ETL数据处理全流程,即数据接入、关联、衍生、聚合、落地,同时构建学生多维度考勤统计标签,具体包括迟到次数、早退次数、请假次数和没穿校服次数,最终输出可直接用于学生画像分析或行为预警的标准表。
二、实验环境与数据集
实验环境为助睿零代码在线实验平台,数据库使用MySQL团队私有数据库,核心功能模块包括资源库、文件库、元数据管理和转换流设计。

而本次实验使用三张核心数据表。
第一张是考勤主表,文件名为3_kaoqin.csv,作为事实表记录每次考勤行为,关键字段包括学生ID、班级ID、考勤类型ID和打卡时间。
第二张是考勤类型码表,文件名为4_kaoqintype.csv,作为维度表提供考勤事件的标准名称,关键字段为考勤类型ID和考勤事件名称。
第三张是学生信息表,文件名为2_student_info.csv,作为属性表提供学生基础属性,关键字段包括学生ID、班级、性别和是否住校。
这三张表共同形成了星型模型,即事实表加维度表加属性表的结构。
三、整体转换流设计
整个ETL流程遵循数据接入、清洗整合、维度拆解、标签标记、指标计算、结果落地的核心逻辑。

图中各核心组件的作用如下:
1)表输入组件用于读取数据库中的原始数据表。
2)排序记录组件按照指定字段对数据进行排序,为记录集连接做准备。
3)记录集连接组件按关联字段连接两表,补充考勤行为名称或学生属性。
4)字段选择组件用于移除冗余字段,保留核心必要字段。
5)JavaScript代码组件执行脚本,通过关键词匹配提取异常考勤记录并生成二进制标记。
6)分组组件按指定维度分组,使用SUM函数聚合统计各类异常次数。替换NULL值组件将空值字段替换为未知。
7)值映射组件将住校状态编码0和1映射为否和是。
8)最后表输出组件将最终结果写入数据库目标表。
四、实验步骤详解
4.1创建实验项目
登录助睿零代码在线实验平台后,先进入个人团队,然后点击新建项目

输入项目名称学生用户画像标签构建,点击确定。创建成功后即可在数据集成页面看到新创建的项目。

4.2 数据资源获取
项目创建成功后点击项目右上角的更多按钮,选择打开项目。在项目页面左侧可以看到资源库、文件库、元数据三个菜单。

首先获取实验数据集。点击文件库,右键根目录选择新建目录,输入目录名称为数智教育数据集,点击确定。


然后点击公共空间,再点击数据资源,找到3_kaoqin.csv文件,点击卡片右上角的更多按钮后,选择导出,在弹出的窗口中选择导出到刚刚创建的目录下。
并重复以上操作,将4_kaoqintype.csv和2_student_info.csv也导出到该目录。


接下来建立数据源连接。在元数据标签页中,右键点击关系数据库节点选择新建数据源。

连接类型选择MySQL,使用助教提供的用户名和密码,服务器主机名填写数据库连接地址,端口号为3306,数据库名与用户名保持一致,连接名称为团队私有数据库。
填写完毕后点击测试按钮验证,成功后点击添加。

4.3 数据导入团队私有数据库
首先创建原始学生考勤表。新建一个转换流并命名为“创建原始_学生考勤表”,并拖拽“执行一个SQL脚本”组件到画布。



双击执行SQL脚本组件,填写建表SQL脚本。
SQL脚本如下:
CREATE TABLE IF NOTEXISTS `raw_attendance` ( `id` bigintNOT NULL AUTO_INCREMENT COMMENT '自增ID', `attendance_id` varchar(64) DEFAULTNULL COMMENT '考勤ID', `learn_term` varchar(30) DEFAULTNULL COMMENT '学期', `data_datetime` varchar(50) DEFAULTNULL COMMENT '时间和日期', `attendance_type_id` varchar(64) DEFAULTNULL COMMENT '考勤类型ID', `attendance_name` varchar(100) DEFAULTNULL COMMENT '考勤名称', `attendance_task_order_id` varchar(64) DEFAULTNULL COMMENT '考勤事件ID', `stu_id` varchar(64) DEFAULTNULL COMMENT '学生ID', `stu_name` varchar(100) DEFAULTNULL COMMENT '学生姓名', `cla_name` varchar(100) DEFAULTNULL COMMENT '班级名', `cla_id` varchar(64) DEFAULTNULL COMMENT '班级ID', `create_time` datetime DEFAULTCURRENT_TIMESTAMP COMMENT '入库时间', PRIMARY KEY (`id`), KEY `idx_student_id` (`stu_id`), KEY `idx_term` (`learn_term`) ) COMMENT='原始_学生考勤表';
目标数据库选择团队私有数据库。而SQL脚本的主要内容是创建名为raw_attendance的表。

接下来导入原始考勤数据。新建一个转换流并命名为导入原始考勤数据,拖拽一个CSV文件输入组件到画布。


双击CSV文件输入组件,设置步骤名称为“考勤记录”,点击浏览文件选择3_kaoqin.csv,编码选择UTF-8,在字段表格中右键点击获取字段。



拖拽一个“表输出”组件到画布,建立从CSV文件输入组件到表输出组件的连线,连线类型选择主输出步骤。

双击表输出组件,数据库连接选择团队私有数据库,目标表输入raw_attendance,勾选“裁剪表”和“指定数据库字段”,并在数据库字段标签页中右键获取字段,并将表字段修改为建表语句中对应的字段。




点击执行按钮运行转换流,查看执行日志确认成功。

接下来按照同样的方法导入原始考勤类型表和原始学生信息表。考勤类型表的CSV文件输入组件中列分隔符为插入制表符,编码为GB2312。学生信息表需要拖拽一个字段选择组件来固化bf_zhusu和bf_qinshihao这两个整数字段的数据类型,避免出现小数。



学生信息表转换流中字段选择组件的配置,元数据标签页中bf_zhusu和bf_qinshihao的类型设置为Integer

4.4 创建学生考勤主题标签表
新建一个转换流并命名为创建学生考勤主题标签表,拖拽执行一个SQL脚本组件。SQL脚本创建名为student_attendance_stats的表。

SQL脚本如下:
CREATE TABLE IF NOT EXISTS student_attendance_stats ( id INT PRIMARY KEY AUTO_INCREMENT COMMENT '自增主键', student_id INT NOT NULL COMMENT '学生ID', student_name VARCHAR(50) NOT NULL COMMENT '学生姓名', class_id INT NOT NULL COMMENT '班级ID', class_name VARCHAR(50) NOT NULL COMMENT '班级名称', grade VARCHAR(10) NOT NULL COMMENT '年级', gender VARCHAR(10) NOT NULL COMMENT '性别', birth_date VARCHAR(10) NOT NULL COMMENT '出生日期', political_status VARCHAR(20) NOT NULL COMMENT '政治面貌', is_boarder VARCHAR(10) NOT NULL COMMENT '是否住校', campus_type VARCHAR(10) NOT NULL COMMENT '校区类型', late_count INT NOT NULL DEFAULT 0 COMMENT '迟到次数', early_leave_count INT NOT NULL DEFAULT 0 COMMENT '早退次数', leave_count INT NOT NULL DEFAULT 0 COMMENT '请假次数', uniform_violate_count INT NOT NULL DEFAULT 0 COMMENT '没穿校服次数', create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '统计入库时间', INDEX idx_student (student_id), INDEX idx_class (class_id), INDEX idx_grade (grade) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生考勤主题标签表';
4.5 学生考勤主题标签构建转换流
这是整个实验的核心部分,需要新建一个转换流并命名为学生考勤主题标签。
第一步是数据接入。拖拽三个表输入组件至画布,分别命名为“考勤记录”、“考勤类型”和"学生信息"。



第二步是关联考勤记录和考勤类型。不过要在考勤记录组件和记录集连接组件之间添加一个“排序记录”组件,,并将其命名为“按照考勤类型和考勤任务类型排序”,同时设置排序字段为attendance_type_id和attendance_task_order_id。

配置记录集连接组件,第一个Transform选择“按照考勤类型和考勤任务类型排序”,第二个Transform选择”考勤类型“,连接类型选择LEFT OUTER,连接字段使用attendance_type_id和attendance_task_order_id。

第三步是行为标签衍生。添加JavaScript代码组件,输入脚本代码,通过关键词匹配生成isLate、isEarly、isLeave、isNoUniform四个二进制标记。
脚本代码如下:
// 初始化变量var isLate = 0;var isEarly = 0;var isLeave = 0;var isNoUniform = 0;// 核心判断逻辑if(attendance_type_name != null && attendance_task_name != null){ // 迟到判断(排除请假)if((attendance_type_name.includes("迟到") || attendance_type_name.includes("晚到") || attendance_task_name.includes("迟到") || attendance_task_name.includes("晚到")) && !attendance_task_name.includes("请假")){ isLate = 1; } // 早退判断(排除请假)if((attendance_type_name.includes("早退") || attendance_task_name.includes("早退")) && !attendance_task_name.includes("请假")){ isEarly = 1; } // 校服违规:只要包含“校服”就标记违规if(attendance_type_name.includes("校服") || attendance_task_name.includes("校服")){ isNoUniform = 1; } }// 请假判断if(attendance_task_name != null){ if(attendance_task_name.includes("请假")){ isLeave = 1; } }




第四步是多维度分组聚合统计。添加分组组件,按学生ID、学生姓名、班级ID、班级名称等维度分组,对四个标记字段分别求和。

第五步是关联学生信息。先添加一个排序记录组件,将其命名为“按照学生编号进行排序。获取字段后仅保留stu_id。

然后再添加一个”记录集连接“组件,配置如下图。

第六步是字段选择移除冗余字段。添加字段选择组件,只保留需要的字段。


第七步是空值处理。添加替换NULL值组件,将性别、出生日期、政治面貌、是否住校的空值替换为未知。


第八步是住校状态映射。添加值映射组件,将live_on_campus字段的0映射为否,1映射为是。



第九步是从班级名称提取年级。添加JavaScript代码组件,输入脚本从班级名称中提取高一、高二、高三或未知。
脚本代码如下:
var gra_name
if (cla_name == null){
gra_name='未知'
}else if(cla_name.includes('高一')){
gra_name='高一'
}else if (cla_name.includes('高二')){
gra_name='高二'
}else if (cla_name.includes("高三")){
gra_name='高三'
} else{
gra_name='未知'
}


而接下需要设置“gra_name”字段类型,在配置窗口的下方空白表格处右键,点击“插入”后将其类型设置为“String”

第十步是校区类型判定。添加JavaScript代码组件,输入脚本判断以白杠或东杠开头的为新校区,其他为老校区。
脚本代码如下:
var class_campus_type
if (cla_name == null){
class_campus_type='未知'
}else if(cla_name.startsWith('白-') || cla_name.startsWith('东-')){
class_campus_type='新校区'
}else if (cla_name != null && !isEmpty(cla_name)){
class_campus_type='老校区'
} else{
class_campus_type='未知'
}

第十一步是结果入库。添加表输出组件,选择团队私有数据库连接,目标表为student_attendance_stats,勾选裁剪表,在数据库字段标签页中建立字段映射。




最后点击执行按钮运行转换流。

启动后可以查看执行日志。

五、总结
至此,我们利用助睿零代码平台,完成了从原始打卡记录到学生考勤画像标签的完整ETL流程。相比于传统的手工Excel统计,这套自动化流程不仅大幅提升了效率,更重要的是统一了统计口径,为后续的学生行为分析、预警干预提供了可靠的数据支撑。
数据 pipeline 的建设从来不是一蹴而就的,但借助像助睿这样的零代码工具,我们确实可以用更低的门槛解决实际的业务痛点。希望今天的实战演练能为你今后的数据工作带来一些启发。
感谢您的观看,我们下期实战再见!
更多推荐




所有评论(0)