一、实验基础信息
1. 实验名称:浏览器市场与用户画像分析-数据加工(2)
2. 实训平台:Uniplore助睿数智一站式数据分析平台,配套ETL数据集成模块、AI建模模块
3. 实验原始数据:样本覆盖1000名用户,原始行为日志总量超800万条,文件总大小约825MB
4. 前置依赖数据:复用上一次实验产出数据表daily_browser_detail、browser_coverage、browser_hourly,新增用户人口属性表demographic作为画像分析数据源
5. 存储位置:所有数据表统一存储在团队私有数据库内
二、实验目标
基于已清洗完成的用户浏览器小时级行为明细表,批量加工适配可视化大屏的聚合统计数据表。整体加工任务分为两大模块,第一模块完成浏览器市场维度指标统计,包含市场占有率、使用时长、每周活跃趋势、用户使用强度分层、多浏览器并行使用分布、工作日与周末使用行为差异;第二模块完成用户画像多维度聚合统计,围绕性别、年龄区间、学历、职业、收入水平、居住城市类型、所属省份完成分组计数。最终产出标准化汇总数据,支撑前端可视化大屏快速加载、多图表无重复计算。
三、实验环境与数据源说明
3.1 实训环境
本次实训全程依托Uniplore零代码数据处理平台完成全流程操作,平台集成数据导入、ETL清洗转换、数据聚合、AI建模、数据探查校验整套功能,适配高校数据分析实训场景与企业日常数据加工场景。分工上ETL组件负责全部数据清洗、字段衍生、多表关联、聚合统计操作,AI模块预留用于后续流失预测建模,全部数据表统一托管至团队私有数据库,实现数据隔离。
3.2 数据源清单
1. 核心行为明细表:daily_browser_detail,来自上轮实验输出,存储用户单日、单浏览器、单小时粒度的使用行为记录,是市场分析报表的核心输入源。
2. 历史统计中间表:browser_coverage、browser_hourly,提供基础市场、时段统计基准数据。
3. 用户属性维度表:demographic,存储用户基础个人信息,作为构建用户画像的唯一维度来源。
四、 整体分析框架
4.1 业务需求与问题拆解
4.1.1 原始明细数据无法直接用于大屏的核心原因
数据可视化大屏不能直接查询底层原始明细表behavior_events,存在三点硬性限制:
- 原始日志数据体量庞大,实时查询耗时久,会造成大屏页面加载卡顿;
- 大屏展示内容均为聚合汇总指标,原始单条明细无展示价值;
- 一张大屏内多张图表会重复读取同源数据,提前预聚合能够规避重复计算,降低平台算力消耗。
因此在数据表加工前,需要先明确数据分析需要解答的全部业务问题,反向推导统计维度与数据表结构。
4.1.2 业务问题与分析价值对应表
|
待解答业务问题 |
数据分析业务价值 |
|
哪一款浏览器覆盖用户总量最多? |
定位行业头部产品,判断自有产品市场竞争地位 |
|
哪一款浏览器用户累计使用时长最长? |
用户规模无法代表产品粘性,使用时长可直观体现用户真实依赖程度 |
|
平台整体用户活跃量处于上升还是下降状态? |
预判产品生命周期,提前识别用户活跃度衰退、流失风险 |
|
用户浏览器使用活跃高峰集中在哪个时段? |
优化运营推送、营销活动的投放时间,提升用户触达转化效果 |
|
用户属于重度高频使用还是偶尔轻度打开? |
区分核心留存用户与边缘低频用户,设计分层运营策略 |
|
普通用户同时安装、使用几款浏览器? |
评估用户产品忠诚度,预判竞品替换风险 |
|
用户除自有产品外还会使用哪些竞品浏览器? |
锁定核心竞争对手,制定差异化产品运营、迭代策略 |
|
用户工作日、周末的浏览器使用习惯是否存在明显差异? |
区分办公、娱乐两大使用场景,针对性优化产品功能模块 |
|
核心活跃用户具备怎样的性别、年龄、职业特征? |
锁定目标客群,指导产品功能设计、市场推广投放方向 |
|
用户整体学历分布层级如何? |
匹配产品功能操作复杂度,高学历群体可适配更复杂的专业功能 |
|
用户收入水平分层情况如何? |
支撑平台商业化、付费增值功能的定价与运营策略设计 |
|
用户地域分布集中在哪些城市、省份? |
规划区域市场拓展节奏,合理分配线上线下运营资源 |
4.2 数据分析维度划分
本次分析分为两大独立模块,分别对应两块可视化大屏,每个模块配套固定分析维度、核心统计指标。
4.2.1 模块一:浏览器市场行为分析维度
|
分析维度 |
对应业务问题 |
核心统计指标 |
|
市场格局 |
哪款浏览器用户最多、使用最久 |
覆盖用户总数、累计使用时长占比、单用户平均使用时长 |
|
周活跃趋势 |
用户活跃度变化趋势 |
每一周独立活跃用户数量 |
|
时段偏好 |
用户全天活跃高峰时段 |
24 小时全时段活跃用户分布数据 |
|
使用频率分层 |
用户使用强度高低区分 |
轻度、中度、重度用户各自占比 |
|
多浏览器使用数量 |
用户同时使用产品数量 |
使用 1 种 / 2 种 / 3 种及以上浏览器的用户占比 |
|
竞品用户重叠 |
用户交叉使用竞品情况 |
同时使用两款不同浏览器的独立用户总量 |
|
工作日 & 周末对比 |
工作、娱乐场景使用差异 |
工作日、周末单用户平均使用时长 |
4.2.2 模块二:浏览器用户画像分析维度
|
分析维度 |
对应业务问题 |
核心统计指标 |
|
性别分布 |
男女用户比例结构 |
男性、女性独立用户数量及占比 |
|
年龄分布 |
平台主力用户年龄段 |
各年龄区间独立用户数量及占比 |
|
学历分布 |
用户整体教育水平分层 |
各学历层级独立用户数量及占比 |
|
职业分布 |
平台主流用户职业类型 |
各职业分类独立用户数量及占比 |
|
收入分布 |
用户收入层级划分 |
各收入区间独立用户数量及占比 |
|
居住地类型 |
城乡用户分布差异 |
城市、城郊、乡村用户数量占比 |
|
地域分布 |
用户全国省份分布情况 |
各省份独立活跃用户总量 |
4.3 目标数据表规划
结合全部分析维度,反向确定本次实验需要创建、加工的所有聚合统计表,划分市场分析、用户画像两类数据表。
4.3.1 市场分析类目标数据表
|
数据表名称 |
匹配分析维度 |
原始数据来源 |
|
browser_overview |
全局核心指标汇总 |
daily_browser_detail |
|
browser_coverage |
市场格局分析 |
daily_browser_detail |
|
browser_weekly_active |
周活跃趋势分析 |
daily_browser_detail |
|
browser_hourly |
24 小时时段偏好分析 |
daily_browser_detail |
|
browser_frequency_stats |
用户使用频率分层 |
daily_browser_detail |
|
browser_multi_usage |
多浏览器使用数量分布 |
daily_browser_detail |
|
browser_cooccurrence |
竞品用户重叠统计 |
daily_browser_detail |
|
browser_weekday_weekend |
工作日、周末使用对比 |
daily_browser_detail |
4.3.2 用户画像类目标数据表
|
数据表名称 |
匹配分析维度 |
原始数据来源 |
|
user_profile_stats |
性别、年龄、学历、职业、收入、居住地、省份全维度画像 |
demographic、daily_browser_detail |
4.4 数据表与数据源关联逻辑
所有市场类统计表均以底层明细表daily_browser_detail作为唯一行为数据源,用户画像统计表需要同时关联行为明细表与用户属性表demographic,以user_id作为两张表的关联主键,实现行为数据与用户属性数据的匹配。
五、各目标表加工说明
5.1 市场类统计表加工规则
5.1.1 browser_coverage表
数据表用途:解答「哪款浏览器用户最多、哪款产品用户使用时长最长」业务问题。
加工逻辑:以browser_name作为分组字段,分别统计分组内独立用户总数、全部用户累计使用时长、单用户平均使用时长。
数据来源:上一实验已输出完成的daily_browser_detail明细表。
5.1.2 browser_hourly表
数据表用途:解答「用户全天使用活跃高峰时段」业务问题。
加工逻辑:同时按照browser_name、hour两个字段分组,统计每款浏览器每个小时对应的活跃用户数量。
数据来源:上一实验已输出完成的daily_browser_detail明细表。
5.1.3 browser_weekly_active表
数据表用途:解答「平台用户活跃度整体上升或下降趋势」业务问题。
加工逻辑:按照browser_name、周区间文本分组,统计每个统计周期内去重后的活跃用户数量。
数据来源:本次实验重新生成的daily_browser_detail明细表。
5.1.4 browser_frequency_stats表
数据表用途:解答「用户属于重度还是轻度浏览器使用者」业务问题。
加工逻辑:先统计单个用户、单款浏览器每周累计使用总秒数,换算为小时单位后设置分层阈值:周使用时长不足 3 小时标记为轻度用户,3~10 小时标记为中度用户,超过 10 小时标记为重度用户;最后按浏览器、使用等级分组统计用户数量。
数据来源:本次实验重新生成的daily_browser_detail明细表。
5.1.5 browser_multi_usage表
数据表用途:解答「普通用户同时使用几款浏览器」业务问题。
加工逻辑:以user_id分组,统计单名用户使用浏览器的不同种类数量,将数字计数转换为文字分类标签(1 种、2 种、3 种及以上),最后按分类标签汇总独立用户总量。
数据来源:本次实验重新生成的daily_browser_detail明细表。
5.1.6 browser_cooccurrence表
数据表用途:解答「用户除自有产品外还使用哪些竞品浏览器」业务问题。
加工逻辑:统计任意两款浏览器被同一个用户同时使用的独立用户数量,量化竞品用户重叠规模。
数据来源:本次实验重新生成的daily_browser_detail明细表。
5.1.7 browser_weekday_weekend表
数据表用途:解答「工作日与周末用户浏览器使用习惯差异」业务问题。
加工逻辑:根据每条记录的usage_date判定日期类型(工作日 / 周末),以browser_name、日期类型分组,分别计算分组内单用户平均使用秒数、全部用户累计使用总秒数、独立用户数量,再将总秒数换算为小时单位便于展示。
数据来源:本次实验重新生成的daily_browser_detail明细表。
5.2 用户画像统计表加工规则
数据表用途:完整解答全部用户画像相关业务问题,包含用户性别、年龄、学历、职业、收入、地域分布等多维度分析需求。
加工逻辑:将用户属性表demographic与行为明细表daily_browser_detail通过user_id左连接合并数据,计算并分段用户年龄,再按照browser_name、性别、年龄段、学历、职业、收入、居住地类型、省份多字段分组,统计每一分组下独立用户数量。
数据来源:demographic用户属性表、本次实验重新生成的daily_browser_detail明细表。
六、 实验步骤
6.1 底层明细表daily_browser_detail准备工作
6.1.1 执行 SQL 脚本创建明细表结构
打开上一实验创建的「互联网用户行为日志」项目。

