前言

本文基于“数智教育”大赛数据集,使用助睿ETL平台完成学生考勤主题标签构建实验。实验涵盖数据接入、多表关联、标签衍生、维度聚合、结果落地等ETL全流程,输出可复用的学生考勤统计结果表。本文转自知乎本人账号,为本人原创!!

实验环境:助睿零代码实验平台(https://lab.guilian.cn/

数据源:数智教育数据集

一、实验说明

1.1 实验目的

基于“数智教育”大赛数据集,设计并实现学生多维度考勤统计助睿ETL转换流,掌握ETL数据处理全流程(数据接入、关联、衍生、聚合、落地),解决校园考勤人工统计效率低、口径不统一的问题;同时结合实验实际数据情况,优化空值处理逻辑,确保转换流可正常运行,输出精准的多维度考勤统计结果,为校园考勤管理提供数据支撑。

1.2 实验环境

工具:助睿零代码在线实验平台(https://lab.guilian.cn/)。本次实验使用助睿数智(Uniplore)是AI驱动的一站式数据科学平台。该平台覆盖从数据接入、ETL处理、机器学习建模到可视化展示的全链路零代码功能,适用于数据分析教学与企业数据加工场景。产品官网为https://www.uniplore.com/

数据源:“数智教育”大赛数据集

二、转换流整体设计

2.1 功能用途与业务价值

本转换流替代人工Excel统计,实现考勤数据从原始打卡到标准化结果的闭环处理,批量输出多维度指标;同时固化口径、提升效率、沉淀台账,提供数据支撑,且可灵活扩展新考勤类型,无需修改转换流,适配校园考勤管理的核心需求。

2.2 核心处理逻辑

转换流核心逻辑:接入三大数据源,多表关联,标记考勤行为,计算核心指标,基础属性关联,落地统计结果,实现全流程自动化,通过助睿ETL平台可视化界面完成配置。

三、数据与标签梳理

3.1 源数据说明

本次实验使用数智教育数据集中的3张表:

考勤主表(3_kaoqin):记录学生每日考勤行为。关键字段:学生ID、班级ID、打卡时间、考勤类型ID、考勤描述。

考勤类型码表(4_kaoqintype):定义考勤事件名称。关键字段:考勤类型ID、考勤事件名称。

学生信息表(2_student_info):提供学生基础属性。关键字段:学生ID、姓名、性别、班级ID、是否住校。

3.2 标签字段说明

学生基础属性标签:学生ID、姓名、班级ID、班级名称、性别、出生日期、政治面貌。

学生画像维度标签:年级(从班级名称提取)、是否住校(bf_zhusu映射:1为是,0为否)、校区类型(班级名以“白-”或“东-”开头为新校区,其他为老校区)。

考勤行为统计标签:迟到次数、早退次数、请假次数、没穿校服次数。

3.3 标签处理口径

迟到次数:考勤事件名称包含“迟到”或“晚到”,且排除请假记录。

早退次数:考勤事件名称包含“早退”,且排除请假记录。

请假次数:考勤事件名称包含“请假”的所有记录。

没穿校服次数:考勤事件名称包含“校服”的记录。

基础属性字段:性别、出生日期、政治面貌、是否住校空值统一替换为“未知”。

四、实验步骤

4.1 创建实验项目

点击“新建项目”,输入项目名称“学生用户画像标签构建”,点击“确定”。创建成功后即可在数据集成页面看到新创建的项目。

4.2 数据资源获取

项目创建成功后点击该项目右上角的“...”,点击“打开项目”。

4.2.1 获取实验数据集

首先获取本次的实验数据集:点击“文件库”,右键根目录,点击“新建目录”,输入目录名称为“数智教育数据集”,点击“确定”。

接下来我们将公共空间的数据资源导入到这个目录下。点击公共空间,点击“数据资源”。

点击“3_kaoqin.csv”卡片右上角的“更多”,并点击“导出”。在弹出的窗口中选择导出到刚刚新创建的目录下,点击“确定”。

接下来重复以上导出操作,将本次实验用到的数据表4_kaoqintype.csv和2_student_info.csv都导出到“数智教育数据集”。

4.2.2 建立数据源连接

在元数据tab页,关系数据库右键打开菜单,选择“新建数据源”。

弹出新建数据库连接窗口,连接类型选择“MySQL”,用户名和密码使用助教提供的账号和密码。服务器主机名使用助教提供的数据库连接地址,端口号为3306,数据库名为助教提供的数据库名称,驱动类型选择“MySQL 8+”,连接名称为“团队私有数据库”。

填写完毕后,点击“测试”按钮验证填写信息是否正确,如果填写无误,会返回“数据库连接成功”。

最后,点击“添加”增加了一个数据库连接。添加成功后,关系数据库节点会增加一个子节点。

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

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

(1)创建原始_学生考勤表

新建转换工作流,并命名为“创建原始_学生考勤表”,在该工作流中拖拽“执行一个SQL脚本”组件,通过执行SQL脚本来创建一个标签表,其他参数使用默认选项。

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

完成后运行转换流,运行过程会定时刷新组件状态,并在画布下面显示执行日志。

(2)导入原始考勤数据

新建转换工作流,并命名为“导入原始考勤数据”,在该工作流中拖拽一个“CSV文件输入”组件到画布。

双击CSV文件输入组件,在步骤名称中输入“考勤记录”。点击文件名后的“浏览文件”按钮,在弹出的窗口中选择“3_kaoqin.csv”,点击“确定”。

列分隔符和封闭符使用默认参数,编码选择“UTF-8”。下滑在字段表格中空白处右键点击“获取字段”,字段获取成功后点击“确认”。

接下来拖拽一个“表输出”组件到画布,并创建“考勤记录”CSV文件输入组件到“表输出”组件的连线,连线类型选择“主输出步骤”。

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

点击“数据库字段”,在空白处右键“获取字段”,将表字段修改为建表语句中对应的字段,点击“确认”。

完成后运行转换流,运行过程会定时刷新组件状态,并在画布下面显示执行日志。

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

参照“4.2.3.1 原始考勤记录表数据导入”小节的实验操作,完成原始考勤类型表“4_kaoqintype.csv”数据导入到团队私有数据库。

其中的建表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.2.3.1 原始考勤记录表数据导入”小节的一样。

配置完成后执行转换流,运行过程会定时刷新组件状态,并在画布下面显示执行日志。

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

参照“4.2.3.1 原始考勤记录表数据导入”小节的实验操作,完成原始学习基本信息表“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”。

特别说明:bf_zhusu、bf_qinshihao这2个字段是Integer,为避免出现小数,需要使用“字段选择”组件来固化并规范。

拖拽“字段选择”组件到画布中,创建“CSV文件输入”组件到“字段选择”组件的连线,连接线类型选择“主输出步骤”。

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

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

执行转换流。

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

新建转换工作流,并命名为“创建学生考勤主题标签表”,在该工作流中拖拽“执行一个SQL脚本”组件,通过执行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='学生考勤主题标签表';

其他参数使用默认选项,完成后运行转换流,运行过程会定时刷新组件状态,并在画布下面显示执行日志。

4.3 学生考勤主题标签构建

4.3.1数据接入:获取考勤记录、考勤类型数据、学生信息数据

首先,我们需要获取考勤记录、考勤类型数据、学生信息数据。考勤记录表记录了每位学生每天的考勤行为,考勤类型表定义了每种考勤行为对应的类型名称(如正常考勤、没穿校服等),学生信息表提供了学生是否住校的核心属性。只有将这三份数据分别接入并后续关联起来,才能完整判断学生的每次考勤是正常还是违纪,同时支撑住校相关维度的统计。

切换到资源库,同样右键根目录,点击“新建转换流”。输入转换流名字“学生考勤主题标签”,点击“确定”。创建成功后进入转换流设计页面。转换流设计页面每次打开都是锁定状态,需要解锁后才可编辑转换流,点击解锁图标进行解锁。点击“组件库”,搜索“表输入”,拖拽3个表输入组件至画布中。

双击第一个表输入组件,在配置窗口中,步骤名称修改为“考勤记录”,数据库连接选择“团队私有数据库”,并点击“获取SQL查询语句”。在数据库中选择“raw_attendance”原始_学生考勤表。系统提示弹窗中点击“确认”,获取“raw_attendance”考勤记录表的所有字段。获取SQL查询语句后,点击“确认”。

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

4.3.2 数据关联:关联考勤记录加考勤类型

使用表输入组件读取考勤记录、考勤类型数据后,需通过记录集连接组件完成数据关联,补充关键业务信息,为后续指标计算奠定基础。使用记录集连接组件,将考勤主表与考勤类型码表关联——因为考勤记录表只有考勤类型ID(attendance_type_id)和考勤任务顺序ID(control_task_order_id),缺少具体的考勤行为名称,而通过记录集连接组件进行连接,即可为每条考勤记录补充“正常考勤”“没穿校服”“迟到”“请假”等具体行为信息,确保后续能准确识别各类考勤行为。由于记录集连接组件是按接收数据的顺序进行记录关联的,如果接收的数据是无序的,可能会造成记录连接结果出错。

为避免因为排序问题造成连接结果出错,再添加一个“排序记录”组件到转换流。将“考勤类型”和排序记录和记录集连接依次连接起来。

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

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

“attendance_type_id”、“attendance_task_order_id”字段,这样做表示使用这2个字段进行记录连接。可以使用“删除选中的行”批量删除多个字段。删除完多余字段后,点击“确认”,若删除错误,可重新获取连接字段再进行删除。

4.3.3 行为标签衍生:统计学生异常考勤次数

通过JavaScript脚本生成考勤行为二进制标记,为后续聚合统计提供支撑,确保标签判断精准。添加“JavaScript代码”组件,对接“记录集连接”组件的输出,通过关键词匹配,生成二进制判断标签(1代表是,0代表否),用于后续指标聚合。

双击“JavaScript代码”组件,在Script1中输入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){
if(attendance_task_name.includes("请假")){
isLeave = 1;
    }
}

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

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

4.3.4 多维度分组聚合统计

聚合规则: 聚合函数SUM(迟到标记)对应迟到次数(late_count)。 聚合函数SUM(早退标记)对应早退次数(early_count)。 聚合函数SUM(请假标记)对应请假次数(leave_count)。 聚合函数SUM(没穿校服标记)对应没穿校服次数(no_uniform_count)。

添加“分组”组件,并建立连接线,连线选择“主输出步骤”。

双击“分组”组件,设置分组字段为

“stu_id”、“stu_name”、“cla_id”、“cla_name”。设置聚合字段为“late_count”、“leave_count”、“no_uniform_count”、“compliant_count”、“total_attendance”。

4.3.5 关联学生信息

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

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

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

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

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

双击“排序记录”组件,步骤名称设置为“考勤数据按学号排序”,排序字段为“stu_id”。

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

记录集连接1组件的第一个Transform选择“考勤数据按学号排序”,第二个Transform选择“按照学生编号进行排序”,连接类型选择LEFT OUTER。分别获取两个Transform的连接字段。两个Transform字段只保留“stu_id”。点击“确认”,若删除错误,可重新获取连接字段再进行删除。

4.3.6 字段选择:移除冗余字段

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

搜索“字段选择”,拖拽至画布中,创建“记录集连接 1”组件到字段选择组件的连接线。双击字段选择组件,在配置弹窗中,点击“移除”Tab标签,右键空白处并点击“获取字段”。在获取的字段中,删除以下核心字段外,其他字段保留,为后续时间维度拆解和行为标签衍生奠定基础:

学生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)

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

