一、实验核心基础

1.1 实验目的

本次实验基于 “数智教育” 大赛数据集,完成学生考勤主题标签 ETL 转换流设计与实现。通过实验,我掌握了数据接入、关联、衍生、聚合、入库等完整 ETL 流程,理解了考勤数据从原始记录到标准化标签的处理思路。实验旨在解决传统人工考勤效率低、标准不一致、数据分散的问题,优化空值与异常处理方式,保证流程稳定、结果准确,为校园考勤管理与学生行为画像提供数据支持。

1.2 实验环境

操作工具:助睿零代码在线实验平台

平台访问地址:https://lab.guilian.cn/

本次实验使用助睿数智Uniplore平台,是AI驱动一站式数据科学平台,覆盖数据接入、ETL清洗、机器学习建模、数据可视化全链路零代码操作,适用于数据分析教学实训与企业数据加工场景,官方网站:https://www.uniplore.com/

实验数据源:数智教育大赛数据集,内含7张校园核心业务数据表

实验设备:可正常联网计算机,支持助睿ETL平台运行,具备MySQL数据库访问与连接权限     

1.3 实验范围

本次实验完整覆盖助睿 ETL 可视化流程搭建,包括多源数据接入、多表关联、标签衍生、维度聚合、结果入库。重点验证表关联准确性、统计逻辑正确性,并根据数据实际情况调整配置,确保流程稳定、结果合理。

1.4 转换流整体设计

1.4.1 功能用途与业务价值

我们这套ETL考勤数据转换流程可完全替代传统Excel人工考勤统计工作,来实现学生原始打卡明细数据到标准化考勤统计台账的自动化闭环处理,批量生成各类考勤分析指标。流程统一固化考勤统计标准,大幅提升校园考勤数据统计效率,沉淀长效学生考勤数据资产,同时流程具备极强拓展性,后期新增考勤类型、新增统计分析维度无需重构转换流程,可快速适配各类校园考勤管理业务需求。

1.4.2 核心处理逻辑

我们这个转换流的整体核心处理逻辑是:接入三大核心数据源→多表数据关联融合→智能标记各类考勤行为→量化计算考勤核心指标→补全学生基础属性信息→统计结果落地入库,全程依托助睿ETL平台可视化拖拽组件完成流程搭建,实现考勤数据全自动加工处理。

1.5 数据与标签梳理

1.5.1 源数据说明

首先来介绍一下我们源数据,方便我们理解后续实验操作

本次实验所用数智教育大赛数据集共计7张校园业务数据表,具体如下:

1_teacher.csv:教师信息表

2_student_info.csv:学生信息表

3_kaoqin.csv:考勤主表

4_kaoqintype.csv:考勤类型码表

5_chengji.csv:学生成绩信息表

6_exam_type.csv:考试类型表

7_consumption.csv:校园消费信息表

本次实验聚焦考勤分析主题,观察上面七个表,我们可以筛选出3张核心业务表来搭建事实表+维度表+属性表星型数据模型,支撑考勤标签构建,详情如下:

数据源表

核心作用

关键字段

考勤主表(3_kaoqin)

存储学生每日原始打卡记录、全量考勤行为明细数据

学生ID、班级ID、学期、打卡时间、考勤类型ID、考勤描述

考勤类型码表(4_kaoqintype)

标准化定义各类考勤事件名称,区分正常出勤与违规考勤行为

考勤类型ID、考勤事件标准名称

学生信息表(2_student_info)

存储学生基础身份属性,支撑多维度学生人群划分与画像分析

学生ID、班级ID、姓名、性别、出生日期、政治面貌、是否住校

1.5.2 标签字段说明

我们可以将学生考勤主题标签划分为三大类别,分别为学生基础属性标签、学生画像维度标签、考勤行为指标标签。

1.5.2.1 学生基础属性标签

主要用于学生身份唯一识别、人群划分与数据结果展示,数据主要取自学生信息表,考勤主表字段用于交叉校验。

标签字段

数据来源

选择依据

学生ID

考勤主表、学生信息表

学生唯一身份标识,用于数据关联与数据去重

学生姓名

考勤主表、学生信息表

方便数据结果查阅与人工核对

班级ID

