学生用户画像-考勤主题标签构建

学生用户画像-考勤主题标签构建 1 实验说明1.1 实验目的基于“数智教育”大赛数据集设计并实现学生多维度考勤统计助睿ETL转换流掌握ETL数据处理全流程数据接入、关联、衍生、聚合、落地解决校园考勤人工统计效率低、口径不统一的问题同时结合实验实际数据情况优化空值处理逻辑确保转换流可正常运行输出精准的多维度考勤统计结果为校园考勤管理提供数据支撑。1.2 实验环境工具 助容零代码在线实验平台https://lab.guilian.cn/本次实验使用助睿数智Uniplore是AI驱动的一站式数据科学平台。该平台覆盖从数据接入、ETL处理、机器学习建模到可视化展示的全链路零代码功能适用于数据分析教学与企业数据加工场景。产品官网为https://www.uniplore.com/数据源“数智教育”大赛数据集共包含7张核心业务表实验设备计算机支持助睿ETL平台运行具备数据库连接权限1.3 实验范围本次实验覆盖助睿ETL转换流全流程配置包括多表数据接入、多表关联、考勤行为标签衍生、多维度聚合统计及结果落地入库重点验证数据关联的精准性及统计指标的准确性结合实验数据实际情况优化配置确保实验顺利完成。2 转换流整体设计2.1 功能用途与业务价值本转换流替代人工Excel统计实现考勤数据从原始打卡到标准化结果的闭环处理批量输出多维度指标同时固化口径、提升效率、沉淀台账提供数据支撑且可灵活扩展新考勤类型无需修改转换流适配校园考勤管理的核心需求。2.2 核心处理逻辑转换流核心逻辑接入三大数据源→多表关联→标记考勤行为→计算核心指标→基础属性关联→落地统计结果实现全流程自动化通过助睿ETL平台可视化界面完成配置。3 数据与标签梳理根据转换流的逻辑需要对数据与标签进行梳理确定数据源、标签维度、标签计算口径3.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消费信息本次实验聚焦“考勤主题”分析以上7张数据表可以发现与考勤行为直接相关且能支撑多维度分析的表为以下3张表3_kaoqin.csv考勤主表核心事实表记录每次考勤行为4_kaoqintype.csv考勤类型码表提供考勤行为的标准化名称是行为标签生成的关键2_student_info.csv学生信息提供学生基础属性住校、性别等支撑维度拆分这三张表形成了“事实表 维度表 属性表”的完整星型模型结构各表核心作用及关键字段如下数据源表核心作用关键字段考勤主表3_kaoqin存储学生每日原始打卡记录、考勤行为明细学生ID、班级ID、学期qj_term、打卡时间DataDateTime、考勤类型IDControllerID、考勤描述controler_name考勤类型码表4_kaoqintype标准化考勤事件名称区分正常与异常考勤类型考勤类型IDcontroller_id、考勤事件名称control_task_name学生信息表2_student_info提供学生基础属性支撑多维度学生画像学生IDbf_StudentID、班级IDcla_id、学生姓名bf_Name、性别bf_sex、出生日期bf_BornDate、政治面貌bf_policy、是否住校bf_zhusu3.2 标签字段说明学生考勤主题标签可分为三类学生基础属性标签、学生画像维度标签和考勤行为指标标签3.2.1 学生基础属性标签标签字段数据来源选择依据学生ID考勤主表/学生信息表学生唯一标识用于关联和去重学生姓名考勤主表/学生信息表便于结果查阅和人工核对班级ID考勤主表/学生信息表班级唯一标识用于班级维度统计班级名称考勤主表/学生信息表班级名称用于提取年级和校区类型性别学生信息表学生性别可按性别维度分析考勤行为差异出生日期学生信息表学生出生年份可用于年龄维度分析识别不同年龄段的考勤特点政治面貌学生信息表学生政治面貌可按政治面貌维度分析不同群体的考勤行为选表依据这些字段是学生的基础身份信息主要从学生信息表2_student_info获取。考勤主表中也包含部分学生信息可作为交叉验证。这些基础属性是后续分维度统计的核心依据。示例用途可按性别分析男生与女生的迟到考勤差异异可按政治面貌分析不同群体的考勤行为特点。3.2.2 学生画像维度标签标签字段衍生逻辑选择依据年级从班级名称cla_name中提取学校管理通常按年级统计考勤情况便于分层管理是否住校映射学生信息表bf_zhusu字段住校生与走读生的考勤行为模式不同便于针对性管理 观察数据可以发现1→“是”0→“否”空值→“未知”校区类型从班级名称cla_name中判断数据说明中提到2017年启用新校区新校区统一命名为型为“白-高二01”和“东-高二01”的班级名选表依据这三个标签字段属于衍生维度原始数据中没有直接提供需要根据班级名称和住校字段进行二次加工。年级维度有助于学校按年级进行考勤管理和对比分析住校维度用于区分住校生和走读生两者的考勤行为模式存在差异校区类型维度源于数据说明中提到的2017-2018年新校区启用情况不同校区的管理规则可能不同。示例用途可按住校状态分析走读生是否更容易迟到可按校区类型对比新旧校区的校服穿戴规范执行情况。3.2.3 考勤行为统计标签标签字段选择依据迟到次数学生行为规范的核心指标之一早退次数学生行为规范的核心指标之一请假次数区分正常缺勤与异常缺勤没穿校服次数学校日常行为规范的重要维度选表依据这四类异常考勤行为是学校日常学生管理的核心关注点。迟到和早退反映学生的时间管理能力和纪律意识请假次数可用于区分正常缺勤与异常缺勤校服穿戴是学校行为规范的重要考核项。根据数据说明中的描述“校服[移动考勤]”特指未穿校服的情况。示例用途可分析学生不同异常考勤次数判断考勤风险等级。3.3 标签处理口径所有标签口径统一固化确保统计结果准确可比具体如下3.3.1 基础属性字段处理口径字段处理方式口径说明学生ID直接读取从考勤主表获取学生姓名直接读取从考勤主表获取班级ID直接读取从考勤主表获取班级名称直接读取从考勤主表获取性别空值替换从学生信息表获取空值替换为“未知”出生日期空值替换从学生信息表获取空值替换为“未知”政治面貌空值替换从学生信息表获取空值替换为“未知”3.3.2 衍生维度字段处理口径字段处理方式口径说明年级从class_name提取包含“高一”→高一包含“高二”→高二包含“高三”→高三其他→未知是否住校映射空值替换bf_zhusu1→“是”bf_zhusu0→“否”空值→“未知”校区类型从class_name判断以“白-”或“东-”开头→新校区其他→老校区3.3.3 考勤行为指标统计口径指标统计逻辑口径说明迟到次数COUNT迟到/晚到 AND 非请假考勤事件名称controler_name /control_task_name包含 “迟到”“晚到” 关键词且排除请假的记录条数早退次数COUNT早退 AND 非请假考勤事件名称controler_name /control_task_name包含 “早退” 关键词且排除请假的记录条数请假次数COUNT包含请假考勤事件名称control_task_name包含“请假”关键词的所有记录总条数含事假、病假等各类请假没穿校服次数COUNT包含校服考勤事件名称controler_name包含“校服”的异常情况记录条数统计口径设计理由排除请假记录请假属于正常缺勤不应计入迟到或早退的违规统计避免重复计数和误判。请假全覆盖只要考勤事件名称中包含“请假”关键词无论事假、病假或其他类型均计入请假次数。校服违规唯一识别根据数据说明中的描述考勤类型中的“校服[移动考勤]”明确指未穿校服因此包含“校服”关键词的记录即为违规。4 实验步骤4.1 创建实验项目点击“新建项目”输入项目名称“学生用户画像标签构建”点击“确定”创建成功后即可在数据集成页面看到新创建的项目4.2 数据资源获取为方便后续的数据使用我们可以将原始数据导入我们的团队私有数据库项目创建成功后点击该项目右上角“…”点击“打开项目”在项目页面可以看到左侧有3个菜单资源库、文件、元数据资源库用于对工作流的管理包括新建、删除、修改、查看工作流的信息导出导入工作空间调度管理等操作文件库用于保存工作流中需要用到的文件和工作流产生的文件元数据管理是助睿ETL的重要基石可以为工作流定义“运行配置”、“数据库”、“flink集群”等配置4.2.1 获取实验数据集首先获取本次的实验数据集点击“文件库”右键根目录点击“新建目录”输入目录名称为“数智教育数据集”点击“确定”接下来我们将公共空间的数据资源导入到这个目录下点击公共空间点击“数据资源”点击“3_kaoqin.csv”卡片右上角的“更多”并点击“导出”在弹出的窗口中选择导出到刚刚新创建的目录下点击“确定”可以看到在数智教育数据集的目录下新增了3_kaoqin.csv接下来重复以上导出操作将本次实验用到的数据表 4_kaoqintype.csv 和 2_student_info.csv 都导出到“数智教育数据集”4.2.2 建立数据源连接在元数据tab页关系数据库右键打开菜单选择“新建数据源”弹出新建数据库连接窗口连接类型选择“MySQL”用户名和密码使用助教提供的账号和密码。服务器主机名使用助教提供的数据库连接地址“rm-2vc3qok06bag39a5n.mysql.cn-chengdu.rds.aliyuncs.com”端口号为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”具体配置如下620×494 25.9 KB点击“数据库字段”在空白处右键“获取字段”将表字段修改为建表语句中对应的字段点击“确认”完成后运行转换流运行过程会定时刷新组件状态并画布下面显示执行日志。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.2 原始学生基本信息表数据导入参照“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”字段的元数据设置如下使用“表输出”组件将“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) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT学生考勤主题标签表;其他参数使用默认选项完成后组件配置如下完成后运行转换流运行过程会定时刷新组件状态并画布下面显示执行日志。4.3 学生考勤主题标签构建4.3.1 数据转换流逻辑说明转换流遵循“数据接入—清洗整合—维度拆解—标签标记—指标计算—结果落地”的核心逻辑数据接入接入考勤原始打卡表、考勤类型码表、学生信息基础表数据整合多表关联给原始打卡记录绑定学生班级、住校属性、考勤事件名称标签标记通过考勤事件名称自动识别迟到、早退、请假、未穿校服等行为指标计算按日核算在校时长按多维度聚合统计各类异常次数结果落地统一写入考勤统计结果表供报表、查询、分析直接使用整体逻辑各组件作用组件作用表输入读取数据库中的原始数据表排序记录按照指定字段对数据进行排序为记录集连接做准备记录集连接按关联字段连接两表补充考勤行为名称或学生属性字段选择移除冗余字段保留核心必要字段JavaScript脚本执行脚本通过关键词匹配提取异常考勤记录生成二进制标记分组按指定维度分组使用SUM函数聚合统计各类异常次数替换NULL值将空值字段替换为“未知”值映射将住校状态编码0/1映射为“否”/“是”表输出输出最终结果到数据库目标表4.3.2 数据接入获取考勤记录、考勤类型数据、学生信息数据首先我们需要获取考勤记录、考勤类型数据、学生信息数据。考勤记录表记录了每位学生每天的考勤行为考勤类型表定义了每种考勤行为对应的类型名称如正常考勤、没穿校服等学生信息表提供了学生是否住校的核心属性。只有将这三份数据分别接入并后续关联起来才能完整判断学生的每次考勤是正常还是违纪同时支撑住校相关维度的统计。切换到资源库同样右键根目录点击“新建转换流”输入转换流名字“学生考勤主题标签”点击“确定”创建成功后进入转换流设计页面转换流设计页面每次打开都是锁定状态需要解锁后才可编辑转换流点击图标进行解锁点击“组件库”搜索“表输入”拖拽3个表输入组件至画布中双击第一个表输入组件在配置窗口中步骤名称修改为“考勤记录”数据库连接选择“团队私有数据库”并点击“获取SQL查询语句”在数据库中选择“raw_attendance”原始_学生考勤表系统提示弹窗中点击“确认”获取“raw_attendance”考勤记录表的所有字段获取SQL查询语句后点击“确认”同样的参考以上步骤将“表输入 1”和“表输入 2”组件分别命名为“考勤类型”和“学生信息”分别获取“raw_attendance_type”考原始_考勤类型表和“raw_student_info”原始_学生信息表所有字段数据4.3.3 数据关联关联考勤记录考勤类型使用表输入组件读取考勤记录、考勤类型数据后需通过记录集连接组件完成数据关联补充关键业务信息为后续指标计算奠定基础。使用记录集连接组件将考勤主表与考勤类型码表关联——因为考勤记录表只有考勤类型IDattendance_type_id和考勤任务顺序IDcontrol_task_order_id 缺少具体的考勤行为名称而通过记录集连接组件进行连接即可为每条考勤记录补充“正常考勤”“没穿校服”“迟到”“请假”等具体行为信息确保后续能准确识别各类考勤行为。具体操作如下在组件库搜索“记录集连接”组件并将组件拖拽至画布中创建“考勤记录”CSV文件输入组件到记录集连接组件的连接线在建立连接线时会出现“排序需要”的提示。这是由于记录集连接组件是按接收数据的顺序进行记录关联的如果接收的数据是无序的可能会造成记录连接结果出错。为避免因为排序问题造成连接结果出错。添加一个排序记录组件到转换流的“考勤记录”与“记录集连接”之间。双击“排序记录”组件通过“获取字段”功能获取字段列表然后删除多余字段只保留“attendance_type_id”、“attendance_task_order_id”字段。因为下一步连接是使用这两个字段进行连接所以采用这两个字段对记录进行排序。最后设置步骤名称为“按照考勤类型和考勤任务类型排序”创建“考勤类型”表输入组件到记录集连接组件的连接线。由于“考勤类型”组件的记录默认是按“attendance_type_id”、“attendance_task_order_id”这两个字段升序记录的所以无需再次排序。需要通过记录集连接组件来配置“考勤记录”和“考勤类型”两个表的关联关系。双击记录集连接组件在下拉列表中选择需要连接的数据来源第一个Transform选择“按照考勤类型和考勤任务类型排序”第二个Transform选择“考勤类型”连接类型选择LEFT OUTER点击第一个Transform的连接字段中的“获得连接字段”按钮即可获取考勤记录的字段获取第二个Transform的连接字段2个Transform字段中仅保留“attendance_type_id”、“attendance_task_order_id”字段这样做表示使用这2个字段进行记录连接。可以使用“删除选中的行”批量删除多个字段。删除完多余字段后点击“确认”若删除错误可重新获取连接字段再进行删除4.3.4 行为标签衍生统计学生异常考勤次数通过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_early1正常出勤对应is_compliant1无异常。4.3.5 多维度分组聚合统计实验核心按两大统计维度聚合数据将明细数据转化为统计指标满足多层级考勤管理需求。具体操作如下在助睿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”4.3.6 关联学生信息基于上述结果使用记录集连接组件关联学生信息表——因为考勤记录表仅包含学生ID和班级ID缺少学生是否住校的核心属性通过按学生ID关联学生信息表可补全该属性支撑住校相关维度的统计。具体操作如下由于“学生信息”数据表中的学号不是升序记录的所以在进行记录关联前也需要对数据进行排序。再次添加“排序记录”并建立“学生信息”表输入组件到“排序记录”组件的连接线双击“排序记录”组件通过“获取字段”功能获取字段列表然后删除多余字段只保留“stu_id”字段。因为下一步连接是使用这个字段进行连接所以采用这个字段对记录进行排序。最后设置步骤名称为“按照学生编号进行排序”拖拽“记录集连接”组件至画布中创建“按照学生编号进行排序”排序记录组件到“记录集连接 1”组件的连接线由于考勤记录数据不是按“学号”升序记录的所以在进行记录关联前也需要对数据进行排序。再次添加“排序记录”并建立“记录集连接”组件到“排序记录”组件的连接线双击“排序记录”组件按下图进行配置步骤名称设置为“考勤数据按学号排序”排序字段为“stu_id”创建“考勤数据按学号排序”记录排序组件到记录集连接 1组件的连线关联学生信息和考勤记录信息记录集连接 1组件的第一个Transform选择“考勤数据按学号排序”第二个Transform选择“按照学生编号进行排序”连接类型选择LEFT OUTER点击第一个Transform的连接字段中的“获得连接字段”按钮即可获取考勤记录和考勤类型关联后的字段。同样的获取第二个Transform的连接字段。第一个Transform字段保留“stu_id”第二个Transform字段保留“stu_id”。连接类型选择LEFT OUTER表示使用考勤记录的字段 stu_id与学生信息的字段 stu_id进行左外连接。点击“确认”若删除错误可重新获取连接字段再进行删除4.3.7 字段选择移除冗余字段经过多表关联和前期接入数据中会包含大量与考勤统计无关的字段如学生信息表中的非必要属性需要对关联后的数据进行冗余字段移除因为这些冗余字段不仅会增加数据处理的负担还可能导致后续聚合、计算出现干扰只有移除冗余字段保留核心有用字段才能提升处理效率确保统计逻辑清晰。具体操作如下搜索“字段选择”拖拽至画布中创建“记录集连接 1”组件到字段选择组件的连接线​​​​​​​双击字段选择组件在配置弹窗中步骤名称输入“移除冗余字段”点击“移除”Tab标签右键空白处并点击“获取字段”​​​​​​​在获取的字段中**删除以下核心字段外其他字段保留**为后续时间维度拆解和行为标签衍生奠定基础学生 IDstu_id学生姓名stu_name班级 IDcla_id班级名称cla_name迟到次数late_count早退次数early_count请假次数leave_count没穿校服次数no_uniform_count性别stu_sex出生日期born_date政治面貌policy是否住校live_on_campus在字段选择组件鼠标右键弹出菜单点击“显示输出字段”查看输出字段是否正确​​​​​​​4.3.8 空值处理3个数据表关联后字段“stu_sex”、“born_date”、“policy”、“live_on_campus”存在空值需要对这么空值进行处理。拖拽“替换NULL值”组件至画布创建“移除冗余字段”字段选择组件到“替换NULL值”组件的连线连线类型选择“主输出步骤”双击“替换NULL值”组件勾选“选择字段”在字段空白表格中右键。点击“插入”双击插入的行字段名称选择“stu_sex”继续插入行将“born_date”、“policy”、“live_on_campus”的空值均替换为“未知”4.3.9 学生基础属性标准化处理经过多表关联与字段筛选后原始数据中住校状态为编码值且缺少年级、校区类型等画像分析必需字段无法直接用于学生考勤标签输出与后续用户画像分析。因此需要对学生基础属性进行标准化映射、缺失字段衍生统一数据格式、补齐分析维度保证标签表规范可用。4.3.9.1 住校状态映射原始住校状态以数字形式存储可读性差且存在空值通过映射转换为规范文本并处理空值使标签表更直观同时满足住校/走读考勤对比分析的需求。添加“值映射”组件到画布中并创建替换NULL值组件到值映射组件的连线并选择“主输出步骤”双击“值映射”组件步骤名称改为“住校状态映射”使用的字段名为“live_on_campus”不匹配时的默认值为“否”在下方字段值表格空白处右键点击“插入”双击插入的行在源值中输入“0”目标值输入“否”代表将原数据中的“0”统一映射为“否”同样的再插入一行在源值中输入“1”目标值输入“是”并点击“确认”4.3.9.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.9.3 校区类型判定原始数据无校区类型字段不同校区管理口径与考勤规则存在差异通过班级名称规则判定老校区/新校区增加校区分析维度使考勤标签更贴合校园实际管理场景。参考“4.3.9.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.10 结果入库实验核心将统计结果写入目标表形成标准化台账便于后续查询、分析和追溯。具体操作如下添加表输出组件并创建“校区类型判定”“JavaScript代码组件到表输出组件的连线双击表输出组件选择“团队私有数据库”连接勾选“裁剪表”这样表输出组件在插入数据前会清空原始表数据避免重复插入勾选“指定数据库字段”建立工作流字段与数据库表字段的映射关系。勾选后会激活“数据库字段”tab页在数据库字段tab页右键选择“获取字段”双击表字段中的字段名称在下拉框中选择正确的对应字段4.3.11 执行工作流执行转换流点击工具栏中的“执行”按钮在弹出执行配置窗口中选择默认配置然后点击“启动”按钮启动工作流查看日志工作流执行后会打开日志页面定期刷新工作流日志数据。查看数据库结果打开“元数据”tab页在“团队私有数据库”连接上右键选择“加载元数据”然后进入数据探查页面展开“团队私有数据库”双击目标表“student_attendance_stats”在右侧页面选择“查询”tab标签查看数据库表数据是否符合预期