前言
前面的实验已经完成了自媒体作品数据的清洗,并生成了 content_analysis 明细表。该表中已经包含作品标题、平台、点赞数、收藏数、分享数、投币数、浏览量等基础字段,但这些字段还只是原始统计信息,直接用于分析时还不够直观。
本次实验继续基于 content_analysis 表进行作品特征构建,主要完成两类加工任务。
第一类是作品级特征扩展。通过计算器组件,把点赞数、收藏数、分享数和投币数合并计算为作品总互动量 total_interaction;同时使用 JavaScript 代码组件识别标题中是否包含“保姆级”“零代码”“实战”“教程/指南”“踩坑”等关键词,并生成对应的 0-1 特征字段。
第二类是关键词级汇总分析。基于已经生成的标题特征字段,统计不同标题关键词对应作品的平均互动量、样本数量和整体平均互动水平,最终输出 title_feature_analysis 表,为后续可视化分析提供数据基础。
本次实验整体流程如下:

第一部分:实验背景
1.1 实验目的
本次实验使用助睿平台完成自媒体作品特征构建,重点是把清洗后的作品明细数据进一步加工成可分析、可统计、可可视化的数据特征。
通过本次实验,我主要完成以下任务:
1. 基于 content_analysis 表读取清洗后的作品明细数据;
2. 使用计算器组件计算单篇作品的总互动量;
3. 使用 JavaScript 代码组件提取标题关键词特征;
4. 使用插入/更新组件将新字段回填到原明细表;
5. 使用过滤记录、分组、增加常量、记录集连接等组件构建关键词汇总结果;
6. 输出 title_feature_analysis 表,支撑后续标题效果分析。
本次实验的重点不是重新清洗原始 CSV 文件,而是在已经清洗好的明细表基础上进行特征工程。这样做可以把原本分散的基础字段转化为更适合分析的业务指标。
1.2 实验环境
平台全称:助睿数智(Uniplore)一站式数据科学实验平台
平台定位:覆盖数据接入、ETL处理、机器学习建模到可视化分析的全链路 Agentic 零代码数据智能产品
产品官网:https://www.uniplore.com/
实验平台地址:https://lab.guilian.cn/
本次主要使用平台中的 数据集成 / ETL 模块。该模块可以通过可视化组件完成数据读取、字段计算、脚本处理、条件过滤、分组聚合和结果入库等操作。
1.3 实验数据说明
本次实验使用上一阶段生成的清洗结果表:
content_analysis
该表是作品级明细表,主要字段包括:
| 字段 | 含义 |
|---|---|
| id | 作品记录编号 |
| date | 采集日期 |
| author_name | 作者名称 |
| title | 作品标题 |
| platform | 发布平台 |
| likes | 点赞数 |
| favorites | 收藏数 |
| shares | 分享数 |
| coins | 投币数 |
| views | 浏览量 |
| url | 作品链接 |
| total_interaction | 总互动量,本次实验回填 |
| has_best | 是否包含“保姆级” |
| has_lowcode | 是否包含“零代码” |
| has_practice | 是否包含“实战” |
| has_tutorial | 是否包含“教程/指南” |
| has_pit | 是否包含“踩坑” |
本次实验最终还会生成一张新的关键词汇总表:
title_feature_analysis
该表用于统计不同标题关键词的互动表现,便于后续分析“哪些标题话术更容易获得较高互动”。
第二部分:实验步骤
2.1 准备输入表和关键词汇总目标表
本次实验的输入数据来自上一阶段已经生成的 content_analysis 表。在开始搭建转换流之前,我先确认该表中已经存在作品标题、平台、点赞数、收藏数、分享数、投币数等字段。
为了保存关键词级别的统计结果,还需要新建一张汇总表 title_feature_analysis。这张表不是作品明细表,而是按照“平台 + 关键词”进行汇总后的结果表。

