1 实验目的
本实验基于全班同学在多平台发布的作品互动数据,使用助睿ETL完成数据清洗与预处理,输出两张核心数据表,为后续特征工程与可视化分析奠定基础。
通过本实验,学生应掌握:
- 理解数据清洗在数据分析流程中的基础性与必要性
- 使用助睿ETL完成多源数据的过滤、填充、聚合等预处理操作
- 掌握“分支处理”的设计思路:全平台概况统计与重点平台深度分析分流
- 输出两张规范数据表,支撑仪表盘不同模块的数据需求
2 实验环境
- 实验平台:助睿在线实验平台 https://lab.guilian.cn/
本次实验使用助睿数智(Uniplore) 作为一站式数据科学平台。该平台覆盖从数据接入、ETL处理、机器学习建模到可视化展示的全链路零代码功能,适用于数据分析教学与企业数据加工场景。
助睿数智官网为 https://www.uniplore.com//
- 数据处理工具:助睿ETL(数据集成平台)
助睿ETL核心优势:
- 全元数据驱动架构:平台内所有对象类型均通过元数据标准化定义,覆盖数据读取、处理、写入的全流程
- 零代码拖拽式操作:通过可视化方式完成数据的抽取(Extract)、转换(Transform)、加载(Load),无需编写复杂代码
- 丰富的预处理组件:内置筛选、填充、聚合、连接、字段选择等多种转换节点,灵活应对各类数据清洗场景
- Pipeline(转换)机制:面向数据流通处理的核心功能单元,由多个不同功能的Transform步骤组合构成,聚焦数据本身的加工转换操作
- 开源内核高可用引擎:基于开源内核的高可用引擎架构,通过标准化插件体系可灵活扩展引擎能力
3 核心设计思路
3.1 为什么需要数据清洗?
采集到的原始数据往往不能直接用于分析,需要先做清洗。
观察自媒体作品数据明细.csv这份数据,可以发现几个问题:
- 平台冗余:数据包含了B站、CSDN、微信、知乎、小红书等多个平台,但微信、知乎等平台的浏览数量几乎全是0。这些平台虽然有作品记录,但缺乏核心的浏览数据,无法支撑有意义的分析。
- 无效记录:部分作品的浏览数量、点赞数量、收藏数量全部为0。这些记录可能是采集失败,也可能是作品确实无人问津,但无论如何,它们对分析没有贡献。
- 字段缺失:点赞、收藏、分享等字段中存在空值,如果不处理,后续计算会报错。
数据清洗要做的,就是把这些问题逐一解决。
3.2 数据处理流程
本次实验有一个特殊之处:后续可视化仪表盘需要同时展示两类信息。
第一类是“全平台概况”——全班总共发了多少内容?覆盖了几个平台?总浏览和总互动是多少?这些数字需要基于所有平台的原始数据来统计,哪怕浏览数为0也要计入作品数。
第二类是“重点平台深度分析”——B站和CSDN的具体表现如何?播放量、阅读量、互动率是多少?这些分析只需要B站和CSDN的有效数据(浏览数大于0的记录)。
两类信息对数据的要求不同,所以在ETL中需要做分支处理:
两张表各司其职:summary_all_platforms只用于仪表盘顶部的全平台概况指标卡;cleaned_details作为中间结果,交给下一实验继续加工。
4 实验步骤
步骤1:创建目标表
在助睿ETL中创建两张目标表。
第一张是全平台概况表(summary_all_platforms),用于存放所有平台的汇总数据。字段设计如下:
| 字段 | 类型 | 说明 |
|---|---|---|
| crawl_date | DATE | 采集日期 |
| platform | VARCHAR(20) | 平台名称 |
| content_count | INT | 作品数量 |
| total_views | INT | 总浏览数 |
| total_likes | INT | 总点赞数 |
| total_favorites | INT | 总收藏数 |
| total_shares | INT | 总分享数 |
| total_coins | INT | 总投币数(仅B站) |
| total_recommend | INT | 总推荐数(仅微信) |
| total_likes_zhihu | INT | 总喜欢数(仅知乎) |
| total_approvals | INT | 总赞同数(仅知乎) |
新建转换流
拖入执行一个sql脚本组件
选择数据源,插入建表语句
DROPTABLEIFEXISTSsummary_all_platforms;CREATETABLEIFNOTEXISTSsummary_all_platforms(idINTAUTO_INCREMENTPRIMARYKEYCOMMENT'自增主键ID',crawl_dateDATENOTNULLCOMMENT'采集日期',platformVARCHAR(20)NOTNULLCOMMENT'平台名称',content_countINTCOMMENT'作品数量',total_viewsINTCOMMENT'总浏览数',total_likesINTCOMMENT'总点赞数',total_favoritesINTCOMMENT'总收藏数',total_sharesINTCOMMENT'总分享数',total_coinsINTCOMMENT'总投币数(仅B站)',total_recommendINTCOMMENT'总推荐数(仅微信)',total_likes_zhihuINTCOMMENT'总喜欢数(仅知乎)',total_approvalsINTCOMMENT'总赞同数(仅知乎)')ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COMMENT='全平台概况汇总表';执行并查看日志
这张表不做任何过滤,保留所有平台的原始数据。各平台特色指标(B站的投币、微信的推荐、知乎的喜欢/赞同)单独保留列,不合并到通用指标中。因为B站的投币和知乎的赞同含义不同,加在一起反而说不清楚,让它们各自独立,读者能清晰地看到每个平台有哪些互动行为。
第二张是内容分析表(content_analysis),作为实验二的输入。字段与原始数据基本一致,但只包含B站和CSDN的有效记录:
| 字段 | 类型 | 说明 |
|---|---|---|
| date | DATE | 采集日期 |
| author_name | VARCHAR(100) | 作者昵称 |
| title | VARCHAR(500) | 作品标题 |
| platform | VARCHAR(20) | B站 / CSDN |
| likes | INT | 点赞数 |
| favorites | INT | 收藏数 |
| shares | INT | 分享数 |
| coins | INT | 投币数(仅B站) |
| views | INT | 播放量/阅读量 |
| url | VARCHAR(500) | 作品链接 |
| total_interaction | INT | 互动总数 |
| has_best | TINYINT(1) | 是否含“保姆级” |
| has_lowcode | TINYINT(1) | 是否含“零代码” |
| has_practice | TINYINT(1) | 是否含“实战” |
| has_tutorial | TINYINT(1) | 是否含“教程/指南” |
| has_pit | TINYINT(1) | 是否含“踩坑” |
其中 interaction_rate, has_best, has_lowcode, has_practice, has_tutorial, has_pit 字段的数据加工将在下一个实验中完成。
新建转换流:
同样拖入执行一个sql脚本组件
连接数据源,插入sql语句:
DROPTABLEIFEXISTScontent_analysis;CREATETABLEIFNOTEXISTScontent_analysis(idINTAUTO_INCREMENTPRIMARYKEYCOMMENT'自增主键ID',dateDATENOTNULLCOMMENT'采集日期',author_nameVARCHAR(100)COMMENT'作者昵称',titleVARCHAR(500)NOTNULLCOMMENT'作品标题',platformVARCHAR(20)NOTNULLCOMMENT'B站 / CSDN',likesINTCOMMENT'点赞数',favoritesINTCOMMENT'收藏数',sharesINTCOMMENT'分享数',coinsINTCOMMENT'投币数(仅B站)',viewsINTCOMMENT'播放量/阅读量',urlVARCHAR(500)COMMENT'作品链接',total_interactionINTCOMMENT'互动总数',has_bestTINYINT(1)COMMENT'是否含“保姆级” 0否1是',has_lowcodeTINYINT(1)COMMENT'是否含“零代码” 0否1是',has_practiceTINYINT(1)COMMENT'是否含“实战” 0否1是',has_tutorialTINYINT(1)COMMENT'是否含“教程/指南” 0否1是',has_pitTINYINT(1)COMMENT'是否含“踩坑” 0否1是')ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COMMENT='内容分析明细表(实验二输入,仅B站、CSDN有效数据)';执行转换流并查看日志:
步骤2:导入原始数据
将已提供在助睿ETL公共空间的自媒体作品数据明细.csv导入到自己的文件库中,作为数据源输入。助睿ETL支持多种数据源接入,CSV文件可直接导入。
本次分析使用的数据来源于助睿ETL公共空间的
自媒体作品数据明细.csv,已采集了同学们在6月8日-6月15日前提交的作品互动数据。需要说明的是,该数据集仅覆盖采集时间节点前已发布且未被删除的作品,之后新提交或已删除的作品不在此次分析范围内。导入前请先将该文件从公共空间复制到自己的文件库中。
步骤3:全平台聚合统计
在数据清洗之前,先做一个分支。拖入“排序记录”、“分组”组件,按日期和平台排序、分组,其余数值字段全部取求和。输出summary_all_platforms
新建转换流:拖入csv文件输入
配置如下:
拖入排序记录组件:
获取字段,并保留需要分组的字段:
拖入分组组件:
获取字段后,保留需要进行分组的字段
删除作者名字、url、source_file、title字段后其余字段全部求和:
拖入表输出组件:
选择目标表:
勾选:
编辑
获取字段:
步骤4:过滤记录
在另一个分支中,使用“过滤记录”组件筛选B站和CSDN的有效记录:
只保留 B站 和 CSDN 两个平台,原始数据包含B站、CSDN、微信、知乎、小红书等多个平台。由于微信、知乎等平台的浏览数量大量缺失(值为0),无法支撑有意义的分析,因此只保留 B站 和 CSDN 的记录。
(2)删除两个平台中浏览量为0的记录,聚焦于真正产生用户互动的作品。
使用助睿ETL的“过滤记录”组件,通过AND与OR组合条件:
(平台 = 'B站' AND 浏览数量 > 0 ) OR (平台 = 'CSDN' AND 浏览数量 > 0)在“过滤记录”组件中对应的配置如图:
逻辑说明:括号内的条件组合确保“平台”与“有效记录判定”同时满足,一个组件完成双重过滤。助睿ETL的过滤记录组件支持编写复杂条件表达式,可通过 AND、OR 灵活组合多条件,一步到位完成精细化数据筛选。
步骤5:填充缺失值
由于数值字段没有空值,但作者名称和作品标题可能存在空值,我们统一填充为位置,避免后续使用时出现异常。
步骤6:字段选择
原始数据中的source_file是采集批次标记,分析阶段用不到,剔除掉。投币数量(coins)保留,作为B站特有的互动指标。用“字段选择”组件,只保留以下字段,其他字段全部剔除:
date, author_name, title, platform, likes, favorites, shares, coins, views, url
步骤7:输出清洗后中间表
将处理后的数据输出为cleaned_details,这张表是实验7-2的输入。
步骤8:执行转换流
完整转换流如下,点击运行
数据探查结果:
5 核心知识点总结
- 多条件过滤:使用 AND/OR 组合平台过滤与有效记录判定,一个组件完成双重过滤
- 缺失值处理:统一填充默认值,避免计算异常
- 多日期保留:保留时间维度用于趋势分析,暂不做去重
- 助睿ETL Pipeline:通过多个Transform步骤组合完成完整的数据加工流程
wWI3-1782204942129)]
[外链图片转存中…(img-Jd1SAiBt-1782204942130)]
5 核心知识点总结
本实验基于清洗后的内容数据,构建了一套完整的特征工程ETL管道。核心任务分为两层:在明细层,通过计算器与JavaScript脚本提取了互动总指标及5个标题关键词特征,并利用“插入/更新”机制无损回填至content_analysis表;在汇总层,设计了多分支并行计算流程,分别统计了整体均值与关键词均值,最终合并输出至title_feature_analysis表,为后续量化分析标题策略的效果奠定了数据基石。