一、实验背景

在实验7-1完成数据清洗后,content_analysis 表已包含B站和CSDN的有效作品记录,但还缺少两个关键维度的分析特征:

  • 互动总数:原始数据中点赞、收藏、分享、投币等互动指标分散在不同字段中,需要一个综合指标来反映作品的总体互动规模。
  • 标题特征:在内容同质化(全班作品主题一致)的前提下,标题成为数据差异的主要来源。需要将标题中是否包含特定关键词(如"保姆级""零代码""实战"等)提取为0/1标志字段,便于后续量化分析标题对互动数据的影响。

此外,还需要在关键词级别进行汇总统计,计算含有各关键词的作品的平均互动数,为实验7-3的标题影响分析提供数据支撑。

实验目标:使用助睿ETL完成互动总数计算、标题关键词特征提取(更新content_analysis表),以及关键词级别汇总统计(输出title_feature_analysis表)。

二、实验步骤

步骤1:读取数据

将实验7-1输出的 content_analysis 表作为输入数据源,拖入助睿ETL工作区。助睿ETL支持跨项目引用数据集。

步骤2:提取标题特征

使用"JavaScript代码"组件对 title 字段进行关键词匹配,生成5个0/1标志字段:

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

1 或 0

标题中包含"保姆级"

has_lowcode

1 或 0

标题中包含"零代码"

has_practice

1 或 0

标题中包含"实战"

has_tutorial

1 或 0

标题中包含"教程"或"指南"

has_pit

1 或 0

标题中包含"踩坑"

步骤3:计算互动总数

接入"计算器"组件,新增 total_interaction 字段:total_interaction = likes + favorites + shares + coins。该字段将分散的互动指标合并为一个综合指标。

步骤4:回填更新

使用"插入/更新"组件,以 id 为查询关键字,将计算得到的 total_interaction 和5个标题特征字段(has_best/has_lowcode/has_practice/has_tutorial/has_pit)更新到 content_analysis 表。

关键点:使用"插入/更新"而非"表输出"。前者按id匹配更新已有记录,后者每次运行会新增行导致数据重复。这意味着本实验可以反复运行而不会产生重复数据。

步骤5:创建关键词汇总表

在助睿ETL中创建 title_feature_analysis 表,字段如下:

字段

类型

说明

id

INT

自增主键

platform

VARCHAR(20)

平台名称(B站/CSDN)

feature_name

VARCHAR(50)

关键词名称

avg_interaction

DECIMAL(10,2)

含该关键词作品的平均互动总数

overall_avg

DECIMAL(10,2)

该平台整体平均互动总数

sample_count

INT

含该关键词的作品数量

步骤6:计算整体平均值

不设分组条件,直接计算 AVG(total_interaction) 得到平台整体平均值(overall_avg),然后通过"增加常量"组件标注 feature_name。这一步为后续关键词对比提供基线数据。

步骤7:计算各关键词平均值

以"保姆级"为例:先通过"过滤记录"筛选 has_best = 1 的记录,再通过"分组"组件计算 AVG(total_interaction) 和 COUNT(id),最后通过"增加常量"组件标注 feature_name = '保姆级'。

步骤8:合并与入库

使用"记录集连接"组件按 feature_name 匹配,将整体平均值和关键词平均值合并。最后通过"表输出"组件入库(不勾选"裁剪表",因为其他关键词数据还需追加)。

步骤9:复制处理其他关键词

复制整个分支,仅修改两处:过滤条件(has_lowcode=1 等)和常量值("零代码"等)。重复5次即可覆盖全部5个关键词。

三、实验结果

  • content_analysis 表(更新后):新增 total_interaction(互动总数)字段和5个标题特征标志字段(has_best、has_lowcode、has_practice、has_tutorial、has_pit),所有记录均已正确填充。
  • title_feature_analysis 表:包含5个关键词分别在B站和CSDN的 avg_interaction、overall_avg 和 sample_count。该表可直接用于实验7-3的标题影响提升倍率分析。

四、核心组件说明

组件名称

功能

配置要点

表输入

读取 content_analysis 表

选择实验7-1输出的结果表作为数据源

JavaScript代码

提取标题关键词特征

使用 indexOf 判断关键词是否存在,返回0或1

计算器

计算衍生数值字段

公式:likes + favorites + shares + coins

插入/更新

按主键回填数据

查询关键字=id,更新6个特征字段,不新增行

过滤记录

筛选含特定关键词的记录

例如 has_best = 1 筛选含"保姆级"的作品

排序记录 + 分组

聚合计算AVG和COUNT

排序字段=id升序,计算平均互动数和样本数

增加常量

添加标识字段

feature_name = '保姆级'等,用于区分不同关键词分支

记录集连接

合并两个数据流

按 feature_name 匹配,合并整体平均值和关键词平均值

表输出

写入目标表

不勾选"裁剪表",支持追加多个关键词数据

五、问题与解决

问题1:为什么用"插入/更新"而非"表输出"?

"表输出"每次运行会新增行,如果重复执行会导致 content_analysis 表中出现大量重复数据。"插入/更新"按 id 匹配,id 已存在则只更新指定字段,id 不存在才插入。由于 content_analysis 表中的 id 已存在,实际只会更新,不会新增行。这样实验可以反复调试运行,不会产生数据冗余。

问题2:为什么需要"增加常量"组件?

聚合后的数据只有数值,没有关键词名称。5个关键词分支的数据合并后,如果没有常量标签,无法区分哪一行对应哪个关键词。"增加常量"相当于给每一行贴上一个标签,是后续合并和区分数据的关键步骤。

问题3:如何高效处理5个关键词?

不需要重新搭建5个Pipeline。处理完第一个关键词(如"保姆级")后,复制整个分支,仅修改两处:过滤条件(has_lowcode = 1 等)和常量值("零代码"等)。这样可以大幅减少重复劳动,同时保证所有分支的处理逻辑一致。

六、实验总结

本实验在清洗后的数据基础上完成了特征工程,主要收获如下:

  • 理解了特征工程的核心价值:将原始数据转化为适合分析的数值特征(互动总数)和标志特征(标题关键词0/1标记),为后续分析提供可量化的维度。
  • 掌握了"JavaScript代码"组件在文本处理中的应用:通过 indexOf 进行关键词匹配,批量自动标注,替代了人工标注的低效方式。
  • 理解了"插入/更新"与"表输出"的区别:前者适用于更新已有数据的场景(可重复执行),后者适用于首次写入或追加新数据。
  • 学会了分支复用的技巧:通过修改过滤条件和常量值快速复制处理逻辑,提升ETL Pipeline的构建效率。
Logo

一站式 AI 云服务平台

更多推荐