news 2026/6/8 22:49:33

浏览器市场与用户画像分析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
浏览器市场与用户画像分析

助睿实验5-1:浏览器市场与用户画像分析-数据加工(2)

1 实验目的

本实验基于“用户-日-浏览器-小时”明细表,完成数据大屏所需的各项统计表加工,包括:

浏览器市场格局统计(覆盖率、使用时长)

浏览器周活跃趋势统计

浏览器使用频率分布统计

用户浏览器使用数量分布统计

浏览器工作日与周末使用对比统计

用户画像统计(性别、年龄、学历、职业、收入、居住地类型、省份分布)

2 实验环境

实验平台:助睿在线实验平台 https://lab.guilian.cn/

本次实验使用助睿数智(Uniplore)作为一站式数据科学平台。该平台覆盖从数据接入、ETL处理、机器学习建模到可视化展示的全链路零代码功能,适用于数据分析教学与企业数据加工场景。

助睿数智官网为 https://www.uniplore.com/

数据处理:助睿 ETL 数据集成平台

建模平台:助睿 AI 人工智能平台

数据规模:1000 用户,800 万 + 条行为记录,约 825MB

3 实验数据

本实验基于上个实验《浏览器用户行为分析与流失预测-数据加工》产出的数据,以及原始数据 demographic 用户属性表。

上个实验已输出的数据:

daily_browser_detail:用户-日-浏览器-小时明细表(将在本实验第4.1节中输出)

browser_coverage:浏览器市场覆盖率统计表

browser_hourly:浏览器时段活跃统计表

4 整体分析框架

4.1 我们要回答什么业务问题?

在制作数据大屏之前,我们需要先明确一个问题:大屏上要展示什么?

大屏的每个图表、每个数字,都需要有对应的数据来源。我们不能在大屏上直接查询原始明细表( behavior_events),因为:

原始明细表数据量大,查询慢,影响大屏加载速度

大屏需要的是聚合后的统计结果,不是原始明细

多个图表可能共用同一份聚合数据,提前加工可以避免重复计算

因此,在设计大屏之前,我们首先需要明确:我们要通过数据分析回答哪些业务问题?

业务问题 为什么重要

哪个浏览器用户最多? 了解市场领导者,判断自身产品的市场地位

哪个浏览器用户用得最久? 用户数多不代表粘性高,使用时长方能反映真实依赖度

用户活跃度在增长还是下降? 判断产品生命周期,及时发现衰退信号

用户什么时候最活跃? 优化推送和运营时机,在正确时间触达用户

用户是重度使用还是偶尔打开? 区分核心用户和边缘用户,制定差异化运营策略

用户同时用几个浏览器? 了解用户忠诚度,判断是否存在被竞品替代的风险

用户还用什么其他浏览器? 识别主要竞争对手,制定针对性竞争策略

工作日和周末使用习惯有何不同? 区分工作场景和娱乐场景,优化产品功能

核心用户是谁?(性别、年龄、职业) 明确目标用户群体,指导产品设计和营销方向

用户的教育水平如何? 影响产品复杂度设计,高学历用户可能接受更复杂的功能

用户的收入水平如何? 影响商业化策略,高收入用户付费意愿更强

用户分布在哪里?(城市、省份) 指导区域市场拓展和资源投放

4.2 选择哪些分析维度来回答这些问题?

根据上述业务问题,我们可以分为2个部分:市场分析与用户画像,这2个部分可以选择以下分析维度:

大屏一:浏览器市场行为分析

维度 回答的业务问题 核心指标

市场格局 哪个浏览器用户最多?哪个用得最久? 用户数、使用时长占比、人均时长

周活跃趋势 用户活跃度在增长还是下降? 每周活跃用户数

时段偏好 用户什么时候最活跃? 24小时活跃分布

使用频率 用户是重度还是轻度使用? 轻/中/重度用户占比

浏览器使用数量 用户同时用几个浏览器? 1种/2种/3种及以上用户占比

竞品重叠 用户还用什么其他浏览器? 同时使用两个浏览器的用户数

工作日vs周末 工作和娱乐时使用习惯有何不同? 工作日/周末使用时长对比

大屏一:浏览器用户画像分析

维度 回答的业务问题 核心指标