考勤主表、学生信息表

班级唯一标识,用于班级维度考勤统计

班级名称

考勤主表、学生信息表

用于提取学生年级、划分所属校区

性别

学生信息表

可按照性别维度分析男女学生考勤行为差异

出生日期

学生信息表

提取出生年份,实现年龄维度考勤特征分析

政治面貌

学生信息表

区分不同政治面貌群体,开展差异化考勤分析

1.5.2.2 学生画像维度标签

原始数据集无对应字段,需通过字段解析、逻辑映射二次衍生生成,是校园分层考勤管理的核心分析维度。

标签字段

衍生逻辑

选择依据

年级

从班级名称字段中提取文字匹配

学校日常考勤管理以年级为单位开展,便于分层管控

是否住校

映射学生信息表住校编码字段

住校生与走读生作息不同,考勤行为存在明显差异,编码规则:1=是,0=否,空值=未知

校区类型

依据班级名称命名规则判断

结合校园校区建设背景,区分新旧校区学生,适配不同校区考勤管理规则

1.5.2.3 考勤行为统计标签

校园学生日常纪律管理核心统计指标,精准量化学生考勤违规行为。

标签字段

选择依据

迟到次数

衡量学生时间观念与校园纪律遵守情况,是学生行为规范核心指标

早退次数

考核学生课堂出勤完整性,规范校园日常作息秩序

请假次数

区分正常合理缺勤与无故违规缺勤,规范请假管理制度

没穿校服次数

落实校园仪容仪表管理要求,是校园日常行为规范重要考核维度

1.5.3 标签处理口径

统一所有标签数据处理与统计标准,保障全量数据统计结果准确、口径一致。

1.5.3.1 基础属性字段处理口径

  1. 学生ID、学生姓名、班级ID、班级名称:直接读取原始字段数据
  2. 性别、出生日期、政治面貌:读取学生信息表数据,存在空值统一替换为未知

1.5.3.2 衍生维度字段处理口径

  1. 年级:班级名称包含高一则判定为高一,包含高二判定为高二,包含高三判定为高三,其余统一标注未知
  2. 是否住校:字段数值为1标注是,数值为0标注否,无数据空值标注未知
  3. 校区类型:班级名称以白-、东-开头判定为新校区,其余班级统一判定为老校区

1.5.3.3 考勤行为指标统计口径

统计指标

统计逻辑

口径说明

迟到次数

统计含迟到、晚到关键词且排除请假的记录数

考勤名称出现迟到、晚到文字,剔除所有请假记录后统计条数

早退次数

统计含早退关键词且排除请假的记录数

考勤名称出现早退文字,剔除所有请假记录后统计条数

请假次数

全量统计含请假关键词所有记录

包含事假、病假、公假等所有类型请假数据,全部纳入统计

没穿校服次数

统计含校服关键词异常考勤记录

考勤信息中出现校服标识,统一判定为未穿戴校服违规行为

统计规则说明

      请假属于学生正常合规缺勤,不得计入迟到、早退等违规考勤统计,避免数据统计错误;所有带请假标识的考勤记录统一汇总统计;依据数据集规范,校服相关考勤记录固定代表学生未穿着校服,作为仪容仪表违规唯一判定依据。

   

二、实验步骤

2.1 创建实验项目

  1. 首先我们要登录助睿零代码实验平台,点击页面新建项目按钮

  1. 填写项目名称:学生用户画像标签构建,点击确定完成创建

  1. 项目创建完成后,在数据集成页面查看新建项目,进入项目编辑页面

2.2 数据资源获取

为方便后续数据处理,我们可以将平台公共数据集导入团队私有MySQL数据库中使用。

项目主页包含资源库、文件库、元数据三大功能模块

资源库:用于ETL工作流新建、编辑、调度管理

文件库:存储实验所需数据源与流程生成文件

元数据:配置数据库连接、运行集群等底层运行环境

2.2.1 获取实验数据集

  1. 点击文件库,右键根目录新建文件夹,命名为数智教育数据集

  1. 切换至平台公共空间,进入数据资源板块

  1. 依次将3_kaoqin.csv、4_kaoqintype.csv、2_student_info.csv三张核心数据表导出至新建文件夹内,完成本地实验数据源储备。

