【助睿实验指导】实验5:浏览器市场与用户画像分析-数据加工
实验5-1 浏览器市场与用户画像分析-数据加工(2)实验报告
一、实验目的
基于上期实验生成的用户行为明细数据,依托助睿Uniplore平台ETL组件完成多维度聚合统计表开发,加工大屏展示所需统计数据:浏览器市场规模、周活跃走势、用户使用轻重分层、用户多浏览器选用分布、工作日与周末使用差异、多维度用户画像数据;理解业务需求→指标拆分→数据表设计→ETL流程开发→数据落地全链路数据分析思路,熟练掌握零代码ETL各类组件实操。
二、实验环境
1. 实训平台:助睿数智Uniplore在线实训平台:https://lab.guilian.cn/
2. 开发工具:平台内置ETL数据集成模块;
3. 数据库:团队私有MySQL数据库;
4. 数据源:上期产出`daily_browser_detail、browser_coverage、browser_hourly`,公共资源`demographic.csv`用户属性文件;
5. 数据体量:1000个用户、800万+原始行为日志,原始文件大小825MB。
三、实验数据说明
1. 行为明细数据:`daily_browser_detail(用户-日-浏览器-小时明细表)`,字段:user_id、usage_date、browser_name、hour、total_duration_sec、active_count,是全部统计表格的基础数据源;
2. 历史统计表:`browser_coverage`浏览器市场统计表、`browser_hourly`分时活跃统计表(上期已完成);
3. 用户画像数据源:demographic.csv,存储用户ID、出生年份、性别、学历、职业、收入、省份、城乡类型,用于关联行为数据生成用户画像。
四、整体分析框架
4.1 业务问题梳理
结合可视化大屏展示需求确定分析问题:
1. 市场规模:哪个浏览器用户基数大、用户使用时长更高?
2. 发展趋势:各浏览器每周活跃用户增减,判断产品生命周期;
3. 用户分层:区分轻度、中度、重度使用者,精细化运营;
4. 产品忠诚度:单个用户使用几款浏览器,评估竞品抢占市场情况;
5. 使用场景:工作日、周末使用习惯差异,区分办公/休闲使用场景;
6. 用户画像:从性别、年龄、学历、收入、地域锁定核心用户群体。
4.2 分析维度划分
1. 浏览器市场分析:市场格局、周活跃趋势、时段分布、使用频率分级、多浏览器使用分布、工作日周末对比;
2. 用户画像分析:性别、年龄段、学历、职业、收入水平、城乡类型、省份地域。
4.3 目标数据表清单
|表名|统计内容|数据源|
|----|----|----|
|browser_overview|系统全局核心汇总指标|daily_browser_detail|
|browser_weekly_active|各浏览器每周活跃用户|daily_browser_detail|
|browser_frequency_stats|轻/中/重度用户数量统计|daily_browser_detail|
|browser_multi_usage|使用1/2/3种及以上浏览器用户数|daily_browser_detail|
|browser_weekday_weekend|工作日、周末使用指标对比|daily_browser_detail|
|user_profile_stats|全维度用户画像统计|daily_browser_detail+demographic.csv|
4.4 数据加工逻辑
明细层原始数据粒度极细,无法直接用于大屏查询,需要分组聚合、字段计算、数据关联、条件分层,压缩为聚合指标存入统计表,实现大屏快速查询。
五、详细实验操作步骤
5.1 准备用户_日_浏览器_小时明细表daily_browser_detail

5.1.1 创建数据表
1. 在项目空间新建转换流,命名:创建用户_日_浏览器_小时明细表;