性别分布 男女用户比例如何? 男性/女性用户数及占比

年龄分布 哪个年龄段的用户最多? 各年龄段用户数及占比

学历分布 用户教育水平如何? 各学历层次用户数及占比

职业分布 哪些职业的用户最多? 各职业用户数及占比

收入分布 用户收入水平如何? 各收入段用户数及占比

居住地类型分布 城市用户还是乡镇用户多? 城市/城郊/乡村用户占比

地域分布 用户分布在哪些省份? 各省份用户数

4.3 需要加工哪些目标表?

根据上述分析维度,我们反推出需要加工的目标表:

大屏一目标表:

目标表 对应维度 数据来源

browser_overview 核心指标 daily_browser_detail

browser_coverage 市场格局 daily_browser_detail

browser_weekly_active 周活跃趋势 daily_browser_detail

browser_hourly 时段偏好 daily_browser_detail

browser_frequency_stats 使用频率 daily_browser_detail

browser_multi_usage 浏览器使用数量 daily_browser_detail

browser_cooccurrence 竞品重叠 daily_browser_detail

browser_weekday_weekend 工作日vs周末 daily_browser_detail

大屏二目标表:

目标表 对应维度 数据来源

user_profile_stats 性别、年龄、学历、职业、收入、省份、居住地类型 demographic、daily_browser_detail

4.4 目标表与数据来源关系

5 各目标表加工说明

目标表 用途 加工逻辑 数据来源

browser_coverage 回答“哪个浏览器用户最多?哪个用得最久?” 按 browser_name 分组,统计用户数、总时长、人均时长 daily_browser_detail(已在上个实验输出)

browser_hourly 回答“用户什么时候最活跃?” 按 browser_name、hour 分组,统计活跃用户数 daily_browser_detail(已在上个实验输出)

browser_weekly_active 回答“用户活跃度在增长还是下降?” 按 browser_name 和周编号分组,统计每周活跃用户数 daily_browser_detail

browser_frequency_stats 回答“用户是重度还是轻度使用?” 计算每个用户的周使用时长,按阈值(轻度<3h、中度3-10h、重度>10h)划分等级,再按浏览器分组统计 daily_browser_detail

browser_multi_usage 回答“用户同时用几个浏览器?” 统计每个用户使用多少种不同的浏览器,按1种、2种、3种及以上分组 daily_browser_detail

browser_cooccurrence 回答“用户还用什么其他浏览器?” 统计每对浏览器被同一用户使用的人数 daily_browser_detail

browser_weekday_weekend 回答“工作日和周末使用习惯有何不同?” 按浏览器和日期类型(工作日/周末)分组,统计人均使用时长 daily_browser_detail

user_profile_stats 回答“核心用户是谁?用户教育/收入水平如何?”… 按性别、年龄、学历、职业、收入、省份、居住地类型分组统计 demographic、daily_browser_detail

6 实验步骤

6.1 准备 用户-日-浏览器-小时 明细表

上个实验中的“互联网用户行为日志数据清洗抽取”转换流已经包含了生成明细数据的完整逻辑,但只输出了分支A和B(browser_coverage 和 browser_hourly)。我们需要将其复制一份,改为输出明细表,作为本实验后续加工的基础。

6.1.1 创建用户_日_浏览器_小时明细表

首先,我们先在团队私有数据库中创建用于存放 用户-日-浏览器-小时 明细表的数据表

打开上个实验创建的项目“互联网用户行为日志”

新建转换流“创建用户_日_浏览器_小时明细表”,拖入“执行一个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,所以,需要更正“排序记录 1”组件的排序字段与分组组件的分组字段一致,否则会出现多条重复数据

6.1.3 浏览器名称映射

在分组组件后添加“值映射”组件,“值映射”组件连接到原分支A的分组 1组件、复制发送到原分支B的排序记录 2组件

值映射组件按照以下添加映射

进程名 说明

iexplore.exe IE浏览器

360chrome.exe 360极速

360se.exe 360se

chrome.exe Google

sogouexplorer.exe 搜狗

QQBrowser.exe QQ浏览器

这里需要注意:上个实验的“4.5.3 过滤记录:筛选进程为主要浏览器的数据”步骤中

