欢迎光临
我们一直在努力

【ETL 全流程实战】浏览器用户行为数据分析(附配置代码!!!)

第一部分:浏览器市场与用户画像分析 – 数据加工(2)

1. 实验目的

基于“用户-日-浏览器-小时”明细表,完成数据大屏所需的各项统计表加工,包括:浏览器市场格局、周活跃趋势、使用频率分布、使用数量分布、工作日vs周末对比、用户画像统计。

2. 实验环境

  • 平台:助睿在线实验平台(https://lab.guilian.cn/)
  • 工具:助睿数智 ETL 数据集成平台
  • 数据规模:1000用户,800万+行为记录

3. 整体分析框架

业务问题对应目标表
哪个浏览器用户最多?用得最久? browser_coverage(已产出)
用户活跃度在增长还是下降? browser_weekly_active
用户是重度还是轻度使用? browser_frequency_stats
用户同时用几个浏览器? browser_multi_usage
工作日和周末使用习惯有何不同? browser_weekday_weekend
核心指标卡片 browser_overview
用户画像(性别、年龄、学历等) user_profile_stats

4. 实验步骤

4.1 准备基础明细表 daily_browser_detail

4.1.1 创建目标数据表

  • 新建转换流“创建用户_日_浏览器_小时明细表”
  • 拖入“执行一个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;

  • 点击“运行”按钮执行

4.1.2 复制并修改转换流

  • 找到上个实验的“互联网用户行为日志数据清洗抽取”转换流 → 右键“复制” → 粘贴 → 重命名为“输出用户日浏览器小时明细表”
  • 关键修正:双击“排序记录 1”组件,将排序字段修改为:user_idusage_dateprocess_namehour(与分组组件保持一致)

4.1.3 添加浏览器名称映射

  • 在分组组件后添加“值映射”组件
  • 配置映射关系:

进程名映射为
iexplore.exe IE浏览器
chrome.exe Google
360chrome.exe 360极速
360se.exe 360se
sogouexplorer.exe 搜狗
QQBrowser.exe QQ浏览器

4.1.4 添加表输出

  • 拖入“表输出”组件,配置:
    • 数据库连接:团队私有数据库
    • 目标表:daily_browser_detail
    • 勾选“裁剪表”
    • 勾选“指定数据库字段”,建立字段映射
  • 点击“运行”执行转换流


4.2 创建所有目标数据表
  • 新建转换流“创建浏览器大屏分析目标数据表”
  • 拖入“执行一个SQL脚本”组件,执行以下SQL(创建6张表):

— 1. 核心指标概览表
CREATE TABLE `browser_overview` (
`metric_name` VARCHAR(50) NOT NULL,
`metric_value` DECIMAL(12,2) NOT NULL
);

— 2. 各浏览器周活跃趋势表
CREATE TABLE `browser_weekly_active` (
`browser_name` VARCHAR(50) NOT NULL,
`week_range` VARCHAR(20) NOT NULL,
`active_user_count` INT NOT NULL
);

— 3. 浏览器使用频率分布表
CREATE TABLE `browser_frequency_stats` (
`browser_name` VARCHAR(50) NOT NULL,
`usage_level` VARCHAR(10) NOT NULL,
`user_count` INT NOT NULL
);

— 4. 用户使用浏览器数量分布表
CREATE TABLE `browser_multi_usage` (
`browser_count` VARCHAR(10) NOT NULL,
`user_count` DECIMAL(5,2) NOT NULL
);

— 5. 浏览器工作日周末对比表
CREATE TABLE `browser_weekday_weekend` (
`browser_name` VARCHAR(50) NOT NULL,
`day_type` VARCHAR(10) NOT NULL,
`avg_duration_sec` INT NOT NULL,
`total_duration_hour` BIGINT NOT NULL,
`user_count` INT NOT NULL
);

— 6. 用户画像统计表
CREATE TABLE `user_profile_stats` (
`browser_name` VARCHAR(50) NOT NULL,
`gender` VARCHAR(10),
`age_group` VARCHAR(10),
`edu` VARCHAR(50),
`job` VARCHAR(50),
`income` VARCHAR(50),
`city_type` VARCHAR(10),
`province` VARCHAR(50),
`user_count` INT NOT NULL
);

  • 点击“运行”执行


4.3 各浏览器周活跃趋势表
配置项内容
数据源 daily_browser_detail
分组字段 browser_name、week_range
聚合 user_id 去重计数 → active_user_count
目标表 browser_weekly_active

步骤:

  • 新建转换流“各浏览器周活跃趋势表数据抽取”
  • 拖入“表输入” → 选择 daily_browser_detail
  • 拖入“字段选择” → 在“元数据”页,将 usage_date 类型设为 Date
  • 拖入“值映射” → 将日期映射为周区间(如 2012-05-07 → 5/7-5/13)【总的需要转换为:5/7-5/13、6/4-6/10、7/2-7/8、8/6-8/12,不匹配的数据建议设为“其他”,避免空值报错!】
  • 拖入“排序记录” → 按 browser_name、week_range 升序
  • 拖入“分组” → 配置分组字段和聚合
  • 拖入“表输出” → 写入目标表,勾选“裁剪表”

  • 4.4 各浏览器使用频率分布表
    配置项内容
    数据源 daily_browser_detail
    中间计算 每用户每浏览器总时长 → 转小时 → 分等级(<3h/3-10h/>10h)
    分组字段 browser_name、usage_level
    聚合 user_id 去重计数 → user_count
    目标表 browser_frequency_stats

    具体组件配置:

    • 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 = '重度';
    }


    4.5 各浏览器使用数量分布表
    配置项内容
    数据源 daily_browser_detail
    中间计算 每用户使用浏览器种类数 → 分等级(1种/2种/3种及以上)
    分组字段 browser_count
    聚合 user_id 去重计数
    目标表 browser_multi_usage

    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种及以上';
    }

    • browser_count 升序排列


    4.6 各浏览器工作日周末对比表
    配置项内容
    数据源 daily_browser_detail
    中间计算 根据日期判断工作日/周末
    分组字段 browser_name、day_type
    聚合 平均时长、总时长(秒转小时)、用户数
    目标表 browser_weekday_weekend

    JavaScript代码(判断工作日/周末):

    var date = usage_date;
    var dayOfWeek = date.getDay();
    var day_type = "";
    if (dayOfWeek >= 1 && dayOfWeek <= 5) {
    day_type = "工作日";
    } else {
    day_type = "周末";
    }


    4.7 核心指标数据抽取
    配置项内容
    数据源 daily_browser_detail(一次性SQL计算)
    处理方式 列转行 → 指标名映射为中文
    目标表 browser_overview

    核心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

    total_hours

    total_hours

    metric_value

    avg_hours

    avg_hours

    metric_value

    active_ratio

    active_ratio

    metric_value

    heavy_ratio

    heavy_ratio

    metric_value


    4.8 用户画像表加工

    4.8.1 导入人口属性数据

    • 进入“公共空间” → “数据资源” → 找到 demographic.csv
    • 点击“更多” → “导出” → 选择根目录 → “确定”

    4.8.2 构建转换流

  • 新建转换流“用户画像表加工”
  • 拖入“CSV文件输入” → 读取 demographic.csv → 点击“获取字段”,分隔符为英文逗号
  • 拖入“增加常量” → 新增字段 year = 2012
  • 拖入“计算器” → 计算年龄:age = year – BIRTHDAY
  • 拖入“JavaScript代码” → 划分年龄段
  • 拖入“表输入” → 读取 daily_browser_detail
  • 分别对两个数据源按 user_id 排序
  • 拖入“记录集连接” → 连接类型选择“LEFT OUTER”,连接字段均为用户ID
  • 拖入“排序记录” → 按所有分组字段排序
  • 拖入“分组” → 分组字段:browser_name、GENDER、EDU、JOB、INCOME、PROVINCE、ISCITY、age_group;聚合:user_id去重计数
  • 拖入“表输出” → 写入 user_profile_stats,勾选“裁剪表”
  • 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';

    排序记录组件:共8个排序条件

    1

    browser_name

    0

    2

    GENDER

    0

    3

    EDU

    0

    4

    JOB

    0

    5

    INCOME

    0

    6

    PROVINCE

    0

    7

    ISCITY

    0

    8

    age_group

    0

    分组字段同排序字段,共8个:


    4.9 验证结果
    • 右键点击“团队私有数据库” → “加载元数据”
    • 点击“数据探查”,查看各目标表数据是否符合预期


    • 输出表汇总
    目标表内容
    browser_weekly_active 各浏览器每周活跃用户数
    browser_frequency_stats 各浏览器轻/中/重度用户分布
    browser_multi_usage 用户使用1/2/3+种浏览器的数量分布
    browser_weekday_weekend 各浏览器工作日vs周末使用时长对比
    browser_overview 总时长、人均时长、周活跃占比、重度用户占比
    user_profile_stats 各浏览器按性别/年龄/学历/职业/收入/地域的用户分布

    第二部分:浏览器市场分析——大屏静态布局制作

    • 可视化工具:助睿Max(数据大屏)
    • 实验数据:
    模块子模块指标项组件关联数据表备注
    数据概览 浏览器市场 总使用时长 指标卡 browser_coverage 所有用户累计使用时长(小时)
    人均使用时长 指标卡 browser_coverage 总使用时长 / 覆盖用户数(小时/周)
    活跃用户占比 指标卡 browser_coverage 周活跃用户数 / 覆盖用户数
    重度用户占比 指标卡 browser_frequency_stats 使用时长>10小时/周的用户占比
    市场格局 用户规模 用户数 柱状图 browser_coverage 展示6个浏览器用户数
    使用规模 使用时长 饼图 browser_coverage 展示各浏览器使用时长占比
    使用粘性 人均使用时长 柱状图 browser_coverage
    用户行为 时间趋势 周活跃趋势 折线图 browser_weekly_active 展示第1-4周各浏览器活跃用户数变化
    使用习惯 使用频率分布 堆叠柱状图 browser_frequency_stats 轻/中/重度用户在各浏览器的占比
    时段偏好 全天时段 24小时活跃分布 折线图 browser_hourly X轴小时,Y轴活跃用户数,不同颜色代表不同浏览器
    周内对比 工作日vs周末 分组柱状图 daily_browser_detail 对比工作日和周末的使用时长
    竞争关系 使用数量 浏览器使用数量分布 饼图 browser_multi_usage 用户使用1种/2种/3种及以上浏览器的比例

    • 进入大屏管理中心,首先添加我们所需的数据源。

    • 点击“新建大屏”

    • 进入大屏设计界面,使用组件完成静态大屏设计。

    第三部分:浏览器市场分析——大屏数据接入

    目的:使用助睿Max的蓝图编辑器,将之前实验加工好的数据表接入到大屏的各个图表组件中,使图表能够动态展示真实数据。

    • 组件导入到蓝图编辑器后,可以为该组件配置交互。

    • 切换至蓝图编辑器

    • 依次配置好所有节点

    • 保存后发布效果应如图:

    第四部分:实验总结

    问题分析:本次实验中主要遇到了周活跃趋势表week_range字段空值入库报错问题,主要原因是按照设置的4个范围映射字段后,其余没有包含的字段将输出为NULL值,不符合建表时的非空约束,导致工作流无法正常运行。

    解决方式:我们根据日志定位到了输出为NULL的组件,在“不匹配时的默认值”设为“其他”,既不影响我们的映射,也不会造成空值。

    本次实验在之前的数据集成相关操作外,还拓展了数据大屏的设计和数据接入方面的实践,很新奇也不太熟练,但在一步步配置中慢慢有理解到“为什么这样设置?”、“如何将业务问题转换为设计的思维”等等,助睿平台在学习中给我们提供了很好的学习实践平台和资源。

    赞(0)
    未经允许不得转载:171主机测评 » 【ETL 全流程实战】浏览器用户行为数据分析(附配置代码!!!)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址