学生用户画像-考勤主题标签构建
用助睿ETL零代码平台,完成学生多维度考勤统计转换流,解决校园考勤人工统计的痛点,新手也能轻松上手,收藏起来慢慢练!
目录
宝子们!数智教育大赛相关实验来啦✨ 今天手把手教大家用助睿ETL零代码平台,完成学生多维度考勤统计转换流,解决校园考勤人工统计的痛点,新手也能轻松上手,收藏起来慢慢练!
先简单划重点:实验核心是用助睿平台,基于7张大赛数据集,实现考勤数据从接入、关联到统计落地的全流程,重点掌握ETL操作,优化空值处理,最终输出精准考勤统计结果✅
#助客数智 #商业数据分析 #ETL数据处理 #数智教育大赛 #数据集成
一、实验前期准备(必看!不踩坑)
💻 实验环境:助睿零代码在线实验平台(地址:https://lab.guilian.cn/),电脑需支持平台运行且有数据库连接权限
📊 数据源:数智教育大赛数据集(7张核心表),本次重点用3张:考勤主表、考勤类型码表、学生信息表(形成星型模型,支撑多维度统计)
🎯 实验目标:掌握ETL全流程(数据接入、关联、衍生、聚合、落地),优化空值处理,输出精准考勤统计结果,为校园考勤管理提供数据支撑
二、详细实验步骤(一步一图,跟着做就对了)
Step1:创建实验项目(基础第一步)
1. 打开助睿实验平台,点击【新建项目】,输入项目名称“学生用户画像标签构建”,点击确定;

2. 创建成功后,在数据集成页面就能看到新建的项目,后续所有操作都在这个项目里进行~
Step2:获取数据资源(关键一步,别漏表!)
核心是把需要的3张数据表导入团队私有数据库,分3小步走,耐心点~
2.1 新建数据集目录
1. 点击项目右上角“…”,选择【打开项目】;

2. 进入项目页面,点击左侧【文件库】,右键根目录,选择【新建目录】,命名为“数智教育数据集”,确定;


3. 打开【公共空间】→【数据资源】,找到“3_kaoqin.csv”“4_kaoqintype.csv”“2_student_info.csv”,依次导出到新建的目录中(重复导出操作,3张表都要导!)。


结果:

2.2 建立数据源连接
1. 点击左侧【元数据】,右键【关系数据库】,选择【新建数据源】;

2. 配置参数(重点!别填错):
- 连接类型:MySQL
- 服务器主机名:rm-2vc3qok06bag39a5n.mysql.cn-chengdu.rds.aliyuncs.com
- 端口号:3306
- 用户名、密码、数据库名:(暂不提供,连接自己的数据库)
- 驱动类型:MySQL 8+
- 连接名称:团队私有数据库

3. 点击【测试】,提示“数据库连接成功”后,点击【添加】,连接就建立好啦。

2.3 导入数据到私有数据库(3张表依次操作)
以“3_kaoqin.csv”(考勤主表)为例,其他两张表参照操作:
1. 新建转换工作流,命名为“创建原始_学生考勤表”;

2. 拖拽【执行一个SQL脚本】组件,选择目标数据库“团队私有数据库”,粘贴建表SQL;

CREATE TABLE IF NOT EXISTS `raw_attendance` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`attendance_id` varchar(64) DEFAULT NULL COMMENT '考勤ID',
`learn_term` varchar(30) DEFAULT NULL COMMENT '学期',
`data_datetime` varchar(50) DEFAULT NULL COMMENT '时间和日期',
`attendance_type_id` varchar(64) DEFAULT NULL COMMENT '考勤类型ID',
`attendance_name` varchar(100) DEFAULT NULL COMMENT '考勤名称',
`attendance_task_order_id` varchar(64) DEFAULT NULL COMMENT '考勤事件ID',
`stu_id` varchar(64) DEFAULT NULL COMMENT '学生ID',
`stu_name` varchar(100) DEFAULT NULL COMMENT '学生姓名',
`cla_name` varchar(100) DEFAULT NULL COMMENT '班级名',
`cla_id` varchar(64) DEFAULT NULL COMMENT '班级ID',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '入库时间',
PRIMARY KEY (`id`),
KEY `idx_student_id` (`stu_id`),
KEY `idx_term` (`learn_term`)
) COMMENT='原始_学生考勤表';
3. 运行转换流,查看日志,确认表创建成功;