如果匹配条件是 process_name IN LIST “iexplore.exe;360chrome.exe;360se.exe;chrome.exe;sogouexplorer.exe;QQBrowser.exe”,则继续下一步骤

如果匹配条件与以上不同,则删除匹配值中的EXCEL.EXE、WINWORD.EXE、AlilM.exe,因为这3个不是浏览器

另外,转换流中的分组组件中聚合字段的聚合类型是“个数”的,需要改成“统计不同值的数量(N)”,并在分支A的“分组 1”组件前添加排序记录组件,按 process_name 升序排序

6.1.5 添加表输出组件

拖拽“表输出”组件到画布中,值映射组件连接到“表输出”组件

双击“表输出”组件,配置如下:

数据库连接:选择“团队私有数据库”

目标表:daily_browser_detail

勾选“裁剪表”,清空原有数据

勾选“指定数据库字段”,建立字段映射

6.1.6 执行转换流

击“运行”按钮,执行转换流

6.2 创建目标数据表

在团队私有数据库中创建本实验需要输出的目标表

新建转换流“创建浏览器大屏分析目标数据表”,拖拽“执行一个SQL脚本”组件

1920×945 50.2 KB

双击“执行一个SQL脚本”组件,数据库连接选择“团队私有数据库”,并输入以下SQL,使用DROP TABLE可以避免需要重新建表时语句报错:

-- 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.3 各浏览器周活跃趋势表数据抽取执行

目标:统计每个浏览器在第1-4周的每周活跃用户数

新建转换流“各浏览器周活跃趋势表数据抽取”,拖拽“表输入”组件画布中,数据库连接选择“团队私有数据库”,点击“获取SQL查询语句”,选择 daily_browser_detail 获取所有查询语句

这里我们需要将每个浏览器的使用日期转为周:5/7-5/13、6/4-6/10、7/2-7/8、8/6-8/12,可以使用值映射组件完成,但是在此之前,需要使用字段选择组件对usage_date进行格式转换。

拖拽字段选择组件到画布中,创建表输入组件到字段选择组件的连线

双击字段选择组件,点击“元数据”,右键插入,输入字段名称usage_date,类型为Date,格式为“yyyy-MM-dd”

再拖拽值映射组件,字段选择组件连接值映射组件

双击值映射组件,使用的字段名选择“usage_date”,目标字段名(空=覆盖)输入“week_range”,表示创建新字段week_range用来存储映射结果,接下来就插入行,将每个日期映射为对应的周区间

接下来我们按各浏览器、周分组统计用户数,分组之前需要对数据进行排序,避免统计结果出错。拖拽排序记录组件到画布中,创建值映射组件到排序记录组件的连线

排序记录组件设置为按照browser_name、week_range 升序排序

排序后拖拽分组组件,排序记录组件连接到分组组件

分组字段为browser_name、week_range,聚合时对user_id进行去重计数,得到active_user_count,因此,聚合配置中输入字段“active_user_count”,subject 为“user_id”,类型为“统计不同值的数量(N)”

最后拖入表输出组件,将分组聚合结果入库,表输出组件配置为:

数据库连接:选择“团队私有数据库”

目标表:browser_weekly_active

勾选“裁剪表”,清空原有数据

勾选“指定数据库字段”,建立字段映射

执行转换流:

6.4 各浏览器使用频率分布表数据抽取

目标:按轻/中/重度划分用户使用频率

新建转换流“使用频率分布数据抽取”,拖拽“表输入”组件画布中,数据库连接选择“团队私有数据库”,点击“获取SQL查询语句”,选择 daily_browser_detail 获取所有查询语句

接下来,我们统计每个用户使用各浏览器的使用时长,拖拽排序记录组件到画布中,创建表输入组件到排序记录组件的连线

排序记录组件设置为按照 user_id、browser_name 升序排序

排序后拖拽分组组件,排序记录组件连接到分组组件

分组组件的分组字段为 user_id、browser_name,总使用时长 = 每天总使用时长 total_duration_sec 求和

这样计算的总时长单位是秒,我们将其转换为小时更直观,小时 = 秒 ÷ 3600,由于我们的数据中没有3600这个字段,所以需要先增加这个常量字段。拖拽增加常量组件到画布中,分组组件连接到增加常量组件

