目录

一、实验前期准备(必看!不踩坑)

二、详细实验步骤(一步一图,跟着做就对了)

Step1:创建实验项目(基础第一步)

Step2:获取数据资源(关键一步,别漏表!)

2.1 新建数据集目录

2.2 建立数据源连接

2.3 导入数据到私有数据库(3张表依次操作)

Step3:创建学生考勤主题标签表(存放最终结果)

Step4:构建考勤主题标签(实验核心!)

4.1 数据接入:导入3张核心表数据

4.2 数据关联:绑定考勤记录与考勤类型

4.3 行为标签衍生:标记异常考勤

4.4 多维度聚合统计:计算异常考勤次数

4.5 关联学生信息:补全学生属性

4.6 优化处理:移除冗余+空值+属性标准化

4.7 结果入库+执行工作流

三、实验避坑汇总(新手必看!)

四、实验总结


宝子们!数智教育大赛相关实验来啦✨ 今天手把手教大家用助睿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和脚本,评论区扣“考勤实验”,直接发你!

Logo

一站式 AI 云服务平台

更多推荐