新建转换流并命名为「创建用户_日_浏览器_小时明细表」;在画布中拖入「执行一个 SQL 脚本」组件。

双击「执行一个 SQL 脚本」组件,数据库连接选择团队私有数据库,输入以下建表 SQL 语句。
sql
CREATE TABLE IF NOT EXISTS `daily_browser_detail` (
`user_id` VARCHAR(50) NOT NULL COMMENT '用户ID',
`usage_date` DATE NOT NULL COMMENT '使用日期',
`browser_name` VARCHAR(50) NOT NULL COMMENT '浏览器名称',
`hour` TINYINT NOT NULL COMMENT '小时',
`total_duration_sec` INT NOT NULL COMMENT '总使用时长(秒)',
`active_count` INT NOT NULL COMMENT '活跃次数'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户_日_浏览器_小时明细表';
点击「运行」按钮,执行转换流完成数据表结构创建。

6.1.2 复制并调整历史清洗转换流
在项目文件列表中找到上一轮实验产出的「互联网用户行为日志数据清洗抽取」转换流,右键执行复制操作,在项目根目录粘贴文件,右键重命名为「输出用户日浏览器小时明细表」。

原转换流内「排序记录 1」组件仅以process_name为排序字段,而分组组件的分组关键字段为user_id、usage_date、process_name、hour,因此需要修改排序组件的排序字段,与分组字段保持完全一致,避免分组统计时出现重复数据。

6.1.3 配置进程名与浏览器名称值映射规则
在分组聚合组件的输出端添加「值映射」组件,分别连接原分支 A 的分组 1 组件、复制分支 B 的排序记录 2 组件。

配置进程名到业务浏览器名称的映射对应关系:

|
进程名 |
对应浏览器名称 |
|
iexplore.exe |
IE 浏览器 |
|
360chrome.exe |
360 极速 |
|
360se.exe |
360se |
|
chrome.exe |
|
|
sogouexplorer.exe |
搜狗 |
|
QQBrowser.exe |
QQ 浏览器 |
同步校验前置过滤组件筛选规则,过滤列表仅保留上述 6 类浏览器进程,删除 EXCEL.EXE、WINWORD.EXE、AlilM.exe 三类非浏览器进程。

6.1.4 修正分组、排序组件聚合参数
转换流内分组组件中,聚合字段的统计类型统一调整为「统计不同值的数量 (N)」;在分支 A 的分组 1 组件前端新增排序记录组件,设置排序关键字段为process_name升序。

6.1.5 配置表输出组件写入明细表
画布拖入「表输出」组件,将值映射组件输出端连线至表输入组件,双击打开配置面板:数据库连接选择团队私有数据库,目标数据表填写daily_browser_detail,勾选「裁剪表」清空历史数据,开启「指定数据库字段」选项,完成全部字段映射匹配。


6.1.6 运行转换流生成明细数据
完成全部组件连线与参数配置后,点击转换流运行按钮,执行流程生成完整的用户小时级行为明细表。

6.2 批量创建全部大屏分析目标数据表
6.2.1 新建专用建表转换流
在项目内新建独立转换流,命名为「创建浏览器大屏分析目标数据表」,画布中拖入「执行一个 SQL 脚本」组件。

6.2.2 编写带 DROP 前置语句的批量建表 SQL
数据库连接选择团队私有数据库,输入完整批量建表脚本,每条建表语句前增加 DROP TABLE IF EXISTS 语句,规避重复执行脚本时数据表已存在的报错问题。

sql
-- 1. 核心指标概览表
DROP TABLE IF EXISTS `browser_overview`;
CREATE TABLE `browser_overview` (
`metric_name` VARCHAR(50) NOT NULL COMMENT '指标名称',
`metric_value` DECIMAL(12,2) NOT NULL COMMENT '指标值'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='核心指标概览表';
-- 2. 各浏览器周活跃趋势表
DROP TABLE IF EXISTS browser_weekly_active;
CREATE TABLE `browser_weekly_active` (
`browser_name` VARCHAR(50) NOT NULL COMMENT '浏览器名称',
`week_range` VARCHAR(20) NOT NULL COMMENT '周日期范围',
`active_user_count` INT NOT NULL COMMENT '活跃用户数'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='各浏览器周活跃趋势表';
-- 3. 浏览器使用频率分布表
DROP TABLE IF EXISTS browser_frequency_stats;
CREATE TABLE `browser_frequency_stats` (
`browser_name` VARCHAR(50) NOT NULL COMMENT '浏览器名称',
`usage_level` VARCHAR(10) NOT NULL COMMENT '使用等级',
`user_count` INT NOT NULL COMMENT '用户数'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='浏览器使用频率分布表';
-- 4. 用户使用浏览器数量分布表
DROP TABLE IF EXISTS browser_multi_usage;
CREATE TABLE `browser_multi_usage` (
`browser_count` VARCHAR(10) NOT NULL COMMENT '使用浏览器数量',
`user_count` DECIMAL(5,2) NOT NULL COMMENT '用户数量'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户使用浏览器数量分布表';
-- 5. 浏览器工作日周末对比表
DROP TABLE IF EXISTS browser_weekday_weekend;
CREATE TABLE `browser_weekday_weekend` (
`browser_name` VARCHAR(50) NOT NULL COMMENT '浏览器名称',
`day_type` VARCHAR(10) NOT NULL COMMENT '工作日/周末',
`avg_duration_sec` INT NOT NULL COMMENT '人均使用时长(秒)',
`total_duration_hour` BIGINT NOT NULL COMMENT '总使用时长(小时)',
`user_count` INT NOT NULL COMMENT '用户数'
) COMMENT='浏览器工作日周末对比表';
-- 6. 用户画像统计表
DROP TABLE IF EXISTS `user_profile_stats`;
CREATE TABLE `user_profile_stats` (
`browser_name` VARCHAR(50) NOT NULL COMMENT '浏览器名称',
`gender` VARCHAR(10) COMMENT '性别',
`age_group` VARCHAR(10) COMMENT '年龄段',
`edu` VARCHAR(50) COMMENT '学历',
`job` VARCHAR(50) COMMENT '职业',
`income` VARCHAR(50) COMMENT '收入',
`city_type` VARCHAR(10) COMMENT '居住地类型',
`province` VARCHAR(50) COMMENT '省份',
`user_count` INT NOT NULL COMMENT '用户数'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户画像统计表';
6.2.3 执行脚本完成表结构初始化
确认 SQL 无语法错误后,点击运行按钮执行转换流,一次性完成 6 张新增统计表的结构创建。

6.3 周活跃趋势表browser_weekly_active数据抽取加工
6.3.1 新建转换流并读取明细数据源
新建转换流命名为「各浏览器周活跃趋势表数据抽取」,画布拖入「表输入」组件,数据库连接选定团队私有数据库,点击获取 SQL 查询语句,数据源选择daily_browser_detail明细表。


6.3.2 标准化日期字段格式、映射周区间文本
表输入组件输出端连线至「字段选择」组件,在元数据面板规范usage_date字段格式为yyyy-MM-dd;再添加「值映射」组件,读取标准化后的日期字段,新建输出字段week_range,将单条日期匹配对应周区间文本。


6.3.3 排序、分组完成去重活跃用户统计
值映射组件后添加「排序记录」组件,排序关键字段设置为browser_name、week_range升序;排序完成后接入分组组件,分组字段与排序字段保持一致,聚合规则为对user_id执行去重计数,生成active_user_count活跃用户数字段。


6.3.4 配置表输出入库并执行流程
分组组件输出端接入「表输出」组件,目标数据表填写browser_weekly_active,勾选裁剪表清空历史数据,完成字段映射后运行转换流写入统计数据。



6.4 使用频率分布表browser_frequency_stats加工
6.4.1 读取明细数据,按用户、浏览器分组汇总总秒数
新建转换流「使用频率分布数据抽取」,通过表输入组件读取daily_browser_detail全量数据;添加排序记录组件,以user_id、browser_name升序排序,接入分组组件汇总单用户单浏览器累计总秒数total_seconds。


6.4.2 配置常量与计算器完成秒转小时换算
分组组件后添加「增加常量」组件,新增常量字段hour_m_s,数据类型为整型,固定数值 3600;常量组件输出接入计算器组件,计算公式设置为 A/B,A 字段选择total_seconds、B 字段选择hour_m_s,生成保留两位小数的小时字段total_hours。


6.4.3 JS 脚本划分轻 / 中 / 重度用户分层
计算器组件后添加 JavaScript 代码组件,输入分层判定代码,点击获取变量自动识别字段。

var total_hours = total_hours;
var usage_level = '';
if (total_hours < 3) {
usage_level = '轻度';
} else if (total_hours >= 3 && total_hours < 10) {
usage_level = '中度';
} else {
usage_level = '重度';
}
提前在常量组件中预定义usage_level空字段,用于接收脚本输出分层标签。
6.4.4 二次分组统计各分层用户数量,写入数据表
JS 组件输出后添加排序记录组件,按browser_name、usage_level排序;接入分组组件统计每组去重用户数量,最终连接表输出组件写入browser_frequency_stats数据表,运行转换流完成加工。





6.5 多浏览器使用数量分布表browser_multi_usage加工
6.5.1 按用户 ID 分组统计单用户浏览器使用种类数
新建转换流「浏览器使用数量分布数据抽取」,表输入读取明细数据,排序记录组件以user_id升序排序;分组组件以user_id分组,对browser_name去重计数得到browser_cnt字段。




6.5.2 JS 脚本将数字计数转换为文字分类标签
分组后接入 JavaScript 代码组件,执行分类转换代码。

var browser_cnt = browser_cnt;
var browser_count = '';
if (browser_cnt == 1) {
browser_count = '1种';
} else if (browser_cnt == 2) {
browser_count = '2种';
} else {
browser_count = '3种及以上';
}
6.5.3 分组汇总各类用户数量并入库
添加排序记录组件以browser_count排序,分组统计各分类下用户总量,通过表输出组件写入browser_multi_usage数据表并执行流程。





6.6 工作日周末对比表browser_weekday_weekend加工
6.6.1 JS 脚本根据日期判定工作日 / 周末标签
新建转换流「浏览器工作日周末对比数据抽取」,表输入读取明细数据后接入 JavaScript 代码组件,通过日期对象判断星期,生成day_type字段。



var date = usage_date;
var dayOfWeek = date.getDay();
var day_type = "";
if (dayOfWeek >= 1 && dayOfWeek <= 5) {
day_type = "工作日";
} else {
day_type = "周末";
}
6.6.2 分组统计时长、用户数,换算总时长为小时
JS 组件输出后排序,关键字段为browser_name、day_type;分组组件聚合三项指标:单用户平均使用秒数avg_seconds、全部用户累计总秒数total_seconds、去重用户数user_count。复用常量 3600 与计算器组件,将总秒数换算为小时存储为total_duration_hour。




6.6.3 清理冗余中间字段后写入目标表
添加字段选择组件剔除换算过程中产生的临时常量、中间计算字段,连接表输出组件写入browser_weekday_weekend数据表,运行转换流。




6.7 全局核心指标表browser_overview加工
6.7.1 编写聚合 SQL 一次性计算四大全局指标
新建独立转换流,拖入表输入组件,数据库连接团队私有数据库,在 SQL 输入框填写全局指标聚合查询语句。


SELECT
ROUND(SUM(total_duration_sec) / 3600, 2) AS total_hours,
ROUND(SUM(total_duration_sec) / 3600 / COUNT(DISTINCT user_id), 2) AS avg_hours,
ROUND(
(SELECT COUNT(DISTINCT user_id) FROM daily_browser_detail
WHERE usage_date BETWEEN '2012-08-06' AND '2012-08-12'
) * 100.0 / COUNT(DISTINCT user_id), 2
) AS active_ratio,
ROUND(
(SELECT COUNT(*) FROM (
SELECT user_id FROM daily_browser_detail
WHERE usage_date BETWEEN '2012-05-07' AND '2012-07-08'
GROUP BY user_id
HAVING SUM(total_duration_sec) / 3600 > 30
) t) * 100.0 / COUNT(DISTINCT user_id), 2
) AS heavy_ratio
FROM daily_browser_detail
6.7.2 通过行转列、值映射转换为中文键值对格式
表输入输出接入行转列组件,将单行四字段数据拆分为多行键值结构;再添加值映射组件,将英文指标标识转换为中文指标名称。


6.7.3 写入核心指标数据表
配置表输出组件,目标表指定browser_overview,运行转换流完成全局指标入库。



6.8 用户画像统计表user_profile_stats完整加工流程
6.8.1 从公共资源导出demographic.csv属性文件
在平台顶部点击公共空间入口,切换至数据资源标签页,找到demographic.csv文件。

点击文件右上角更多操作按钮,选择导出功能,存储路径选定项目根目录,确认导出后刷新项目文件库,查看文件是否正常加载。

6.8.2 CSV 文件输入组件读取用户属性原始数据
新建转换流命名为「用户画像表加工」,画布拖入「CSV 文件输入」组件,浏览选中根目录下的demographic.csv文件,编码格式设置为 UTF-8,点击获取字段自动识别文件全部列。



6.8.3 常量 + 计算器计算用户年龄,JS 脚本完成年龄分段
CSV 组件输出接入增加常量组件,新增整型常量字段year,固定数值 2012;接入计算器组件,计算公式为 2012 减去出生年份字段,生成年龄字段age。


计算器后添加 JavaScript 组件,完成年龄区间划分。

var age_group = '';
if (age < 18) {
age_group = '<18';
} else if (age <= 25) {
age_group = '18-25';
} else if (age <= 35) {
age_group = '26-35';
} else {
age_group = '>35';
}
6.8.4 表输入读取行为明细数据,双数据集分别排序
画布新增表输入组件,读取daily_browser_detail行为明细表;创建两组排序记录组件,一组连接 CSV 属性数据、一组连接行为明细数据,排序关键字段分别为USERID、user_id,保证关联前数据集有序。



6.8.5 记录集左连接合并用户属性与浏览器行为数据
拖入「记录集连接」组件,两组排序后的数据集分别接入组件输入口,连接类型选择左外连接,匹配关键字段为明细表user_id、属性表USERID,完成行为数据与用户属性的关联匹配。

6.8.6 多维度分组统计各属性下用户数量
连接完成后添加排序记录组件,排序字段包含browser_name、GENDER、EDU、JOB、INCOME、PROVINCE、ISCITY、age_group;接入分组组件,以上述全部字段作为分组关键字,聚合规则为对user_id去重计数,生成user_count字段。


6.8.7 配置表输出组件写入画像表并运行
分组组件输出连接表输出组件,目标数据表填写user_profile_stats,勾选裁剪表,完成全部字段映射匹配,点击运行执行完整转换流。



6.8.8 加载数据库元数据,通过数据探查校验结果
转换流执行完毕后,打开数据库元数据面板,右键团队私有数据库执行加载元数据操作;切换至数据探查功能页面,依次打开本次实验产出的全部统计表,核对字段类型、数值范围、分组计数结果是否符合业务统计标准。



七、实验结果
1. 底层明细表产出:成功生成完整daily_browser_detail小时级用户行为明细表,完整承载800万条原始日志的聚合明细,无数据丢失、重复、空值异常。
2. 全部目标统计数据表创建完成:browser_overview、browser_weekly_active、browser_frequency_stats、browser_multi_usage、browser_weekday_weekend、user_profile_stats六张新增统计表结构完整,字段注释、数据类型与设计要求完全匹配,无建表报错。
3. 市场维度统计数据全部生成:
- browser_weekly_active完整覆盖全部统计周期的每周活跃用户数据,可直接支撑折线图展示活跃度变化;
- browser_frequency_stats完成全部浏览器轻度/中度/重度用户分层计数,分层规则判定无逻辑错误;
- browser_multi_usage清晰体现用户单浏览器、多浏览器使用人群分布;
- browser_weekday_weekend区分工作日、周末两类场景的使用时长差异,数值换算准确。
4. 用户画像聚合数据正常输出:user_profile_stats完成浏览器与用户全属性维度关联,可分别按性别、年龄、地域、学历等维度单独筛选统计,无用户ID关联缺失问题。
5. 数据可用性验证:所有产出统计表均为聚合后轻量化数据,相比原始明细表数据量缩减90%以上,完全满足可视化大屏快速读取需求,各图表可直接读取对应数据表,无需二次实时聚合计算。
八、问题与解决
8.1 分组统计后出现重复计数、用户数量虚高
现象:未在分组组件前添加排序组件,分组统计时同一用户被多次计算,最终用户总数远超实际样本量。
解决:所有分组聚合操作前强制增加「排序记录」组件,排序字段与分组字段保持完全一致,平台分组组件仅能对有序数据完成精准去重统计。
8.2 日期周区间映射错乱,部分日期无法匹配周范围文本
现象:部分日期转换后week_range字段为空,周活跃统计数据缺失。
解决:统一前置执行日期字段格式化,将usage_date标准化为yyyy-MM-dd字符串格式,再执行值映射匹配规则,规避日期格式不统一造成的匹配失败。
8.3 用户画像表关联后大量用户属性字段为空
现象:demographic用户属性表与行为明细表左连接后,大量浏览器行为记录无匹配用户性别、年龄数据。
解决:核对两张表user_id字段数据类型,统一设置为字符串VARCHAR类型,去除ID前后隐藏空格,重新执行关联操作,空属性字段占比下降至合理范围。
8.4 批量建表脚本执行提示数据表已存在报错
现象:重复运行建表转换流时,SQL提示数据表名称冲突,流程中断。
解决:在每条CREATE TABLE语句前增加DROP TABLE IF EXISTS语句,运行时自动删除历史旧表,再新建表结构,实现流程可重复执行。
九、 实验总结
本次实训依托Uniplore平台ETL组件,完成从原始日志清洗、底层明细表构建、多维度聚合统计、用户属性关联全链路数据加工,最终产出9张适配可视化大屏的标准化数据表,覆盖浏览器市场分析与多维度用户画像两大业务分析场景。
实操过程中熟练掌握表输入输出、排序分组、值映射、JS自定义逻辑、多表左连接、行列转换等核心零代码数据处理组件,明确数据加工基础规范:分组前必须排序、统一字段数据类型、提前做单位换算与分层判定、批量建表需兼容重复运行场景。
业务层面掌握可视化大屏的数据前置聚合设计思路,理解明细数据直接用于可视化的性能缺陷,学会从业务分析需求反向推导数据表结构、统计口径与分层规则,将数据处理操作和实际业务运营分析场景结合。
实训过程中出现的计数重复、关联空值、格式匹配失败等问题,均通过调整组件执行顺序、统一字段格式、完善SQL脚本得到解决,后续加工流程可进一步精简冗余组件,优化转换流运行效率,缩短大批量数据处理耗时。

4262

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