增加常量组件配置中增加新字段“hour_m_s”,将其类型设置为 Integer ,并且值固定为 3600,如下

接下来,拖入计算器组件

通过计算器,计算小时,新增使用时长单位为小时的字段“total_hours”,计算公式为“A / B”,字段A为“total_seconds”,字段B为“hour_m_s”,保留2位小数

接下来,我们为使用频率划分等级。拖入JavaScript代码组件,计算器组件连接到JavaScript代码组件

双击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这个字段我们需要在之前的增加常量组件中新增:

接下来,我们就可以统计每个浏览器的各使用等级的用户数了

同样的,先拖入排序记录组件,将数据按照 browser_name、usage_level 升序排序

再拖入分组组件,按 browser_name、usage_level 分组,统计 user_count(user_id去重计数)

最后拖入表输出组件,将分组聚合结果入库,表输出组件配置为:

数据库连接:选择“团队私有数据库”

目标表:browser_frequency_stats

勾选“裁剪表”,清空原有数据

勾选“指定数据库字段”,建立字段映射

执行转换流:

6.5 各浏览器使用数量分布表数据抽取

目标:统计用户使用1种、2种、3种及以上浏览器的用户数

新建转换流“浏览器使用数量分布数据抽取”,拖拽“表输入”组件画布中,数据库连接选择“团队私有数据库”,点击“获取SQL查询语句”,选择 daily_browser_detail 获取所有查询语句

接下来,我们统计每个用户使用各浏览器的种类数量,拖拽排序记录组件到画布中,创建表输入组件到排序记录组件的连线

排序记录组件设置为按照 user_id 升序排序

排序后拖拽分组组件,排序记录组件连接到分组组件

分组组件的分组字段为 user_id,使用浏览种类数量 = 浏览器名称去重计数

接下来,我们划分浏览器数量等级。拖入JavaScript代码组件,计算器组件连接到JavaScript代码组件

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

}

接下来,我们就可以统计使用1种、2种、3种浏览器的用户数了

同样的,先拖入排序记录组件,将数据按照 browser_count 升序排序

再拖入分组组件,按 browser_count 分组,统计 user_count(user_id去重计数)

最后拖入表输出组件,将分组聚合结果入库,表输出组件配置为:

数据库连接:选择“团队私有数据库”

目标表:browser_multi_usage

勾选“裁剪表”,清空原有数据

勾选“指定数据库字段”,建立字段映射

执行转换流:

6.6 各浏览器工作日周末对比表数据抽取

目标:统计各浏览器工作日周末使用时长对比

新建转换流“浏览器工作日周末对比数据抽取”,拖拽“表输入”组件画布中,数据库连接选择“团队私有数据库”,点击“获取SQL查询语句”,选择 daily_browser_detail 获取所有查询语句

接下来,根据使用日期获取星期几,拖拽JavaScript代码组件到画布中,表输入组件连接JavaScript代码组件

双击JavaScript代码组件,如下以下代码,点击”获取变量”,自动获取代码中的变量

// 获取日期

var date = usage_date;

// 获取星期几(0=周日, 1=周一, ..., 6=周六)

var dayOfWeek = date.getDay();

// 判断工作日还是周末

var day_type = "";

if (dayOfWeek >= 1 && dayOfWeek <= 5) {

day_type = "工作日";

} else {

day_type = "周末";

}

接下来,我们就可以统计工作日和周末的使用时长和用户数了

同样的,先拖入排序记录组件

将数据按照 browser_name、 day_type升序排序

再拖入分组组件,按 browser_name、 day_type 分组

聚合:

avg_seconds= 平均使用时长(秒)

total_seconds = 总使用时长(秒)

user_count = COUNT(DISTINCT user_id)

平均使用时长单位是秒的数值不会太大,是比较好观察,但是总使用时长的单位是秒的话数值很大,不够直观,所以将其转为小时,参考“6.4 各浏览器使用频率分布表数据抽取”种计算小时的方法,使用增加常量组件和计算器组件来实现

在计算过程中出现了一些中间字段,我们使用字段选择组件来删除冗余字段

最后拖入表输出组件,将分组聚合结果入库,表输出组件配置为:

数据库连接:选择“团队私有数据库”

目标表:browser_weekday_weekend

勾选“裁剪表”,清空原有数据

