ETL 实验复盘:从 CSV 到学生画像标签表的完整转换流

📅 2026/7/7 2:02:22 👁️ 阅读次数 📝 编程学习
ETL 实验复盘:从 CSV 到学生画像标签表的完整转换流
  1. 项目创建与数据准备

    • 新建项目“学生用户画像标签构建”。

    • 文件库中新建目录“数智教育数据集”,将公共空间中的3_kaoqin.csv4_kaoqintype.csv2_student_info.csv导出至该目录。

    • 元数据中新建 MySQL 数据源,连接名“团队私有数据库”,填写助教提供的主机地址、端口、数据库名、用户名密码,驱动选MySQL 8+,测试通过后添加。

  2. 原始数据表创建与导入

    • 分别执行以下建表 SQL(通过“执行一个SQL脚本”组件,选择“团队私有数据库”):

      • raw_attendance(原始考勤记录表)

      • raw_attendance_type(原始考勤类型表)

      • raw_student_info(原始学生信息表)

    • 导入数据:

      • 考勤记录CSV文件输入表输出。文件选3_kaoqin.csv,UTF-8,逗号分隔,输出至raw_attendance

      • 考勤类型CSV文件输入表输出。文件选4_kaoqintype.csv列分隔符为制表符(TAB),编码 GB2312,输出至raw_attendance_type

      • 学生信息CSV文件输入字段选择表输出。CSV 文件选2_student_info.csv,获取字段后将bf_leaveSchool类型改为String;在字段选择组件中将bf_zhusubf_qinshihao的元数据类型设置为Integer,输出至raw_student_info

  3. 目标标签表创建

    • 新建转换流,执行 SQL 创建student_attendance_stats表(包含学生基本信息、迟到/早退/请假/未穿校服次数等字段)。

  4. 核心标签计算转换流(新建转换流“学生考勤主题标签”)

    • 数据接入:三个表输入组件,分别读取raw_attendanceraw_attendance_typeraw_student_info全部字段。

    • 考勤记录与类型关联

      1. 考勤记录后接“排序记录”,按attendance_type_idattendance_task_order_id排序。

      2. 排序结果与“考勤类型”表输入通过“记录集连接”(LEFT OUTER)关联,连接字段同为上述两个字段。

    • 异常行为标记:添加 JavaScript 组件,编写脚本判断迟到、早退、请假、未穿校服,输出isLateisEarlyisLeaveisNoUniform(0/1)。

    • 按学生聚合:添加“分组”组件,分组字段stu_id, stu_name, cla_id, cla_name;聚合函数 SUM 分别计算迟到次数、早退次数、请假次数、未穿校服次数。

    • 关联学生信息

      1. 学生信息表输入后接“排序记录”(按stu_id)。

      2. 上一步聚合结果后接“排序记录”(按stu_id)。

      3. 二者通过“记录集连接”(LEFT OUTER)关联,连接字段stu_id

    • 字段筛选:用“字段选择”组件移除冗余字段,保留:stu_id, stu_name, cla_id, cla_name, late_count, early_count, leave_count, no_uniform_count, stu_sex, born_date, policy, live_on_campus

    • 空值处理:用“替换NULL值”组件将stu_sex, born_date, policy, live_on_campus的空值替换为“未知”。

    • 属性标准化

      • 值映射组件:将live_on_campus0映射为“否”,1映射为“是”,默认值“否”。

      • JavaScript 组件“从班级提取年级”:根据cla_name判断高一/高二/高三,输出字段gra_name

      • JavaScript 组件“校区类型判定”:班级名以“白-”或“东-”开头则为“新校区”,其他非空为“老校区”,输出字段class_campus_type

    • 结果入库:连接“表输出”组件,选择“团队私有数据库”,目标表student_attendance_stats,勾选“裁剪表”和“指定数据库字段”,建立字段映射。

  5. 执行与验证

    • 运行主转换流,观察日志直至成功。

    • 在元数据中刷新“团队私有数据库”,查询student_attendance_stats表,确认数据符合预期。