4.3.7 空值处理

3个数据表关联后,字段

“stu_sex”、“born_date”、“policy”、“live_on_campus”存在空值,需要对这些空值进行处理。拖拽“替换NULL值”组件至画布,创建“移除冗余字段”字段选择组件到“替换NULL值”组件的连线,连线类型选择“主输出步骤”。在字段空白表格中右键,点击“插入”。双击插入的行,字段名称选择“stu_sex”。

继续插入行,将“born_date”、“policy”、“live_on_campus”的空值均替换为“未知”(此处图略)。

4.3.8 学生基础属性标准化处理

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

4.3.8.1 住校状态映射

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

添加“值映射”组件到画布中,并创建替换NULL值组件到值映射组件的连线,并选择“主输出步骤”。双击“值映射”组件,步骤名称改为“住校状态映射”,使用的字段名为“live_on_campus”,不匹配时的默认值为“否”。在下方字段值表格空白处右键,点击“插入”。双击插入的行,在源值中输入“0”,目标值输入“否”,代表将原数据中的“0”统一映射为“否”。同样的,再插入一行,在源值中输入“1”,目标值输入“是”,并点击“确认”。

4.3.8.2 从班级名提取年级

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

拖拽“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",替换"字段名"或"重命名"值选择"否",设置完成后点击"确认"。