2.2.2 建立数据源连接

  1. 进入元数据页面,右键关系数据库,选择新建MySQL数据源

  1. 填写数据库连接配置:
  2. 服务器地址:rm-2vc3qok06bag39a5n.mysql.cn-chengdu.rds.aliyuncs.com
  3. 端口号:3306
  4. 数据库账号、密码、库名使用实训统一配置
  5. 驱动版本:MySQL 8+
  6. 连接名称:团队私有数据库

如图设置参数:

点击测试连接,提示连接成功后保存配置,完成数据库数据源搭建。

2.2.3 数据导入团队私有数据库

2.2.3.1 原始考勤记录表数据导入

  1. 新建转换工作流,命名为创建原始学生考勤表,拖拽执行SQL脚本组件,执行建表语句,完成raw_attendance原始考勤数据表创建。

在组件中填写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='原始_学生考勤表';

其他参数使用默认选项,完成后组件配置如下

执行转换流:

  1. 新建导入数据工作流,添加CSV文件输入组件,读取本地3_kaoqin.csv文件,设置编码为UTF-8,获取全部字段。

完成上述操作记得点击确认

  1. 搭配表输出组件,绑定团队私有数据库,将CSV文件数据批量写入raw_attendance数据表,运行流程完成数据入库。

拖拽一个“表输出”组件到画布

与考勤记录建立连接,选择主输出步骤

双击“表输出”组件,基本配置中,数据库连接选择“团队私有数据库”,目标表输入我们使用SQL组件创建的“raw_attendance”,具体配置如下:

点击“数据库字段”,在空白处右键“获取字段”

将表字段修改为建表语句中对应的字段,点击“确认”

执行转换流:

2.2.3.2 原始考勤类型表数据导入

参照考勤表导入流程,新建数据表创建工作流,执行对应建表SQL语句,创建raw_attendance_type考勤类型数据表。

其中的建表SQL为

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='原始_考勤类型表';

执行创建原始_考勤类型表转换流:

配置CSV读取组件,考勤类型表分隔符设置为TAB制表符,文件编码设置为GB2312,完成4_kaoqintype.csv数据批量入库。、

配置完成后我们执行转化流,就可得到如下结果:

2.2.3.3 原始学生基本信息表数据导入

执行建表语句创建raw_student_info学生信息数据表,读取2_student_info.csv数据源。

其中的建表SQL为:

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='原始_学生信息表';

执行创建原始_学生信息表转换流:

新建数据流,命名导入原始学生信息表,组件如下,自行创建:

各组件配置如下

使用“CSV文件输出”组件输入“2_student_info.csv”数据

获取字段时,需要将“bf_leaveSchool”的字段类型修改为“String”

CSV和字段选择之间为主输出步骤

双击“字段选择”组件,在配置窗口中,点击“元数据”,并在空白处插入2行,将“bf_zhusu”、“bf_qinshihao”字段的元数据设置如下:

使用“表输出”组件将“2_student_info.csv”数据输出到团队私有数据库的“raw_student_info”中

执行转换流:

使用字段选择组件规范整型字段格式,避免数据出现异常小数,最终通过表输出组件完成学生信息数据入库。

2.2.4 创建学生考勤主题标签表

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

完成后运行转换流

2.3 学生考勤主题标签构建

2.3.1 数据转换流整体逻辑

整体流程顺序:多表数据接入→数据排序预处理→多表左外关联→JS脚本行为标记→分组聚合统计→学生属性关联→冗余字段剔除→空值数据清洗→字段标准化映射→衍生画像字段→最终数据入库

平台常用组件功能说明:

组件名称

核心作用

表输入

读取私有数据库内原始业务数据表数据

排序记录

对数据流进行字段排序,保障多表关联精准性

记录集连接

按照关联字段实现多张数据表拼接融合

字段选择

剔除无关冗余字段,精简数据流结构

JavaScript脚本

自定义逻辑,实现标签判断、字段衍生

分组聚合

按照指定维度分组,求和统计考勤违规次数

替换NULL值

统一清洗数据表内空值数据

值映射

完成数字编码与文字含义相互转换

表输出

将最终统计结果写入目标结果数据表

2.3.2 多源数据接入