2. 拖拽【执行一个SQL脚本】组件至画布;
3. 数据库连接选择「团队私有数据库」,填入建表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='用户_日_浏览器_小时明细表';
```

4. 点击运行按钮,在数据库完成建表。
5.1.2 复制原有清洗转换流
1. 打开上期项目「互联网用户行为日志」,找到转换流:互联网用户行为日志数据清洗抽取;
2. 右键复制、在项目根目录右键粘贴,重命名:输出用户日浏览器小时明细表;

3. 修改原有【排序记录】组件排序字段,与分组组件分组字段保持一致(user_id、usage_date、process_name、hour),防止分组重复统计。
5.1.3 浏览器进程名称映射配置
1. 在分组组件后新增【值映射】组件,接入原有A、B两条数据分支;

2. 配置进程名→浏览器中文名映射:
iexplore.exe→IE浏览器、360chrome.exe→360极速、360se.exe→360se、chrome.exe→Google、sogouexplorer.exe→搜狗、QQBrowser.exe→QQ浏览器;

- 打开过滤组件,删除EXCEL.EXE、WINWORD.EXE、AlilM.exe非浏览器进程过滤条件;

4. 修改分组聚合规则:统计活跃数量字段改为【统计不同值的数量(N)】,在分支A分组前补充排序组件。
5.1.5 配置表输出组件
1. 画布添加【表输出】组件,值映射组件连线至表输出;

- 配置:连接=团队私有库、目标表=daily_browser_detail、勾选「裁剪表」清空存量数据;

3. 进入字段映射页面,一一匹配ETL字段与数据表字段。
5.1.6 执行转换流
点击运行,将清洗、映射后的明细数据批量写入daily_browser_detail表。
5.2 批量创建全部目标统计表
1. 新建转换流:创建浏览器大屏分析目标数据表;

2. 拖拽【执行SQL脚本】组件,绑定团队私有库;
3. 粘贴全部6张统计表DROP+CREATE建表SQL;
4. 执行脚本,一次性在数据库生成所有业务统计表。
5.3 各浏览器周活跃趋势表(browser_weekly_active)加工
1. 新建转换流:各浏览器周活跃趋势表数据抽取;
2. 添加【表输入】组件,连接私有库,选择daily_browser_detail全量数据;

3. 添加【字段选择】组件,规范usage_date字段格式为yyyy-MM-dd;
4. 添加【值映射】组件,新建字段week_range,把零散日期映射为对应周区间(5/7-5/13等);
5. 添加【排序记录】,排序字段:browser_name、week_range;

- 添加【分组】组件,分组键:browser_name、week_range,聚合:user_id去重计数=active_user_count;

- 添加【表输出】,目标表browser_weekly_active、勾选裁剪表、字段映射;

8. 运行转换流,数据入库。
5.4 浏览器使用频率分布表(browser_frequency_stats)加工
1. 新建转换流:使用频率分布数据抽取,表输入读取daily_browser_detail;

- 排序组件:按user_id、browser_name升序;

- 分组组件:分组user_id+browser_name,sum(total_duration_sec)得到单用户单浏览器总秒数;

- 新增【增加常量】组件,添加常量字段hour_m_s=3600;

- 【计算器】组件:total_hours=total_duration_sec/hour_m_s,保留2位小数;

- 【JavaScript脚本】组件,根据total_hours划分等级:<3h轻度、3~10h中度、>10h重度,生成usage_level;

- 再次排序:browser_name、usage_level,分组统计各等级用户去重数量;

- 表输出写入browser_frequency_stats,执行流程。

5.5 浏览器使用数量分布表(browser_multi_usage)加工
1. 新建转换流:浏览器使用数量分布数据抽取,表输入读取明细;

- 排序:user_id;分组:按user_id,distinct统计浏览器种类数量browser_cnt;

3. JS脚本判断:1→1种、2→2种、≥3→3种及以上,生成browser_count;
4. 排序+分组:按browser_count统计用户总数user_count;

5. 表输出写入browser_multi_usage并执行。
5.6 工作日周末对比表(browser_weekday_weekend)加工
1. 新建转换流:浏览器工作日周末对比数据抽取;表输入读取明细;
2. JS组件通过usage_date.getDay()获取星期:周一至周五=工作日,周六周日=周末,生成day_type;
3. 排序:browser_name、day_type;分组统计:总时长、平均秒数、去重用户数;

- 常量+计算器:总秒数/3600换算总小时;

- 字段选择删除中间冗余字段;

6. 表输出写入browser_weekday_weekend,运行。

5.7 核心指标表browser_overview加工
1. 新建转换流,表输入写入聚合SQL,一次性查询总时长、人均时长、活跃占比、重度用户占比;

2. 添加【行转列】组件,把单行多字段数据转为多行键值数据;
3. 值映射:英文指标名替换为中文指标名称;
4. 表输出写入browser_overview,执行入库。

5.8 用户画像表user_profile_stats加
5.8.1 导入demographic.csv文件
平台公共空间→数据资源→找到demographic.csv→导出至项目文件目录。

5.8.2 CSV文件输入载入数据
新建转换流:用户画像表加工,拖拽【CSV文件输入】,选中项目内demographic.csv,编码UTF-8,自动获取全部字段。

5.8.3 出生年份换算年龄+年龄分段
1. 增加常量组件:固定年份=2012;

2. 计算器:age=2012-BIRTHDAY;
3. JS分段:<18、18-25、26-35、>35,生成age_group。

5.8.4 读取行为明细数据
新增表输入组件,读取daily_browser_detail全量数据。

5.8.5 两张数据集关联(LEFT JOIN)
1. 两条数据流分别添加【排序记录】:明细按user_id排序、属性表按USERID排序;
2. 添加【记录集连接】,左外连接,关联字段:user_id=USERID,实现行为数据与用户属性拼接。
5.8.6 多维度分组统计
1. 排序组件:browser_name、gender、age_group、edu、job、income、city_type、province;
2. 分组组件:以上字段分组,user_id去重计数得到user_count。
5.8.7 表输出入库
配置表输出,目标表user_profile_stats、裁剪原表、字段一一映射。
5.8.8 运行+数据校验
1. 执行整个画像ETL流程;
2. 数据库右键加载元数据,打开数据探查,核对各分类用户数量是否合理。
六、实验结果
1. 数据成果:顺利完成6张统计业务表+1张明细数据表,所有数据表字段规范、数据正常入库,全部指标可支撑可视化大屏调用;
2. 技术成果:熟练掌握表输入、值映射、JS脚本、分组聚合、记录集连接、字段运算、表输出等Uniplore ETL核心组件;掌握明细→聚合的数据仓库分层思想;
3. 业务成果:学会从大屏业务需求反向拆解指标、设计数据表、落地ETL开发的完整数据分析流程。
七、实验总结与问题
1. 关键注意点:分组聚合前必须排序,否则数据重复汇总出错;日期运算、数值单位换算统一使用计算器/JS组件,方便后续修改维护;
2. 易错问题:进程名筛选误保留非浏览器程序导致脏数据、关联前未排序造成JOIN数据缺失;
3. 收获:理解ETL在数据分析中的承上启下作用,原始明细通过清洗、计算、聚合变成可落地的业务指标。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)