4.3.8.3 校区类型判定

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

参考"4.3.8.2 从班级名提取年级"步骤,添加"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",替换"字段名"或"重命名"值选择"否"。

4.3.9 结果入库

将统计结果写入目标表,形成标准化台账,便于后续查询、分析和追溯。

具体操作如下:

添加表输出组件,并创建"校区类型判定"JavaScript代码组件到表输出组件的连线。双击表输出组件,选择"团队私有数据库"连接。勾选"裁剪表",这样表输出组件在插入数据前会清空原始表数据,避免重复插入。勾选"指定数据库字段",建立工作流字段与数据库表字段的映射关系。

勾选"指定数据库字段"后会激活"数据库字段"tab页,在数据库字段tab页,右键选择"获取字段"。双击表字段中的字段名称,在下拉框中选择正确的对应字段。

4.3.10 执行工作流

执行转换流,点击工具栏中的"执行"按钮。在弹出执行配置窗口中,选择默认配置,然后点击"启动"按钮,启动工作流。查看日志,工作流执行后会打开日志页面,定期刷新工作流日志数据。

查看数据库结果:打开"元数据"tab页,在"团队私有数据库"连接上右键选择"加载元数据"。然后进入数据探查页面,展开"团队私有数据库"。双击目标表"student_attendance_stats",在右侧页面选择"查询"tab标签。查看数据库表数据是否符合预期。