建表 SQL 可以参考如下:
DROP TABLE IF EXISTS title_feature_analysis;
CREATE TABLE title_feature_analysis (
id INT AUTO_INCREMENT PRIMARY KEY COMMENT '自增主键',
platform VARCHAR(20) COMMENT '平台名称',
feature_name VARCHAR(50) COMMENT '标题关键词名称',
avg_interaction DECIMAL(10,2) COMMENT '含该关键词作品的平均互动量',
overall_avg DECIMAL(10,2) COMMENT '该平台整体平均互动量',
sample_count INT COMMENT '含该关键词的作品数量'
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '标题关键词互动效果分析表';
这一步完成后,后续的关键词统计结果就可以统一写入 title_feature_analysis 表。
配置要点:
1. content_analysis 是本次实验的输入表,不是重新导入 CSV。
2. title_feature_analysis 是本次实验新建的结果表。
3. 汇总表中需要保留 platform 字段,便于区分 B站 和 CSDN。
4. feature_name 用来标识关键词名称,例如“保姆级”“零代码”等。
5. avg_interaction、overall_avg 建议使用 DECIMAL 类型,便于保存平均值。
2.2 读取 content_analysis 明细数据
目标表准备完成后,我新建一个转换流,并拖入“表输入”组件。该组件用于从数据库中读取 content_analysis 表中的作品明细数据。
这里读取的不是全部原始字段,而是本次特征构建需要用到的字段。主要包括作品编号、平台、标题和互动相关字段。

读取完成后,先点击预览,检查字段是否完整。尤其要确认 id、title、likes、favorites、shares、coins 字段都能正常读出。
配置要点:
1. 表输入组件选择数据库中的 content_analysis 表。
2. id 字段必须保留,因为后面插入/更新组件要用 id 作为匹配依据。
3. title 字段必须保留,因为后面需要提取标题关键词特征。
4. likes、favorites、shares、coins 用于计算总互动量。
5. 预览数据时要检查是否存在字段为空或字段名不一致的情况。
2.3 使用 JavaScript 代码提取标题关键词特征
读取数据后,我继续添加“JavaScript代码”组件,用来提取标题中的关键词特征。
本次实验选择了五类标题关键词:
保姆级
零代码
实战
教程/指南
踩坑
这些关键词常见于技术分享类、自媒体运营类内容标题中,可以反映标题是否强调教程性、实操性或经验总结。

JavaScript 代码可以参考如下:
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;
这里每个字段都是 0-1 型标识。比如标题中包含“实战”,则 has_practice = 1,否则为 0。

五个字段的含义如下:
| 字段 | 含义 |
|---|---|
| has_best | 标题是否包含“保姆级” |
| has_lowcode | 标题是否包含“零代码” |
| has_practice | 标题是否包含“实战” |
| has_tutorial | 标题是否包含“教程”或“指南” |
| has_pit | 标题是否包含“踩坑” |
配置要点:
1. JavaScript 代码组件中要先处理 title 为空的情况。
2. 每个关键词字段输出 1 或 0,方便后续过滤和统计。
3. has_tutorial 同时判断“教程”和“指南”两个关键词。
4. 新增字段需要在组件输出字段中提前定义。
5. 输出字段类型建议设置为整数类型。
2.4 使用计算器组件计算作品总互动量
提取标题中的关键词特征后,我继续添加“计算器”组件,用来计算每篇作品的总互动量。
总互动量的计算逻辑是:
total_interaction = likes + favorites + shares + coins
在内容运营分析中,单独看点赞数、收藏数或分享数会比较分散。把这些互动行为合并成总互动量后,可以更直观地判断一篇作品的整体互动表现。
在计算器组件中新增一个输出字段,可以命名为:
interaction
计算字段依次选择 likes、favorites、shares,运算方式选择求和。

在另外一个计算器组件中新增一个输出字段,可以命名为:
interactions
计算字段依次选择 interaction、coins,运算方式选择求和。

配置要点:
1. 计算器组件用于生成数值型衍生字段。
2. 总互动量由 likes、favorites、shares、coins 四个字段求和得到。
3. 输出字段建议命名为 interactions 或 interaction。
5. 如果 coins 字段存在空值,需要提前确认是否已经填充为 0。
6. 计算完成后要预览结果,检查总互动量是否明显异常。
2.5 使用插入/更新组件回填 content_analysis 表
总互动量和标题特征字段生成后,需要把结果回填到原来的 content_analysis 表中。
这里不能直接使用“表输出”组件追加写入。因为 content_analysis 表中原本已经存在作品基础数据,如果再次表输出,很可能造成重复记录。
所以本次使用“插入/更新”组件,以 id 字段作为匹配依据,对已有记录进行更新。

插入/更新组件主要配置如下:
| 配置项 | 设置 |
|---|---|
| 目标表 | content_analysis |
| 查询关键字 | id |
| 更新字段 | total_interaction、has_best、has_lowcode、has_practice、has_tutorial、has_pit |
字段映射关系如下:
| 流字段 | 表字段 |
|---|---|
| id | id |
| total_interaction | total_interaction |
| has_best | has_best |
| has_lowcode | has_lowcode |
| has_practice | has_practice |
| has_tutorial | has_tutorial |
| has_pit | has_pit |
配置完成后运行转换流,观察日志中是否存在更新失败、字段不匹配或主键匹配失败等问题。
配置要点:
1. 本步骤使用插入/更新组件,不建议使用表输出组件。
2. 查询关键字设置为 id,用来匹配原有作品记录。
3. 只更新本次新增的特征字段,不覆盖其他基础字段。
4. 字段映射要逐项检查,避免 total_interaction 写错字段。
5. 如果多次运行实验,插入/更新不会重复新增相同 id 的记录。
2.6 验证作品级特征字段是否回填成功
转换流运行完成后,我进入数据库中查询 content_analysis 表,检查作品级特征是否已经成功回填。

如果 interaction 已经有数值,且标题中包含对应关键词的记录能够正确显示 1,说明作品级特征构建成功。
配置要点:
1. total_interaction 应等于 likes + favorites + shares + coins。
2. 标题包含关键词时,对应 has 字段应为 1。
3. 标题不包含关键词时,对应 has 字段应为 0。
4. 如果所有关键词字段都为 0,需要检查 JavaScript 字段名是否读取正确。
5. 如果 total_interaction 为空,需要检查计算器输出字段和更新映射关系。
2.7 构建关键词互动效果统计分支
作品级特征完成后,下一步是统计不同标题关键词的互动效果。
这里以“零代码”为例说明。其他关键词可以复制同样的分支,只修改过滤条件和常量值。
首先从 content_analysis 表读取已经回填特征的数据。

然后使用“过滤记录”组件筛选出包含“保姆级”的作品,也就是:
has_lowcode = 1

过滤后先接入排序组件,按照id 升序排序

排序后接入“分组”组件,统计这些作品的平均互动量和样本数量。
需要计算的指标包括:
avg_interaction:含该关键词作品的平均互动量
sample_count:含该关键词作品数量
还需要按 platform 分组。

配置要点:
1. 关键词分支先用过滤记录组件筛选 has 字段为 1 的作品。
2. “零代码”对应 has_lowcode = 1。
3. 需要在分组字段中加入 platform。
4. avg_interaction 使用 AVG(total_interaction) 计算。
5. sample_count 使用 COUNT(id) 计算。
2.8 计算平台整体平均互动量作为对照
只看某个关键词的平均互动量还不够,还需要有一个整体基准。否则无法判断这个关键词对应的互动表现是高还是低。
因此,我单独设置一条分支,用来计算平台整体平均互动量。

该分支不筛选关键词,直接基于 content_analysis 表按平台统计:
overall_avg = AVG(total_interaction)
还需要按 platform 分组。

这样可以得到每个平台的整体平均互动水平。后面将它和关键词平均互动量合并,就能对比“含某关键词作品的平均互动量”和“平台整体平均互动量”。
配置要点:
1. 整体平均值分支不设置关键词过滤条件。
2. 按 platform 分组,便于分别计算 B站 和 CSDN 的整体平均互动量。
3. overall_avg 使用 AVG(total_interaction) 得到。
4. 该结果用于和关键词 avg_interaction 做对照。
5. 如果整体平均值为空,需要检查 total_interaction 是否已经完成回填。
2.9 合并结果并增加关键词名称常量
接着使用“记录集连接”组件,把关键词平均互动结果和整体平均互动结果合并。
在组件前面给两个分支都加上排序记录组件,都按照 platform 进行排序。


连接字段可以设置为:
platform
合并后得到的数据字段包括:
platform
feature_name
avg_interaction
overall_avg
sample_count

关键词分支完成聚合后,数据中只有平台、平均互动量和样本数量,还缺少关键词名称。为了让结果表能区分当前统计的是哪个关键词,需要添加“增加常量”组件。
以“零代码”分支为例,增加常量字段:
feature_name = 零代码

整体平均值分支也需要增加同样的 feature_name 字段,这样后续才能通过 platform + feature_name 进行连接。
配置要点:
1. 增加常量的作用是给聚合结果补充关键词名称。
2. 每个关键词分支的 feature_name 要和实际关键词对应。
3. 关键词分支和整体平均值分支都要有 feature_name 字段。
4. 记录集连接时建议同时使用 platform 和 feature_name。
5. 合并前要确认两个分支字段类型一致。
2.10 输出 title_feature_analysis 汇总表
合并完成后,使用“表输出”组件将结果写入 title_feature_analysis 表。


表输出字段映射如下:
| 流字段 | 目标表字段 |
|---|---|
| platform | platform |
| feature_name | feature_name |
| avg_interaction | avg_interaction |
| overall_avg | overall_avg |
| sample_count | sample_count |
配置要点:
1. 输出表选择 title_feature_analysis。
2. 字段映射要检查 avg_interaction 和 overall_avg 是否对应正确。
3. 多个关键词结果写入同一张表时,不要误删已有结果。
4. 如果反复调试,可以先手动清空表,再统一运行完整流程。
5. 输出后要查询结果表确认是否每个关键词都有记录。
2.11 复制分支完成其他关键词统计
“保姆级”关键词分支配置完成后,其他关键词可以采用相同思路。
需要修改的主要有两处:
1. 过滤条件;
2. feature_name 常量值。
关键词与过滤条件对应关系如下:
| 关键词 | 过滤条件 | feature_name |
|---|---|---|
| 保姆级 | has_best = 1 | 保姆级 |
| 零代码 | has_lowcode = 1 | 零代码 |
| 实战 | has_practice = 1 | 实战 |
| 教程/指南 | has_tutorial = 1 | 教程/指南 |
| 踩坑 | has_pit = 1 | 踩坑 |
复制分支后,不需要重新设计全部组件,只要保证过滤条件和常量名称修改正确即可。
配置要点:
1. 五个关键词分支的结构可以保持一致。
2. 每复制一个分支,都要检查过滤条件是否已经修改。
3. 每复制一个分支,都要检查 feature_name 是否已经修改。
4. 不同关键词结果最终都写入 title_feature_analysis 表。
5. 如果某个关键词没有数据,sample_count 可能为空,需要结合数据实际情况判断。
2.12 运行完整转换流并检查结果
所有分支配置完成后,运行完整转换流。
运行时我主要检查以下内容:
1. 表输入是否正常读取 content_analysis;
2. 计算器是否生成 total_interaction;
3. JavaScript 是否生成 5 个标题特征字段;
4. 插入/更新是否成功回填 content_analysis;
5. 各关键词过滤分支是否有输出;
6. 分组聚合是否生成平均互动量和样本数;
7. title_feature_analysis 是否成功写入数据。
运行完成后,可以查询 title_feature_analysis 表:

配置要点:
1. 运行完整流程前先保存转换流。
2. 如果某个分支失败,要先查看该分支前一个组件是否有输出。
3. 结果表中应包含不同平台、不同关键词的统计记录。
4. avg_interaction 用于观察关键词作品平均互动水平。
5. overall_avg 用于作为平台整体互动水平对照。
第三部分:实验结果
3.1 content_analysis 表完成作品级特征扩展
本次实验首先更新了 content_analysis 表。更新后,该表不再只是基础明细表,而是增加了作品总互动量和标题关键词特征字段。
更新后的主要字段包括:
total_interaction
has_best
has_lowcode
has_practice
has_tutorial
has_pit

其中,total_interaction 可以用于衡量单篇作品的整体互动表现;五个 has_ 字段可以用于判断标题中是否包含对应关键词。
这一步的结果可以支持后续作品排名、标题关键词分析、内容表现分层等操作。
3.2 title_feature_analysis 表完成关键词级统计
本次实验还生成了新的关键词级汇总表:
title_feature_analysis
该表以平台和标题关键词为统计粒度,记录每类关键词作品的平均互动量、平台整体平均互动量和样本数量。

该表可以回答以下问题:
1. 含“保姆级”的作品平均互动量是否高于平台整体水平?
2. “实战”类标题在 B站 和 CSDN 上表现是否不同?
3. “教程/指南”类标题的样本数量是否足够?
4. 哪类标题关键词更适合后续重点分析?
第四部分:问题与解决
4.1 JavaScript 代码组件提示字段未定义
问题现象:
运行转换流时,JavaScript 代码组件报错,提示 title 字段未定义,导致标题关键词字段无法生成。
问题原因:
可能是输入流中的字段名和脚本中使用的变量名不一致,也可能是 JavaScript 组件中没有正确接收到上游字段。
解决方法:
先检查表输入组件输出字段中是否存在 title。如果字段名称不同,需要在脚本中使用实际字段名。然后在 JavaScript 组件中提前声明输出字段,例如 has_best、has_lowcode、has_practice、has_tutorial、has_pit,并设置为整数类型。
4.2 标题为空导致关键词判断异常
问题现象:
部分记录标题为空,JavaScript 执行时无法正常使用 indexOf 方法。
问题原因:
indexOf 需要基于字符串执行,如果标题字段为空值,直接判断可能导致脚本异常。
解决方法:
在脚本开头先处理空值:
var t = title == null ? "" : String(title);
后续所有关键词判断都基于 t 变量完成。这样即使标题为空,也会输出 0,而不会影响整个转换流运行。
4.3 使用表输出导致 content_analysis 出现重复记录
问题现象:
将计算后的特征字段写回 content_analysis 时,表中记录数量变多,出现重复作品数据。
问题原因:
表输出组件一般是追加写入,如果直接把加工结果输出到原表,就可能新增重复记录,而不是更新已有记录。
解决方法:
将“表输出”改为“插入/更新”组件,并使用 id 作为查询关键字。这样系统会根据 id 匹配原有记录,只更新指定字段,不会重复插入相同作品。
4.4 关键词汇总结果无法区分关键词名称
问题现象:
分组统计完成后,结果中只有平均互动量和样本数,看不出当前结果属于哪个关键词。
问题原因:
过滤分支聚合后,原来的关键词条件不会自动保留在结果中。如果不额外增加关键词名称,多个分支合并后就无法区分来源。
解决方法:
在每个关键词分支后添加“增加常量”组件。例如“保姆级”分支增加:
feature_name = 保姆级
其他关键词分支也分别设置自己的 feature_name。这样合并后每一行结果都有明确的关键词标签。
4.5 记录集连接后结果为空
问题现象:
关键词平均互动量和整体平均互动量分别计算成功,但使用记录集连接后没有输出结果。
问题原因:
两个分支用于连接的字段不一致。例如一个分支有 feature_name,另一个分支没有;或者平台字段值存在空格、类型不一致等问题。
解决方法:
在连接前检查两个分支的字段结构,确保都包含相同的连接字段。建议两个分支都保留 platform 和 feature_name,并保证字段类型一致。必要时可以在连接前预览两个分支的数据。
第五部分:实验总结
本次实验完成了自媒体作品数据的特征构建与关键词级汇总统计。相比前一阶段的数据清洗,本次实验更关注如何把已有字段加工成更有分析价值的业务特征。
在作品级特征构建中,我使用计算器组件生成了 total_interaction 字段,把点赞、收藏、分享和投币等分散指标合并为一个总互动量指标。这个字段可以更直观地衡量作品整体互动表现。
在标题关键词提取中,我使用 JavaScript 代码组件对标题文本进行判断,将“保姆级”“零代码”“实战”“教程/指南”“踩坑”等文本信息转化为 0-1 型结构化字段。这样原本不方便统计的标题内容,就可以参与后续分组分析。
在数据回填阶段,我使用插入/更新组件将新增字段写回 content_analysis 表,而不是直接追加写入。这样可以避免重复数据,也能保证原有作品基础信息不被覆盖。
在关键词汇总阶段,我通过过滤记录、分组聚合、增加常量、记录集连接和表输出等组件,生成了 title_feature_analysis 表。该表可以用于分析不同标题关键词对应的平均互动量,并与平台整体平均互动水平进行对比。
通过本次实验,我进一步理解了 ETL 不只是数据清洗工具,也可以承担特征工程和指标加工任务。后续如果继续搭建自媒体运营分析仪表盘,就可以直接基于 content_analysis 和 title_feature_analysis 两张表展示作品互动表现和标题关键词效果。
478

被折叠的 条评论
为什么被折叠?