勾选“指定数据库字段”,建立字段映射

执行转换流:

6.7 核心指标数据抽取

目标:将大屏顶部四个指标卡的数据存入一张通用的键值对表中

在以上数据抽取中,我们已经获取了各浏览器的用户数、使用时长、活跃用户数、重度用户数,但我们设计的核心指标是全局数据,除了使用时长,其他用户数相关的数据在不同浏览器之间是存在重叠的,所以需要重新计算。

用一个表输入组件,直接SQL一次性算出所有指标,然后通过列转行将一行转为四行

新建转换流“”,拖入表输入组件,数据库连接团队私有数据库,在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

接下来使用行转列组件将字段名称转为指标名称,字段值转为指标值

字段名称 key值 value字段

total_hours total_hours metric_value

avg_hours avg_hours metric_value

active_ratio active_ratio metric_value

heavy_ratio heavy_ratio metric_value

接下来使用值映射组件将指标名称映射为中文

最后使用表输出组件写入目标表 browser_overview

最后执行转换流即可

6.8 用户画像表加工

目标:统计每个浏览器按性别、年龄、学历、职业、收入、居住地类型的用户分布

6.8.1 获取人口属性信息表

用户画像表需要用户的属性信息,行为日志的数据中仅包含行为数据,缺少用户属性数据,因此需要获取数据集中的人口属性信息表 demographic.csv,行为日志数据与人口属性数据通过用户ID关联

本次实验已经将 demographic.csv 预先存放在实验平台的公共空间数据资源中,可以直接导出到我们的项目文件目库中

点击“公共空间”

点击tab选项“数据资源”,可以看到 demographic.csv

点击 demographic.csv 卡片右上角的“更多” - “导出”

选择导出到的目录,例如根目录

最后点击“确定”

刷新文件库的根目录,即可看到 demographic.csv

6.8.2 CSV文件输入:读取人口属性数据

新建转换流“用户画像表加工”,拖拽“CSV文件输入”组件到画布中

双击“CSV文件输入”组件,点击“浏览文件”按钮,在弹出的窗口中选择 demographic.csv,然后点击“确定”

列分隔符和封闭符保持不变,编码选择“UTF-8”

往下滑一点,在空白表格处右键点击“获取字段”

字段获取成功后点击“确认”

6.8.3 年龄分段

原人口属性数据中没有年龄字段,但是有出生年份,因此我们可以通过计算获取用户的年龄属性

首先我们拖入增加常量组件,增加常量字段“year”,值设为“2012”(数据是2012年的)

拖入“计算器”组件来计算用户在2012年的年龄,年龄 = 2012 - 出生年份,即:age = year - BIRTHDAY

接下来我们将年龄划分为四段:<18、18-25、26-35、>35

拖入JavaScript代码组件,计算器组件连接到JavaScript代码组件

双击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 表输入:读取用户_日_浏览器_小时明细数据

拖入“表输入”组件到画布中

双击“表输入”组件,数据库连接选择“团队私有数据库”,点击“获取SQL查询语句”

在弹出的窗口中,选择用户_日_浏览器_小时明细表 daily_browser_detail

系统提示选择“确认”

获取SQL查询语句后点击“确认”、

6.8.5 关联用户属性

记录集连接组件可以将两个表进行连接,就是数据库中的join操作。数据连接时注意两个连接的数据集是否存在同一个字段。

“记录集连接”组件之前需要先对数据进行排序,否则可能出错

我们先拖拽2个“排序记录”组件到画布中,分别创建“表输入”组件到“排序记录 1”组件的连线、“CSV文件输入”组件到“排序记录”组件的连线,其中“CSV文件输入”组件到“排序记录”组件的连线类型选择“主输出步骤”

双击“排序记录 1”组件,命名为“明细数据按用户ID排序”,在空白表格处右键点击“获取字段”

仅保留“user-id”,其他字段选中后右键点击“删除选中的行”

设置 user_id 升序排序后点击“确认”

同样的双击“排序记录”组件,命名为“用户属性数据按用户ID排序”,设置按 USERID 升序排序

接下来,两个数据就可以通过记录集连接组件来关联了,拖拽“记录集连接”组件到画布中,2个排序记录组件分别连接到记录集连接组件,因为数据已经排序了,右上角的提示可以忽略