五、实验心得

1. 数据预处理要点

学生信息表存在空值,需使用"替换NULL值"组件统一处理。考勤类型码表编码为GB2312,考勤主表为UTF-8,CSV文件输入组件需分别配置编码参数。

2. 关联操作注意事项

记录集连接组件要求输入数据按关联字段排序。实验中使用attendance_type_id、control_task_order_id、stu_id等字段进行关联,需在连接前添加排序记录组件。

3. 统计口径定义

迟到次数统计需排除请假记录;校服违规通过考勤事件名称包含"校服"关键词识别。口径规则需在转换流中保持一致。

4. 平台使用体验

助睿ETL通过可视化组件完成常规ETL任务,适合快速搭建原型。复杂逻辑需借助JavaScript脚本或Java表达式组件补充。

六、总结

本次实验以"数智教育"大赛数据集为基础,借助助睿ETL平台,从零完成了一套学生考勤主题标签的构建流程。我们先后将考勤主表、考勤类型码表和学生信息表导入MySQL数据库,通过记录集连接组件实现多表关联,补充了考勤事件名称与学生基础属性;随后利用JavaScript脚本对考勤行为进行关键词匹配,生成迟到、早退、请假、校服违规等二进制标签,再经分组聚合按学生维度汇总各项考勤指标;在此基础上,完成了住校状态映射、年级提取、校区类型判定等属性标准化加工,最终将结果写入student_attendance_stats表,形成可复用的标准化台账。整个实验覆盖了ETL从数据接入到结果落地的全流程,验证了助睿平台在校园考勤数据处理场景中的可行性,也让我们对ETL流程设计有了更直观的实践经验。

Logo

一站式 AI 云服务平台

更多推荐