实验2etl
学生多维度考勤统计 ETL 实战(助睿数智零代码平台)
1 实验概述
目的:基于“数智教育”数据集,在助睿数智(Uniplore)零代码平台完成学生多维度考勤统计的 ETL 全流程,解决人工统计效率低、口径不统一的问题。
环境:Uniplore 平台(https://lab.guilian.cn/),数据源为7张业务表,聚焦3张核心表。
范围:多表接入、关联、标签衍生、聚合统计、结果入库;重点验证关联精准性与统计准确性。
2 整体设计与数据梳理
2.1 转换流逻辑
接入三大数据源 → 多表关联 → 标记考勤行为 → 计算核心指标 → 基础属性关联 → 落地统计结果,全部通过可视化配置完成。
2.2 源数据与星型模型
| 表 | 角色 | 关键字段 |
|---|---|---|
| 3_kaoqin(考勤主表) | 事实表 | 学生ID、班级ID、学期、打卡时间、考勤类型ID、描述 |
| 4_kaoqintype(考勤类型码表) | 维度表 | 考勤类型ID、考勤事件名称 |
| 2_student_info(学生信息表) | 属性表 | 学生ID、姓名、性别、出生日期、政治面貌、是否住校 |
2.3 标签口径
基础属性:直接读取,性别/出生日期/政治面貌空值替换为“未知”。
衍生维度:
-
年级:从班级名称提取“高一/高二/高三”,否则“未知”
-
是否住校:1→是,0→否,空→未知
-
校区类型:以“白-”或“东-”开头→新校区,其余老校区,空值→未知
考勤行为指标(统计次数):
-
迟到:controler_name/control_task_name 包含“迟到”“晚到”,且不包含“请假”
-
早退:包含“早退”且不包含“请假”
-
请假:control_task_name 包含“请假”
-
没穿校服:包含“校服”
3 实验步骤(精简版)
3.1 创建项目与导入数据
-
新建项目“学生用户画像标签构建”,在文件库新建目录“数智教育数据集”,从公共空间导出
3_kaoqin.csv、4_kaoqintype.csv、2_student_info.csv到该目录。 -
元数据中新建 MySQL 数据源连接“团队私有数据库”(使用助教提供的地址、账号、密码)。
-
建表并导入数据:
-
执行 SQL 创建
raw_attendance、raw_attendance_type、raw_student_info。 -
用“CSV文件输入” + “表输出”组件导入数据(注意考勤类型表分隔符为制表符,编码 GB2312;学生信息表需用“字段选择”固化 bf_zhusu 等字段)。
-
-
创建目标表
student_attendance_stats:
sql
CREATE TABLE IF NOT EXISTS student_attendance_stats (
id INT PRIMARY KEY AUTO_INCREMENT COMMENT '自增主键',
student_id INT NOT NULL,
student_name VARCHAR(50) NOT NULL,
class_id INT NOT NULL,
class_name VARCHAR(50) NOT NULL,
grade VARCHAR(10) NOT NULL,
gender VARCHAR(10) NOT NULL,
birth_date VARCHAR(10) NOT NULL,
political_status VARCHAR(20) NOT NULL,
is_boarder VARCHAR(10) NOT NULL,
campus_type VARCHAR(10) NOT NULL,
late_count INT NOT NULL DEFAULT 0,
early_leave_count INT NOT NULL DEFAULT 0,
leave_count INT NOT NULL DEFAULT 0,
uniform_violate_count INT NOT NULL DEFAULT 0,
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
INDEX idx_student (student_id),
INDEX idx_class (class_id),
INDEX idx_grade (grade)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
3.2 标签构建转换流
新建转换流“学生考勤主题标签”,按以下顺序配置组件:
-
数据接入:三个“表输入”分别读取
raw_attendance、raw_attendance_type、raw_student_info。 -
考勤记录关联考勤类型
-
对考勤记录添加“排序记录”,按
attendance_type_id、attendance_task_order_id排序。 -
用“记录集连接”(LEFT OUTER),连接字段为上述两字段,关联考勤类型表,补充
attendance_task_name等。
-
-
异常行为标记(JavaScript)
组件命名“提取异常考勤记录”,脚本如下:javascript
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 && attendance_task_name.includes("请假")){ isLeave = 1; } -
分组聚合
“分组”组件,分组字段:stu_id, stu_name, cla_id, cla_name;聚合:SUM(isLate) → late_count,SUM(isEarly) → early_leave_count,SUM(isLeave) → leave_count,SUM(isNoUniform) → uniform_violate_count。 -
关联学生信息
-
学生信息表按
stu_id排序。 -
考勤聚合结果按
stu_id排序。 -
“记录集连接”(LEFT OUTER)以
stu_id关联,补充性别、出生日期、政治面貌、是否住校。
-
-
字段选择
移除冗余字段,只保留:stu_id, stu_name, cla_id, cla_name, late_count, early_leave_count, leave_count, uniform_violate_count, stu_sex, born_date, policy, live_on_campus。 -
空值处理
“替换NULL值”组件,将stu_sex、born_date、policy、live_on_campus的空值替换为“未知”。 -
属性标准化
-
住校状态映射:值映射组件,
live_on_campus字段 0→否,1→是。 -
从班级名提取年级:JavaScript 组件“从班级提取年级”:
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='未知' } -
校区类型判定:JavaScript 组件“校区类型判定”:
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,勾选“裁剪表”,指定数据库字段映射。执行转换流,检查日志与表数据。
3.3 验证与查看
在元数据中加载 student_attendance_stats 元数据,进入数据探查页面查询数据,确认年级、校区、各项次数统计正确。
4 总结
通过 Uniplore 零代码平台,完成了考勤数据从原始表到标准化标签的全链路 ETL,固化了统计口径,输出的多维度标签表可直接支撑学生行为画像分析与报表展示。
#助睿数智 #商业数据分析 #ETL数据加工 #数据实验
更多推荐




所有评论(0)