4. 再新建转换工作流,命名为“导入原始考勤数据”,拖拽【CSV文件输入】组件,选择“3_kaoqin.csv”,编码设为UTF-8,获取字段后确认;
1

2

3

5. 拖拽【表输出】组件,连接CSV输入组件,选择目标表“raw_attendance”,获取字段并匹配对应关系,运行转换流,完成数据导入。
1

2

3

4

⚠️ 避坑提示:考勤类型表(4_kaoqintype.csv)导入时,列分隔符选“TAB”,编码设为GB2312;学生信息表(2_student_info.csv)需用“字段选择”组件,规范Integer类型字段,避免出现小数!
考勤类型表(4_kaoqintype.csv)代码:
CREATE TABLE IF NOT EXISTS `raw_attendance_type` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`attendance_type_id` varchar(64) NOT NULL COMMENT '考勤类型id',
`attendance_type_name` varchar(100) DEFAULT NULL COMMENT '考勤类型名称',
`attendance_task_order_id` varchar(64) DEFAULT NULL COMMENT '考勤事件id',
`attendance_task_name` varchar(100) DEFAULT NULL COMMENT '考勤事件名',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '入库时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_attendance_type_id` (`attendance_task_order_id`)
)COMMENT='原始_考勤类型表';
学生信息表(2_student_info.csv)代码:
CREATE TABLE IF NOT EXISTS `raw_student_info` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`stu_id` varchar(64) NOT NULL COMMENT '学生ID',
`stu_name` varchar(100) DEFAULT NULL COMMENT '学生姓名',
`stu_sex` varchar(10) DEFAULT NULL COMMENT '性别',
`stu_nation` varchar(50) DEFAULT NULL COMMENT '民族',
`born_date` varchar(10) DEFAULT NULL COMMENT '出生日期(年)',
`cla_name` varchar(100) DEFAULT NULL COMMENT '班级名',
`native_place` varchar(200) DEFAULT NULL COMMENT '家庭住址',
`residence_type` varchar(50) DEFAULT NULL COMMENT '家庭类型',
`policy` varchar(50) DEFAULT NULL COMMENT '政治面貌',
`cla_id` varchar(64) DEFAULT NULL COMMENT '班级ID',
`cla_term` varchar(30) DEFAULT NULL COMMENT '班级学期',
`live_on_campus` varchar(10) DEFAULT NULL COMMENT '是否住校',
`leave_school` varchar(10) DEFAULT NULL COMMENT '是否退学',
`dormitory_no` varchar(50) DEFAULT NULL COMMENT '宿舍号',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '入库时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_student_id` (`stu_id`),
KEY `idx_cla_id` (`cla_id`)
) COMMENT='原始_学生信息表';
Step3:创建学生考勤主题标签表(存放最终结果)
1. 新建转换工作流,命名为“创建学生考勤主题标签表”;
2. 拖拽【执行一个SQL脚本】组件,粘贴标签表建表SQL,选择“团队私有数据库”;

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='学生考勤主题标签表';

3. 运行转换流,日志无报错即创建成功,后续统计结果就存这张表~

Step4:构建考勤主题标签(实验核心!)
这一步是重点,遵循“数据接入→关联→标签衍生→聚合→落地”的逻辑,一步步来:
4.1 数据接入:导入3张核心表数据
1. 右键【资源库】根目录,新建转换流,命名为“学生考勤主题标签”,解锁后编辑;
2. 拖拽3个【表输入】组件,分别命名为“考勤记录”“考勤类型”“学生信息”;