在ETL流程画布中拖拽3个表输入组件,分别绑定raw_attendance考勤表、raw_attendance_type考勤类型表、raw_student_info学生信息表,一键读取全量原始业务数据。(在编辑转换流时记得要解锁,up就容易忘记)

双击第一个表输入组件,在配置窗口中,步骤名称修改为“考勤记录”,数据库连接选择“团队私有数据库”,并点击“获取SQL查询语句”

在数据库中选择“raw_attendance”原始_学生考勤表

双击第一个表输入组件,在配置窗口中,步骤名称修改为“考勤记录”,数据库连接选择“团队私有数据库”,并点击“获取SQL查询语句”

在数据库中选择“raw_attendance”原始_学生考勤表

系统提示弹窗中点击“确认”,获取“raw_attendance”考勤记录表的所有字段

获取SQL查询语句后,点击“确认”

同样的,参考以上步骤,将“表输入 1”和“表输入 2”组件分别命名为“考勤类型”和“学生信息”,分别获取“raw_attendance_type”考原始_考勤类型表和“raw_student_info”原始_学生信息表所有字段数据

2.3.3 多表数据关联拼接

  1. 在考勤主表数据流后端添加排序组件,按照考勤类型ID完成数据升序排序。
  2. 使用记录集连接组件,以考勤类型ID为关联字段,左外连接考勤主表与考勤类型码表,补齐标准化考勤行为名称。
  3. 对学生信息数据流按照学生ID排序,再次使用记录集连接组件,以学生ID为关联主键,拼接考勤统计数据与学生基础信息,补全住校、性别等核心属性。

详细流程如下:

使用表输入组件读取考勤记录、考勤类型数据后,需通过记录集连接组件完成数据关联,补充关键业务信息,为后续指标计算奠定基础。

使用记录集连接组件,将考勤主表与考勤类型码表关联——因为考勤记录表只有考勤类型ID(attendance_type_id)和考勤任务顺序ID(control_task_order_id ),缺少具体的考勤行为名称,而通过记录集连接组件进行连接,即可为每条考勤记录补充“正常考勤”“没穿校服”“迟到”“请假”等具体行为信息,确保后续能准确识别各类考勤行为。具体操作如下:

组件库搜索“记录集连接”组件,并将组件拖拽至画布中

“考勤记录”CSV文件输入组件到记录集连接组件的连接线

建立连接线时,会出现“排序需要”的提示。这是由于记录集连接组件是按接收数据的顺序进行记录关联的,如果接收的数据是无序的,可能会造成记录连接结果出错。

避免因为排序问题造成连接结果出错。添加一个排序记录组件到转换流的“考勤记录”与“记录集连接”之间。

“排序记录”组件,通过“获取字段”功能获取字段列表,然后删除多余字段,只保留“attendance_type_id”、“attendance_task_order_id”字段。因为下一步连接是使用这两个字段进行连接,所以采用这两个字段对记录进行排序。最后设置步骤名称为“按照考勤类型和考勤任务类型排序”

考勤类型”表输入组件到记录集连接组件的连接线。由于“考勤类型”组件的记录默认是按“attendance_type_id”、“attendance_task_order_id”这两个字段升序记录的,所以无需再次排序

通过记录集连接组件来配置“考勤记录”和“考勤类型”两个表的关联关系。双击记录集连接组件,在下拉列表中选择需要连接的数据来源,第一个Transform选择“按照考勤类型和考勤任务类型排序”,第二个Transform选择“考勤类型”,连接类型选择LEFT OUTER

第一个Transform的连接字段中的“获得连接字段”按钮,即可获取考勤记录的字段

第二个Transform的连接字段

个Transform字段中仅保留“attendance_type_id”、“attendance_task_order_id”字段,这样做表示使用这2个字段进行记录连接。可以使用“删除选中的行”批量删除多个字段。

2.3.4 考勤行为标签智能判定

添加JavaScript脚本组件,编写关键词匹配逻辑,对每一条考勤记录进行自动判定,生成0、1二元标识字段,区分迟到、早退、请假、未穿校服四类考勤行为,为后续聚合统计提供计算依据。

双击“JavaScript代码”组件,命名为“提取异常考勤记录”,在Script1中输入JavaScript脚本