双击“记录集连接”组件,第一个Transform选择“明细数据按用户ID排序”,第二个Transform选择“用户属性数据按用户ID排序”,连接类型选择“LEFT OUTER”

分别点击两个“获得连接字段”按钮,获取2个数据的字段

2个数据是通过用户ID关联的,所以第一个Transform的连接字段保留“user_id”,第二个Transform的连接字段保留“USERID”,其他字段通过删除选中的行来删除

6.8.6 统计用户数

分组统计之前,需要先对数据进行排序,拖入排序记录组件,记录集连接组件连接到排序记录组件,按照等下分组聚合的分组字段升序排序,即:browser_name、GENDER、EDU、JOB、INCOME、PROVINCE、ISCITY、age_group

拖入分组组件,排序记录组件连接到分组组件,按 browser_name、GENDER、EDU、JOB、INCOME、PROVINCE、ISCITY、age_group 分组,聚合 user_count = user_id (统计不同值的数量(N))

6.8.7 表输出

拖入表输出组件,将分组聚合结果入库,表输出组件配置为:

数据库连接:选择“团队私有数据库”

目标表:user_profile_stats

勾选“裁剪表”,清空原有数据

勾选“指定数据库字段”,建立字段映射

6.8.8 执行转换流

点击“运行”按钮

6.8.9 查看结果数据

点击“元数据”tab选项,右键团队私有数据库,点击“加载元数据”

点击“数据探查”,查看以上生成的目标表是否符合预期

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/8 22:46:08

MC68HC705J1A驱动93C56 EEPROM:Bit-Banging软件模拟SPI实战

1. 项目概述与核心价值在嵌入式开发领域&#xff0c;尤其是面对一些资源受限的经典8位微控制器时&#xff0c;我们常常会遇到一个现实问题&#xff1a;芯片本身没有集成硬件SPI或I2C等串行通信外设&#xff0c;但项目又需要使用外部的串行EEPROM来存储关键数据。这时候&#xf…

作者头像 李华
网站建设 2026/6/8 22:46:07

嵌入式低功耗实战:从Cortex-M0+睡眠模式到KM35Z75 VLLS3微安级功耗实现

1. 项目概述在电池供电的嵌入式设备开发中&#xff0c;如何让设备在“待机”时几乎不耗电&#xff0c;是每个工程师都必须面对的硬骨头。你可能已经熟悉了让MCU进入普通睡眠模式&#xff0c;但看着数据手册上宣称的“微安级”待机电流&#xff0c;自己实测却总是毫安级别&#…

作者头像 李华
网站建设 2026/6/8 22:44:12

【飞机】基于数据驱动的多传感器飞机健康监测系统附Matlab代码

​✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书…

作者头像 李华
网站建设 2026/6/8 22:43:59

Nest.js 基础-8-Hello,NestJS

这一篇使用 NestJS CLI 初始化项目&#xff0c;详解项目目录结构、核心配置、运行脚本&#xff0c;跑通第一个经典的 Hello World建立对 NestJS 项目的整体认知。一、项目初始化与整体目录概述通过 NestJS CLI 快速初始化空白项目&#xff0c;初始化完成后使用 VS Code 打开工程…

作者头像 李华
网站建设 2026/6/8 22:39:20

基于LPC51U68与SCTimer的I2C总线鲁棒性测试与错误注入实战

1. 项目概述 在嵌入式开发中&#xff0c;I2C总线因其简洁的两线制&#xff08;SCL时钟线和SDA数据线&#xff09;和灵活的多主从架构&#xff0c;成为了连接传感器、EEPROM、RTC等外设的首选协议。然而&#xff0c;在实际的工业环境或复杂的电磁场景下&#xff0c;I2C总线极易受…

作者头像 李华
网站建设 2026/6/8 22:38:28

车辆信息安全之《诊断》

&#x1f527; 车载诊断协议深解&#xff1a;从 OBD 溯源到 UDS 核心机制 &#x1f4cc; 前言&#xff1a;两种诊断协议&#xff0c;一个共同目标 如果你拆开一辆现代汽车的诊断接口&#xff0c;插上一台通用扫描仪&#xff0c;你能读到发动机转速、故障码、氧传感器数据——这…

作者头像 李华