学生多维度考勤统计 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 创建项目与导入数据

  1. 新建项目“学生用户画像标签构建”,在文件库新建目录“数智教育数据集”,从公共空间导出 3_kaoqin.csv4_kaoqintype.csv2_student_info.csv 到该目录。

  2. 元数据中新建 MySQL 数据源连接“团队私有数据库”(使用助教提供的地址、账号、密码)。

  3. 建表并导入数据:

    • 执行 SQL 创建 raw_attendanceraw_attendance_typeraw_student_info

    • 用“CSV文件输入” + “表输出”组件导入数据(注意考勤类型表分隔符为制表符,编码 GB2312;学生信息表需用“字段选择”固化 bf_zhusu 等字段)。

  4. 创建目标表 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 标签构建转换流

新建转换流“学生考勤主题标签”,按以下顺序配置组件:

  1. 数据接入:三个“表输入”分别读取 raw_attendanceraw_attendance_typeraw_student_info

  2. 考勤记录关联考勤类型

    • 对考勤记录添加“排序记录”,按 attendance_type_idattendance_task_order_id 排序。

    • 用“记录集连接”(LEFT OUTER),连接字段为上述两字段,关联考勤类型表,补充 attendance_task_name 等。

  3. 异常行为标记(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;
    }
  4. 分组聚合
    “分组”组件,分组字段: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。

  5. 关联学生信息

    • 学生信息表按 stu_id 排序。

    • 考勤聚合结果按 stu_id 排序。

    • “记录集连接”(LEFT OUTER)以 stu_id 关联,补充性别、出生日期、政治面貌、是否住校。

  6. 字段选择
    移除冗余字段,只保留: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。

  7. 空值处理
    “替换NULL值”组件,将 stu_sexborn_datepolicylive_on_campus 的空值替换为“未知”。

  8. 属性标准化

    • 住校状态映射:值映射组件,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='未知'
      }
  9. 结果入库
    表输出组件,连接 student_attendance_stats,勾选“裁剪表”,指定数据库字段映射。执行转换流,检查日志与表数据。

3.3 验证与查看

在元数据中加载 student_attendance_stats 元数据,进入数据探查页面查询数据,确认年级、校区、各项次数统计正确。

4 总结

通过 Uniplore 零代码平台,完成了考勤数据从原始表到标准化标签的全链路 ETL,固化了统计口径,输出的多维度标签表可直接支撑学生行为画像分析与报表展示。

#助睿数智 #商业数据分析 #ETL数据加工 #数据实验

Logo

一站式 AI 云服务平台

更多推荐