1 实验目的

在实验7-1 清洗后的数据的基础上,使用助睿ETL完成以下两类特征的计算与存储:

(1)标题特征与互动总数(更新明细表)

  • 计算互动总数(total_interaction = likes + favorites + shares + coins

  • 提取5个标题特征标志字段(has_besthas_lowcodehas_practicehas_tutorialhas_pit

  • 将计算结果更新到 content_analysis 表

(2)关键词级别的汇总数据

  • 分别计算含每个关键词的作品的平均互动总数

  • 将互动汇总结果输出到 title_feature_analysis 表

通过本实验,学生应掌握:

  • 理解特征工程在数据分析中的核心作用

  • 使用助睿ETL的“计算器”组件计算衍生指标

  • 使用“JavaScript代码”组件完成文本关键词的自动标注

  • 使用“插入/更新”组件回填数据,不新建表、不覆盖已有基础数据

  • 使用“过滤+聚合”组件组合完成分组统计计算

2 实验环境

  • 实验平台:

本次实验使用助睿数智(Uniplore) 作为一站式数据科学平台。该平台覆盖从数据接入、ETL处理、机器学习建模到可视化展示的全链路零代码功能,适用于数据分析教学与企业数据加工场景。

  • 数据处理工具:助睿ETL(数据集成平台)

助睿ETL核心优势:

  • 全元数据驱动架构:平台内所有对象类型均通过元数据标准化定义,覆盖数据读取、处理、写入的全流程

  • 零代码拖拽式操作:通过可视化方式完成数据的抽取(Extract)、转换(Transform)、加载(Load),无需编写复杂代码

  • 丰富的预处理组件:内置筛选、填充、聚合、连接、字段选择等多种转换节点,灵活应对各类数据清洗场景

  • Pipeline(转换)机制:面向数据流通处理的核心功能单元,由多个不同功能的Transform步骤组合构成,聚焦数据本身的加工转换操作

  • 开源内核高可用引擎:基于开源内核的高可用引擎架构,通过标准化插件体系可灵活扩展引擎能力

本次实验使用的核心组件:

组件 用途
表输入 读取 content_analysis 表中待处理的数据
计算器 计算互动总数(likes + favorites + shares + coins
JavaScript代码 提取标题中的5个关键词特征标志
插入/更新 按 id 匹配,更新 content_analysis 表中的特征字段
过滤记录 + 聚合 分别统计整体平均值和每个关键词的平均值
增加常量 为每个关键词分支添加名称标识
合并记录 将5个关键词的统计结果合并为5行
表输出 将互动数据汇总写入 title_feature_analysis 表

3 核心设计思路

本次实验构建两类特征,并将数据更新到实验7-1 的content_analysis 表中:

  • 互动总数:likes + favorites + shares + coins,反映作品的用户互动规模(绝对值)

  • 标题特征:把标题中是否包含特定关键词提取为0/1标志字段,后续量化对比这些词的实际效果

数据处理流程:

4 实验步骤

4.1 更新 content_analysis 表(标题特征+互动总数)

步骤1:导入数据

将实验7-1输出的 content_analysis表作为输入,拖入助睿ETL工作区。助睿ETL支持跨项目引用数据集,可直接选择实验一输出的结果表。

步骤2:提取标题特征(核心分析维度)

在"JavaScript代码"组件中,可以直接使用JJavaScript代码对 title 字段进行关键词匹配,生成5个标题特征标志字段。

var title = title;  // 字段名直接作为变量使用

// 判断关键词
var has_best = title.indexOf("保姆级") !== -1 ? 1 : 0;
var has_lowcode = title.indexOf("零代码") !== -1 ? 1 : 0;
var has_practice = title.indexOf("实战") !== -1 ? 1 : 0;
var has_tutorial = (title.indexOf("教程") !== -1 || title.indexOf("指南") !== -1) ? 1 : 0;
var has_pit = title.indexOf("踩坑") !== -1 ? 1 : 0;

// 将结果赋值给新字段(输出字段需在字段表中提前定义)
has_best = has_best;
has_lowcode = has_lowcode;
has_practice = has_practice;
has_tutorial = has_tutorial;
has_pit = has_pit;

返回值说明:

字段 返回值 条件
has_best 1 / 0 title中含"保姆级"为1,否则为0
has_lowcode 1 / 0 title中含"零代码"为1,否则为0
has_practice 1 / 0 title中含"实战"为1,否则为0
has_tutorial 1 / 0 title中含"教程"或"指南"为1,否则为0
has_pit 1 / 0 title中含"踩坑"为1,否则为0

设计思路:这五个关键词在数据中高频出现,且与“教学价值”“实操性”强相关,是分析标题影响力的理想切入点。每个特征独立提取,便于在BI中做分组对比。

步骤3:计算互动总数

接入“计算器”组件,新增 interactions 字段:interactions = likes + favorites + shares + coins

步骤4:数据更新

使用“插入/更新”组件,将计算好的特征数据回填到 content_analysis 表

关键配置:

配置项 设置
目标表 content_analysis
查询关键字 id(匹配依据)
更新字段 total_interaction, has_best, has_lowcode, has_practice, has_tutorial, has_pit

字段映射::

流字段 表字段
id id
interactions total_interaction
has_best has_best
has_lowcode has_lowcode
has_practice has_practice
has_tutorial has_tutorial
has_pit has_pit

“插入/更新” vs “表输出”的区别:如果使用“表输出”,每次运行都会新增行,导致数据重复。“插入/更新”按 id 匹配,如果 id 已存在则更新指定字段,如果不存在才插入新行(本例中 id 一定存在,所以只做更新,不新增行)。这样本实验可以反复运行,不会产生重复数据。

步骤5:执行转换流

完整转换流如下,点击运行

数据结果:

4.2 输出关键词级别的汇总

步骤1:创建目标表

在助睿ETL中创建以下目标表用来存储本节最后输出的数据:

字段 类型 说明
id INT 自增主键
platform VARCHAR(20) 平台(B站/CSDN)
feature_name VARCHAR(50) 关键词名称
avg_interaction DECIMAL(10,2) 含该关键词的平均互动总数
overall_avg DECIMAL(10,2) 该平台整体平均互动总数
sample_count INT 含该关键词的作品数
步骤2:计算整体平均互动数

接入“排序记录”、“分组”组件,按id升序排序,不设分组条件,直接计算 AVG(total_interaction),得到 overall_avg

聚合完成后,接入“增加常量”组件,新增字段 feature_name = '保姆级',为这一行数据贴上名称标签,以便用于后续与关键词数据连接。

步骤3:计算关键词的平均互动数

以“保姆级”为例,表输入组件复制分发另一条分支,先接“过滤记录”组件,设置 has_best = 1,只保留含“保姆级”的作品。

然后接入“排序记录”、“分组”组件,按id升序排序,计算 AVG(total_interaction) 得到 avg_interactionCOUNT(id) 得到 sample_count

聚合完成后,接入“增加常量”组件,新增字段 feature_name = '保姆级',为这一行数据贴上名称标签。

为什么要加这个常量?因为聚合后的数据只有数值,没有关键词名称。如果不加,5个分支的数据合并后无法区分谁是谁。常量就是给每一行贴上一个“标签”,告诉下游“这一行是保姆级的数据”。

步骤4:合并整体平均值和关键词平均值

接下来将整体平均值和关键词平均值进行合并,使用“记录集连接”组件,匹配字段为feature_name,由于2个分支都只有1行数据,所以无需排序。

步骤5:数据入库

用”表输出”组件将合并后的数据入库,这里需要注意:不勾选“裁剪表”,因为还有其他关键词数据也要入库,不用删除已有数据。

步骤6:执行转换流

一个关键词的互动汇总数据加工转换流如下,点击运行:

查看数据:

接下来加工其他关键词的数据:

复制粘贴整个分支,然后只修改两处:过滤条件(如 has_lowcode = 1)和常量值(如 零代码)。其他组件配置完全相同。

最后的完整数据情况如下:

5 实验输出

输出表 数据粒度 用途
content_analysis(更新) 作品级 排名、趋势、概况等明细分析
title_feature_analysis(新建) 关键词级 标题特征互动分析

6 实验总结和收获

6.1 实验总结

本次实验在实验7-1数据清洗的基础上,围绕自媒体作品特征构建这一核心目标,完成了两项主要工作:一是在作品明细层面计算了互动总数(total_interaction)并提取了5个标题关键词特征标志字段,通过"插入/更新"组件将结果回填至 content_analysis 表;二是在关键词汇总层面,针对每个关键词分别统计了含该关键词作品的平均互动总数、整体平均互动总数和样本数量,将汇总结果写入 title_feature_analysis 表。整个实验流程涵盖了从数据读取、特征计算、数据回填到分组聚合、多分支合并的完整ETL链路,最终得到了可用于后续BI分析的结构化特征数据。

6.2 收获与体会

(1)深化了对特征工程的理解

通过本次实验,我切实体会到特征工程在数据分析流程中的关键作用。原始数据中的点赞、收藏、分享、投币等字段各自只反映了用户互动的一个侧面,而将它们加总为 total_interaction 后,能够从整体维度衡量作品的受欢迎程度。同时,将非结构化的标题文本转化为0/1二值特征(has_best、has_lowcode 等),是将定性信息定量化的一种典型做法,使得后续可以按关键词分组进行统计对比,从而量化不同标题策略对互动效果的影响。这种"从原始数据中提炼分析维度"的思维方式,是数据分析师的核心能力之一。

(2)掌握了助睿ETL多组件协同构建转换流的方法

本次实验涉及的组件种类较多,包括计算器、JavaScript代码、插入/更新、过滤记录、聚合、增加常量、记录集连接和表输出等,每个组件承担不同的职责。在实践中,我学会了如何根据数据处理逻辑合理编排组件顺序,理清上下游数据流关系。例如,在关键词汇总部分,需要先从同一张源表分出多条处理分支,每条分支独立完成"过滤→排序→聚合→增加常量"的流程,最后再通过"记录集连接"组件按 feature_name 合并。这种"分而治之、再合并"的设计模式在处理多维度统计时非常实用。

(3)理解了"插入/更新"与"表输出"的适用场景差异

实验中对 content_analysis 表使用"插入/更新"而非"表输出"进行数据写入,这一选择让我对两种组件的区别有了更清晰的认识。"表输出"每次执行都会追加新行,适合一次性写入或增量写入的场景;而"插入/更新"按主键匹配已有记录进行字段更新,适合对已有表进行字段回填的场景。正确使用写入组件能够避免数据重复,保证转换流的可重入性,这在工程实践中是非常重要的细节。

(4)体会了JavaScript组件在文本处理中的灵活性

使用"JavaScript代码"组件进行标题关键词匹配,让我认识到在零代码ETL平台中,脚本组件是对可视化组件能力的重要补充。对于简单的数值计算可以使用"计算器"组件完成,但对于字符串匹配、正则提取等文本处理任务,脚本组件提供了更大的灵活性。通过 indexOf 方法判断关键词是否存在于标题中,并将结果转化为0/1值,代码简洁且逻辑清晰,体现了脚本组件在特征提取场景下的实用价值。

(5)认识到数据标签化在多分支汇总中的重要性

在关键词汇总流程中,每个分支在聚合后都通过"增加常量"组件添加了 feature_name 字段来标识当前分支对应的关键词。这个看似简单的步骤实际上解决了一个关键问题——聚合后的数据丧失了来源信息,如果不贴标签,多条分支合并后将无法区分各行数据的含义。这种"为数据添加语义标签"的做法,在多维度统计和报表生成中具有普遍的参考价值,也体现了数据工程中注重数据可追溯性的设计理念。
 

Logo

一站式 AI 云服务平台

更多推荐