3. 每个组件依次选择“团队私有数据库”,获取对应的数据表(raw_attendance、raw_attendance_type、raw_student_info),确认后完成数据接入。


4.2 数据关联:绑定考勤记录与考勤类型
1. 拖拽【记录集连接】组件,为了避免连接出错,先在“考勤记录”和“记录集连接”之间添加【排序记录】组件,只保留“attendance_type_id”“attendance_task_order_id”字段排序;


2. 把“考勤类型”组件连接到【记录集连接】组件(无需再排序);
3. 双击【记录集连接】组件,选择两个数据源,连接类型设为LEFT OUTER,只保留两个表的“attendance_type_id”“attendance_task_order_id”字段,完成关联,补充考勤行为名称。

4.3 行为标签衍生:标记异常考勤
1. 拖拽【JavaScript代码】组件,命名为“提取异常考勤记录”,对接【记录集连接】组件;

2. 粘贴JavaScript脚本,通过关键词匹配,生成二进制标记(1=异常,0=正常),区分迟到、早退、请假、未穿校服四种情况;

// 初始化变量
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;
}
}
3. 点击【测试脚本】,确认标记字段只有1和0,无异常后保存。

4.4 多维度聚合统计:计算异常考勤次数
1. 拖拽【分组】组件,对接【JavaScript代码】组件;

2. 分组字段选择“stu_id”“stu_name”“cla_id”“cla_name”,聚合字段用SUM函数,分别统计迟到、早退、请假、未穿校服的次数(对应标记字段求和)。

4.5 关联学生信息:补全学生属性
1. 给“学生信息”组件添加【排序记录】组件,只按“stu_id”排序;


2. 再拖拽一个【记录集连接】组件,将聚合后的考勤数据(先排序)与学生信息连接,连接字段为“stu_id”,补充学生性别、出生日期、是否住校等属性。


连接:


4.6 优化处理:移除冗余+空值+属性标准化
1. 拖拽【字段选择】组件,移除无关冗余字段,只保留核心字段(学生ID、姓名、班级、考勤次数、学生属性等);




2. 拖拽【替换NULL值】组件,将性别、出生日期、政治面貌、是否住校的空值,全部替换为“未知”;


3. 拖拽【值映射】组件,将住校状态编码(0→否,1→是)映射为规范文本;


4. 新增两个【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='未知'
}

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='未知'
}
4.7 结果入库+执行工作流
1. 拖拽【表输出】组件,对接“校区类型判定”组件,选择“团队私有数据库”和目标表“student_attendance_stats”;

2. 勾选“裁剪表”(避免重复插入),指定数据库字段并匹配对应关系;

3. 点击工具栏【执行】,选择默认配置启动工作流,查看日志,无报错即执行成功;

4. 验证结果:在【元数据】中加载“团队私有数据库”元数据,查询“student_attendance_stats”表,确认数据符合预期。


三、实验避坑汇总(新手必看!)
-
1. 考勤类型表导入时,列分隔符是TAB,编码GB2312,别选错,否则会乱码;
-
2. 多表关联前一定要排序,否则连接结果会出错;
-
3. 空值处理要全面,重点处理性别、出生日期等字段,避免后续统计异常;
-
4. 表输出时勾选“裁剪表”,防止重复插入数据,影响统计结果。
四、实验总结
本次实验全程用助睿零代码平台操作,不用写复杂代码,就能完成ETL全流程✅ 不仅掌握了数据接入、关联、聚合的核心操作,还学会了空值处理和属性标准化,完美解决校园考勤人工统计效率低、口径不统一的问题。
助睿平台真的很适合新手,可视化操作,组件拖拽就能完成配置,小白也能快速上手~ 后续可以根据这个思路,灵活扩展考勤类型,适配更多校园管理场景。
💡 附:实验所需SQL和脚本,评论区扣“考勤实验”,直接发你!
更多推荐




所有评论(0)