代码脚本如下:

使用“获取变量”获取输出字段,系统将自动解析脚本中变量定义代码,生成字段数据

双击“JavaScript脚本”组件的“测试脚本”按钮,确认标记字段(is_late_early、is_leave等)仅存在1和0两个值,标签判断准确(如迟到记录对应is_late_early=1,正常出勤对应is_compliant=1),无异常。

预览数据如下:

2.3.5 考勤数据分组聚合统计

添加分组聚合组件,以学生ID、姓名、班级为分组依据,对脚本生成的行为标识字段执行求和运算,自动统计出每位学生累计迟到次数、早退次数、请假次数、校服违规次数。

详细步骤如下:

实验核心:按两大统计维度聚合数据,将明细数据转化为统计指标,满足多层级考勤管理需求。具体操作如下:
在助睿ETL平台拖拽2个“分组”组件,分别对接“用户自定义Java表达式”组件的输出,按两大统计维度进行聚合,统一聚合指标,确保数据全覆盖:
聚合规则

  • 聚合函数:SUM(迟到标记)→ 迟到次数(late_count);
  • 聚合函数:SUM(早退标记)→ 早退次数(early_count);
  • 聚合函数:SUM(请假标记)→ 请假次数(leave_count);
  • 聚合函数:SUM(没穿校服标记)→ 没穿校服次数(no_uniform_count)

操作如下:

分组”组件,设置分组字段为“stu_id”、“stu_name”、“cla_id”、“cla_name”

置聚合字段为“late_early_count”、“leave_count”、“no_uniform_count”、“compliant_count”、“total_attendance”

关联学生信息

基于上述结果,使用记录集连接组件,关联学生信息表——因为考勤记录表仅包含学生ID和班级ID,缺少学生是否住校的核心属性,通过按学生ID关联学生信息表,可补全该属性,支撑住校相关维度的统计。具体操作如下:

由于“学生信息”数据表中的学号不是升序记录的,所以在进行记录关联前,也需要对数据进行排序。再次添加“排序记录”,并建立“学生信息”表输入组件到“排序记录”组件的连接线

双击“排序记录”组件,通过“获取字段”功能获取字段列表,然后删除多余字段,只保留“stu_id”字段。因为下一步连接是使用这个字段进行连接,所以采用这个字段对记录进行排序。最后设置步骤名称为“按照学生编号进行排序”

拖拽“记录集连接”组件至画布中,创建“按照学生编号进行排序”排序记录组件到“记录集连接 1”组件的连接线

考勤记录数据不是按“学号”升序记录的,所以在进行记录关联前,也需要对数据进行排序。再次添加“排序记录”,并建立“记录集连接”组件到“排序记录”组件的连接线

“排序记录”组件,按下图进行配置,步骤名称设置为“考勤数据按学号排序”,排序字段为“stu_id”

排序记录”组件,按下图进行配置,步骤名称设置为“考勤数据按学号排序”,排序字段为“stu_id”

建“考勤数据按学号排序”记录排序组件到记录集连接 1组件的连线,关联学生信息和考勤记录信息

记录集连接 1组件的第一个Transform选择“考勤数据按学号排序”,第二个Transform选择“按照学生编号进行排序”,连接类型选择LEFT OUTER

点击第一个Transform的连接字段中的“获得连接字段”按钮,即可获取考勤记录和考勤类型关联后的字段。同样的,获取第二个Transform的连接字段。第一个Transform字段保留“stu_id”,第二个Transform字段保留“stu_id”。连接类型选择LEFT OUTER,表示使用考勤记录的字段 stu_id与学生信息的字段 stu_id进行左外连接。

2.3.6 数据清洗与字段优化

  1. 字段筛选:使用字段选择组件删除无关冗余字段,仅保留实验所需统计字段与属性字段。

经过多表关联和前期接入,数据中会包含大量与考勤统计无关的字段(如学生信息表中的非必要属性),需要对关联后的数据进行冗余字段移除,因为这些冗余字段不仅会增加数据处理的负担,还可能导致后续聚合、计算出现干扰,只有移除冗余字段,保留核心有用字段,才能提升处理效率,确保统计逻辑清晰。具体操作如下:

