一、实验目标

在实验7-1产出的清洗数据基础上,借助Uniplore ETL完成两大类特征的计算与存储工作:

任务A:标题特征提取与互动总数计算(回填明细表)

  • 计算每条记录的互动总数,公式为:total_interaction = likes + favorites + shares + coins
  • 提取5个标题特征标志字段:has_best(保姆级)、has_lowcode(零代码)、has_practice(实战)、has_tutorial(教程/指南)、has_pit(踩坑)
  • 将上述计算结果通过"插入/更新"方式回填到 content_analysis 表中

任务B:关键词级别的汇总统计

  • 分别计算含有每个关键词的作品的平均互动数
  • 将汇总结果输出到新建的 title_feature_analysis 表中

通过本实验,你将掌握:

  • 特征工程在数据分析全流程中的关键作用
  • 使用Uniplore ETL的"计算器"组件创建衍生指标
  • 使用"JavaScript代码"组件进行文本关键词的自动标注
  • 使用"插入/更新"组件实现增量数据回填(不新增表、不覆盖已有的基础字段)
  • 使用"过滤+聚合"组件组合完成分组统计计算

二、实验环境

实验平台:Uniplore在线实验环境(https://lab.guilian.cn/)

数据处理引擎:Uniplore ETL(数据集成平台)

本次用到的核心组件一览:

组件名称

功能用途

表输入

读取 content_analysis 表中待处理的数据

计算器

计算互动总数(likes + favorites + shares + coins)

JavaScript代码

从标题文本中自动提取5个关键词特征标志

插入/更新

按 id 匹配记录,更新 content_analysis 表中的特征字段

过滤记录 + 聚合

分别统计整体平均值和每个关键词维度的平均值

增加常量

为每个关键词分支添加名称标识字段

合并记录

将5个关键词的统计结果纵向合并为5行数据

表输出

将互动汇总数据写入 title_feature_analysis 表

三、核心设计思路

本次特征工程围绕两个维度展开:

  • 互动总量特征:likes + favorites + shares + coins,这是一个绝对值指标,反映作品整体的用户互动规模。它不区分互动类型,而是将所有互动行为加总,方便横向对比不同作品的"热度"
  • 标题关键词特征:将标题中是否出现特定高频关键词转化为0/1二值变量。这种编码方式的优势在于——后续在BI中可以直接按0/1分组求均值,快速量化每个关键词对互动数据的实际提升效果

ETL处理流程采用"先计算后回填"的策略:从 content_analysis 表中读取数据 → JavaScript标注关键词 → 计算器求互动总数 → 插入/更新回填到原表。另一条分支则对每条记录按关键词维度进行聚合统计,最终输出到 title_feature_analysis 汇总表。

四、实验操作步骤

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

步骤1:读取数据

将实验7-1输出的 content_analysis 表作为数据源,拖入ETL工作区。Uniplore ETL支持跨项目引用数据集,可以直接选择上一个实验产出的结果表,无需重新导入原始文件。

步骤2:标题关键词自动标注(核心步骤)

在"JavaScript代码"组件中编写脚本,对 title 字段进行关键词匹配,生成5个0/1标志字段。在Uniplore ETL环境中,字段名可以直接作为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;

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

各字段的返回值含义:

字段名

返回值

判定条件

has_best

1 或 0

标题中包含"保姆级"为1,否则为0

has_lowcode

1 或 0

标题中包含"零代码"为1,否则为0

has_practice

1 或 0

标题中包含"实战"为1,否则为0

has_tutorial

1 或 0

标题中包含"教程"或"指南"为1,否则为0

has_pit

1 或 0

标题中包含"踩坑"为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

字段映射关系:

流字段(计算后的字段名)

表字段(content_analysis中的目标列)

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

💡 "插入/更新"与"表输出"的本质区别:如果使用"表输出",每次运行都会追加新行,日积月累会造成大量重复数据。而"插入/更新"按主键 id 进行匹配——如果 id 已存在则仅更新指定的字段值,如果 id 不存在才插入新行(本场景中 id 一定存在,所以只做更新操作)。这意味着本实验可以反复运行调试,不会产生数据冗余。

步骤5:执行转换流

确认转换流配置无误后,点击运行按钮。运行成功后可在数据预览面板中查看 content_analysis 表,验证 total_interaction 和各 has_* 字段是否已正确填充。

4.2 构建关键词级别的互动汇总表

步骤1:创建目标表

在Uniplore 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

含该关键词的作品数量(样本量)

步骤2:计算平台整体平均互动数

接入"排序记录"和"分组"组件,先按id升序排列,不设分组条件,直接计算 AVG(total_interaction) 得到 overall_avg(全平台均值)。聚合完成后,接入"增加常量"组件,新增 feature_name 字段并赋值为"保姆级",为这一行数据标记上名称标签,便于后续与关键词分支的数据做关联。

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

以"保姆级"关键词为例说明流程——从表输入复制分发出一条独立分支:

  • 先接"过滤记录"组件,设置条件 has_best = 1,只保留标题中含有"保姆级"的作品记录
  • 再接"排序记录"+"分组"组件,按id升序排列,计算 AVG(total_interaction) 得到 avg_interaction(含该词的平均互动数),同时 COUNT(id) 得到 sample_count(样本数量)
  • 聚合完成后,接入"增加常量"组件,新增 feature_name 字段并赋值为"保姆级"

为什么必须加这个常量字段?因为聚合之后的数据只保留了数值,关键词信息已经丢失了。如果不给每一行贴上名称标签,五个分支的数据合并之后根本无法区分对应的是哪个关键词。常量字段的本质就是给数据行打上一个标识,"告诉下游系统这一行是保姆级的数据"。

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

使用"记录集连接"组件将整体平均值分支和关键词平均值分支进行合并,匹配字段设定为 feature_name。由于两条分支各自都只有一行数据,无需预先排序即可直接连接。

步骤5:数据入库

使用"表输出"组件将合并后的数据写入 title_feature_analysis 表。务必注意:不要勾选"裁剪表"选项,因为后续还有其他四个关键词的数据也需要写入同一张表,裁剪会删掉先前的数据。

步骤6:批量复制处理其余关键词

完成一个关键词的完整流程后,其余四个关键词(零代码、实战、教程/指南、踩坑)的处理方式完全相同——直接复制整个转换流分支,只需修改两处配置:过滤条件(如 has_lowcode = 1)和常量字段的值(如"零代码")。其余组件的参数无需任何变动。

完整数据:

五、实验产出物

  • 一份完整的内容分析明细表(content_analysis),新增了互动总数和5个标题特征标志字段
  • 一张关键词级别的互动汇总表(title_feature_analysis),包含5个关键词 × 2个平台共10行数据
  • 掌握了Uniplore ETL特征工程的完整操作流程:从数据读取→特征计算→数据回填→分组聚合→结果输出

#助睿数智 #商业数据分析 #数据分析 #ETL

Logo

一站式 AI 云服务平台

更多推荐