搜索“字段选择”,拖拽至画布中,创建“记录集连接 1”组件到字段选择组件的连接线

在配置弹窗中,步骤名称输入“移除冗余字段”,点击“移除”Tab标签,右键空白处并点击“获取字段”

  1. 在获取的字段中,**删除以下核心字段外,其他字段保留,**为后续时间维度拆解和行为标签衍生奠定基础:
  • 学生 ID(stu_id)
  • 学生姓名(stu_name)
  • 班级 ID(cla_id)
  • 班级名称(cla_name)
  • 迟到次数(late_count);
  • 早退次数(early_count);
  • 请假次数(leave_count);
  • 没穿校服次数(no_uniform_count)
  • 性别(stu_sex)
  • 出生日期(born_date)
  • 政治面貌(policy)
  • 是否住校(live_on_campus

在字段选择组件鼠标右键弹出菜单,点击“显示输出字段”,查看输出字段是否正确

  1. 空值处理:启用替换空值组件,将性别、政治面貌、住校状态等空值数据统一替换为未知。

3个数据表关联后,字段“stu_sex”、“born_date”、“policy”、“live_on_campus”存在空值,需要对这么空值进行处理。
拖拽“替换NULL值”组件至画布,创建“移除冗余字段”字段选择组件到“替换NULL值”组件的连线,连线类型选择“主输出步骤”


双击“替换NULL值”组件,勾选“选择字段”双击插入的行,字段名称选择“stu_sex”, 继续插入行,将“born_date”、“policy”、“live_on_campus”的空值均替换为“未知”

  1. 编码映射:通过值映射组件,将住校状态0、1数字编码转换为通俗易懂的是、否文字格式。

因为我们要知道经过多表关联与字段筛选后,原始数据中住校状态为编码值,且缺少年级、校区类型等画像分析必需字段,无法直接用于学生考勤标签输出与后续用户画像分析。因此需要对学生基础属性进行标准化映射、缺失字段衍生,统一数据格式、补齐分析维度,保证标签表规范可用。

住校状态映射

原始住校状态以数字形式存储,可读性差且存在空值,通过映射转换为规范文本并处理空值,使标签表更直观,同时满足住校/走读考勤对比分析的需求。

添加“值映射”组件到画布中,并创建替换NULL值组件到值映射组件的连线,并选择“主输出步骤”

双击“值映射”组件,步骤名称改为“住校状态映射”,使用的字段名为“live_on_campus”,不匹配时的默认值为“否”, 在下方字段值表格空白处右键,点击“插入”, 双击插入的行,在源值中输入“0”,目标值输入“否”,代表将原数据中的“0”统一映射为“否”, 同样的,再插入一行,在源值中输入“1”,目标值输入“是”,并点击“确认”

2.3.7 衍生画像分析字段

  1. 新增JS脚本组件,解析班级名称文本内容,自动提取学生所属年级信息。

原始数据无独立年级字段,无法按年级做考勤统计与画像分群,通过从班级名称中提取年级信息,补齐年级维度,支撑年级层面的考勤分析。

拖拽“JavaScript代码”组件至画布中,创建住校状态映射组件到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='未知'

}

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

字段名称输入“gra_name”,类型为“String”,替换“字段名”或“重命名”值选择“否”,设置完成后点击“确认””

  1. 编写校区判定脚本,依据班级名称前缀规则,自动划分新校区、老校区,完善学生全维度考勤画像标签。

原始数据无校区类型字段,不同校区管理口径与考勤规则存在差异,通过班级名称规则判定老校区/新校区,增加校区分析维度,使考勤标签更贴合校园实际管理场景。

参考从班级名提取年级”步骤,添加“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='未知'

}

字段名称“class_campus_type”,类型为“String”,替换“字段名”或“重命名”值选择“否

2.3.8 最终数据入库落地

实验核心:将统计结果写入目标表,形成标准化台账,便于后续查询、分析和追溯。具体操作如下:

双击表输出组件,选择“团队私有数据库”连接;

勾选“裁剪表”,这样表输出组件在插入数据前会清空原始表数据,避免重复插入

勾选“指定数据库字段”,建立工作流字段与数据库表字段的映射关系。勾选后会激活“数据库字段”tab页,在数据库字段tab页,右键选择“获取字段”

双击表字段中的字段名称,在下拉框中选择正确的对应字段

执行工作流

直接执行

弹出执行配置窗口中,选择默认配置,然后点击“启动”按钮,启动工作流

查看日志,工作流执行后会打开日志页面,定期刷新工作流日志数据

打开“元数据”tab页,在“团队私有数据库”连接上右键选择“加载元数据”

然后进入数据探查页面,展开“团队私有数据库”

双击目标表“student_attendance_stats”,在右侧页面选择“查询”tab标签

三、实验结果

本次实验按指导文档完成全流程搭建与执行,流程运行正常,无报错,数据完整、逻辑一致。

1.流程执行:所有组件运行成功,数据从原始表正确流转至结果表,无丢失、无异常。

2.数据质量:学生基础信息完整,年级、校区衍生标签正确,迟到、早退、请假、校服违规次数统计合理,口径一致。

3.目标达成:成功构建学生考勤主题标签,实现考勤数据自动化、标准化处理,满足校园管理与画像分析需求。

四、问题与解决

4.1 问题一:数据库连接失败

问题现象:在配置 MySQL 数据库连接的过程中,反复点击测试连接,系统始终提示连接不成功,没办法正常访问实训所用的数据库,实验无法继续推进。

问题原因:经过逐一检查,主要有两方面问题,一是数据库的账号、密码存在输入错误;二是配置页面填写的数据库名称,和实际拥有操作权限的库名不匹配,最终导致身份验证和权限校验失败。

解决方法:认真核对并重新输入正确的数据库账号和密码,同时对照实训要求,修改数据库名称保证与授权库名一致,完成修改后再次测试,成功建立数据库连接。

4.2 问题二:多人共用数据库导致实验互相干扰

问题现象:小组多名同学同时在实训环境中开展实验,因为大家使用了相同的数据表名,引发了数据冲突,不仅会出现流程运行报错的情况,还会出现彼此的数据被覆盖的问题,严重影响实验进度。

问题原因:团队成员在操作前没有做好资源区分,直接使用默认名称创建数据表,没有实现个人操作环境的隔离,造成多人同时操作同一数据对象。

解决方法

团队成员协商后,每个人使用专属的数据表名称,从源头避免命名重复;

使用DROP TABLE语句删除之前创建的重复、错误数据表,清理实验环境;

后续所有操作都使用个人自定义的表名,确保数据环境独立,不再出现相互干扰的情况。

五、实验总结

5.1 实验收获

通过这次实验,我不仅掌握了助睿平台 ETL 转换流的搭建流程,更对数据接入 - 清洗 - 关联 - 聚合 - 落地的完整链路有了清晰的认识。

  • 我学会了如何用可视化组件完成多表关联、字段衍生和空值处理,理解了星型数据模型在考勤标签构建中的作用;
  • 我也对 “统一统计口径” 有了更深的体会:同样的考勤记录,统计规则不同,结果会差很多,只有先把口径定义清楚,后面的聚合统计才有意义;
  • 另外,在解决数据库连接和多人数据冲突问题的过程中,我意识到了 “数据隔离” 和 “配置校验” 的重要性,这些细节直接影响实验的成败。

整体来说,这次实验让我从跟着步骤做,慢慢过渡到理解每一步为什么要这么做,对数据处理的逻辑和规范有了更扎实的理解。

5.2 对平台的整体评价

助睿平台作为零代码 ETL 工具,上手门槛不高,可视化拖拽的方式让整个数据处理流程变得直观易懂,很适合教学和实训场景。

  • 优点:组件功能比较齐全,从数据接入、SQL 执行到脚本处理、数据输出都能覆盖,不用写复杂代码就能完成大部分数据加工任务,对初学者很友好;
  • 不足:在使用过程中,平台的网页访问稳定性有待提升,数据库连接的配置提示不够详细,对初次接触的同学来说,排查连接问题会比较耗时;
  • 整体来看,平台能够很好地支撑本次考勤标签构建的实验需求,是一个很不错的教学实训工具,只要熟悉了操作流程,就能高效完成数据处理任务。

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

Logo

一站式 AI 云服务平台

更多推荐