一、实验背景
1.1、实验目的
本实验基于“用户-日-浏览器-小时”明细表,完成数据大屏所需的各项统计表加工;同时使用助睿Max 数据大屏制作浏览器市场行为分析大屏;最后,再使用助睿Max的蓝图编辑器,将之前实验加工好的数据表接入到大屏的各个图表组件中,使图表能够动态展示真实数据。
1.2、实验环境
- 实验平台:助睿在线实验平台 https://lab.guilian.cn/
本次实验使用助睿数智(Uniplore)作为一站式数据科学平台。该平台覆盖从数据接入、ETL处理、机器学习建模到可视化展示的全链路零代码功能,适用于数据分析教学与企业数据加工场景。 - 助睿数智官网为 https://www.uniplore.com/
二、实验步骤
2.1、准备 用户-日-浏览器-小时 明细表
由于在上个实验中的“互联网用户行为日志数据清洗抽取”转换流已经包含了生成明细数据的完整逻辑,但只输出了分支A和B(browser_coverage 和 browser_hourly)。因此需要将其复制一份,改为输出明细表,作为本实验后续加工的基础。
2.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 COMMENT='用户_日_浏览器_小时明细表';
相应的配置界面如下:
最后,再点击“运行”按钮,执行转换流即可。
2.1.2、复制转换流
在上个实验的项目中,找到“互联网用户行为日志数据清洗抽取”转换流,右键选择“复制”。再右键根目录,点击“粘贴”,并重命名为“输出用户日浏览器小时明细表”。同时,由于上个实验中“排序记录 1”组件仅按照 process_name 升序排序,而分组组件的分组字段是:user_id、usage_date、process_name、hour。所以,需要更正“排序记录 1”组件的排序字段与分组组件的分组字段一致,否则会出现多条重复数据。相应的配置界面如下:
2.1.3、浏览器名称映射
在分组组件后添加“值映射”组件,并将“值映射”组件连接到原分支A的分组 1组件、复制发送到原分支B的排序记录 2组件。双击该组件进行配置,其中值映射组件可按照以下添加映射:
对应的配置界面如下:
另外,转换流中的分组组件中聚合字段的聚合类型是“个数”的,需要改成“统计不同值的数量(N)”。如下图:
并在分支A的“分组 1”组件前添加排序记录组件,按 process_name 升序排序。如下图:
2.1.4、添加表输出组件
拖拽“表输出”组件到画布中,并创建值映射组件到“表输出”组件的连线。再双击该组件进行配置,其中相应的配置如下:
- 数据库连接:选择“团队私有数据库”。
- 目标表:daily_browser_detail
- 勾选“裁剪表”和“指定数据库字段”
4.在数据库字段获取相应的字段。可参考如下:
最后,再点击“运行”按钮,执行转换流即可。
2.2、 创建目标数据表
新建转换流“创建浏览器大屏分析目标数据表”,拖拽“执行一个SQL脚本”组件。再双击该组件进行配置,其中数据库连接选择“团队私有数据库”,并输入以下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='用户画像统计表';
相应的配置界面如下;
最后,点击“运行”按钮,执行转换流即可。
2.3、各浏览器周活跃趋势表数据抽取执行
新建转换流“各浏览器周活跃趋势表数据抽取”,拖拽“表输入”组件至画布中。再双击该组件进行配置,其中数据库连接选择“团队私有数据库”,点击“获取SQL查询语句”,选择 daily_browser_detail 获取所有查询语句。对应的配置界面如下:
拖拽字段选择组件到画布中,创建表输入组件到字段选择组件的连线。再双击字段选择组件进行配置,点击“元数据”,右键插入,输入字段名称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
- 勾选“裁剪表”和“指定数据库字段”
4.在数据库字段中插入相应的值。可参考如下:
最后,再执行该转换流即可。
2.4、各浏览器使用频率分布表数据抽取
新建转换流“使用频率分布数据抽取”,拖拽“表输入”组件画布中。再双击该组件进行配置,其中数据库连接选择“团队私有数据库”,点击“获取SQL查询语句”,选择 daily_browser_detail 获取所有查询语句。接下来,再拖拽排序记录组件到画布中,创建表输入组件到排序记录组件的连线。双击该组件进行配置,其中排序记录组件设置为按照 user_id、browser_name 升序排序。对应的配置界面如下:
再拖拽分组组件,创建排序记录组件到分组组件的连线。其中该组件的相应配置界面如下:
接着拖拽增加常量组件到画布中,创建分组组件到增加常量组件的连线。在增加常量组件配置中增加新字段“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 = '重度';
}
随后,拖入排序记录组件,创建JavaScript代码组件到排序记录组件的连线,连接类型选择”主步骤输出”。再对该组件进行配置,其中要将数据按照 browser_name、usage_level 升序排序。相应的配置界面如下:
再拖入分组组件,并创建排序记录1组件到分组组件的连线。接着按 browser_name、usage_level 分组,统计 user_count(user_id去重计数)。如下图所示:
最后拖入表输出组件,创建分组1组件到表输出组件的连线。接着将分组聚合结果入库,表输出组件配置如下:
- 数据库连接:选择“团队私有数据库”
- 目标表:browser_frequency_stats
- 勾选“裁剪表”和“指定数据库字段”
4.在数据库字段中插入相应的值,如下图:
最后,再执行该转换流即可。
2.5、各浏览器使用数量分布表数据抽取
新建转换流“浏览器使用数量分布数据抽取”,接着拖拽“表输入”组件到画布中。再对其进行配置,其中数据库连接选择“团队私有数据库”,点击“获取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种及以上';
}
接着再拖入排序记录组件,创建JavaScript代码组件到排序记录1组件的连线。其中要将数据按照 browser_count 升序排序。如下所示:
再拖入分组组件,创建排序记录1组件到分组1组件的连线。其中要按 browser_count 分组,统计 user_count(user_id去重计数),如下图:
最后拖入表输出组件,将分组聚合结果入库,表输出组件配置如下:
- 数据库连接:选择“团队私有数据库”
- 目标表:browser_multi_usage
- 勾选“裁剪表”和“指定数据库字段”
4.在数据库字段中插入相应的值。可参考如下:
最后在执行该转换流即可。
2.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 = "周末";
}
再拖入排序记录组件,创建JavaScript代码组件到排序记录组件的连线,连线的类型选择为”主步骤输出”,再将数据按照 browser_name、 day_type升序排序。如下图所示:
再拖入分组组件,创建排序记录组件到分组组件的连线。其中,该组件的配置界面可参考如下:
再参考“2.4 各浏览器使用频率分布表数据抽取”中计算小时的方法,使用增加常量组件和计算器组件来实现,相关的配置界面如下:
再拖拽一个字段选择组件,创建计算器组件到字段选择组件的连线。该组件的相关配置界面如下:
最后再拖入表输出组件,创建字段选择组件到表输出组件的连线,连线类型选择”主步骤输出”。其相关配置如下:
- 数据库连接:选择“团队私有数据库”
- 目标表:browser_weekday_weekend
- 勾选“裁剪表”和“指定数据库字段”
4.在数据库字段中插入相应的字段。可参考下图:
最后,再执行该转换流即可。
2.7、核心指标数据抽取
新建转换流“核心指标数据抽取”,拖入表输入组件。其中数据库连接选择团队私有数据库,在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
再拖拽一个行转列组件,创建表输入组件到行转列组件的连线。接着双击该组件进行配置,其中要将字段名称转为指标名称,字段值转为指标值。对应的配置可参考如下:
接下来使用值映射组件将指标名称映射为中文,可参考下图:
最后使用表输出组件写入目标表 browser_overview,同样可参考下图:
最后,再执行该转换流即可。
2.8、用户画像表加工
2.8.1、获取人口属性信息表
点击“公共空间”,再点击tab选项“数据资源”,可以看到 demographic.csv。再选择点击 demographic.csv 卡片右上角的“更多” ,选择“导出”。再选择导出到的目录,例如根目录,最后点击“确定”即可。接着刷新文件库的根目录,即可看到 demographic.csv,如下图:
2.8.2、CSV文件输入:读取人口属性数据
新建转换流“用户画像表加工”,拖拽“CSV文件输入”组件到画布中。再双击“CSV文件输入”组件,点击“浏览文件”按钮,在弹出的窗口中选择 demographic.csv,然后点击“确定”。接着列分隔符和封闭符保持不变,编码选择“UTF-8”。如下图所示:
随后再往下滑一点,在空白表格处右键点击“获取字段”,在字段获取成功后点击“确认”即可。
2.8.3、年龄分段
拖入增加常量组件,创建CSV文件输入组件到增加常量组件的连线,连线类型选择为”主步骤输出”。其中在组件增加常量字段“year”,值设为“2012”(数据是2012年的),如下图所示:
拖入“计算器”组件来计算用户在2012年的年龄,年龄 = 2012 - 出生年份,即:age = year – BIRTHDAY,可参考如下配置:
拖入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';
}
2.8.4、表输入:读取用户_日_浏览器_小时明细数据
拖入“表输入”组件到画布中,再双击“表输入”组件,其中数据库连接选择“团队私有数据库”,点击“获取SQL查询语句”,再选择用户_日_浏览器_小时明细表 daily_browser_detail。
2.8.5、关联用户属性
先拖拽2个“排序记录”组件到画布中,分别创建“表输入”组件到“排序记录 1”组件的连线、“CSV文件输入”组件到“排序记录”组件的连线,其中“CSV文件输入”组件到“排序记录”组件的连线类型选择“主输出步骤”,如下图所示:
双击“排序记录 1”组件,命名为“明细数据按用户ID排序”,在空白表格处右键点击“获取字段”,随后仅保留“user-id”,其他字段选中后右键点击“删除选中的行”,再设置 user_id 升序排序后点击“确认”,最后的配置界面如下:
同样的双击“排序记录”组件,命名为“用户属性数据按用户ID排序”,设置按 USERID 升序排序。如下图:
拖拽“记录集连接”组件到画布中,2个排序记录组件分别连接到记录集连接组件。再双击“记录集连接”组件,第一个Transform选择“明细数据按用户ID排序”,第二个Transform选择“用户属性数据按用户ID排序”,连接类型选择“LEFT OUTER”。再分别点击两个“获得连接字段”按钮,获取2个数据的字段,随后第一个Transform的连接字段保留“user_id”,第二个Transform的连接字段保留“USERID”,其他字段通过删除选中的行来删除。对应的配置界面如下:
2.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))。如下图:
2.8.7、表输出
拖入表输出组件,将分组聚合结果入库,表输出组件配置为:
- 数据库连接:选择“团队私有数据库”
- 目标表:user_profile_stats
- 勾选“裁剪表”和“指定数据库字段”
4.在数据库字段中插入相应的字段,如下图:
最后再执行该转换流即可。
2.8.8、查看结果数据
点击“元数据”tab选项,右键团队私有数据库,点击“加载元数据”。再点击“数据探查”,查看以上生成的目标表是否符合预期:
2.9、创建数据大屏
点击实验平台左侧菜单“数据大屏”,。进入子平台——助睿数据大屏可视化平台。接着创建本次实验的市场分析大屏,点击“+新建”按钮,选择“新建大屏”。再在在模板选择中点击“空白模板”,再输入“市场分析”,然后点击下一步,自动跳转到“市场分析”大屏的制作界面。
2.9.1、设置大屏样式
首先,本次数据大屏的背景图片链接为:
将以上背景图片链接复制后粘贴到“背景图片”后的文本框中,覆盖原图片链接,如下图:
其他设置可以保持默认即可。接着点击“媒体”组件分类,点击“单张图片”组件。如下图:
右键组件,点击“重命名”,输入“标题banner”。再选中这个“标题banner”图片组件,点开“基础属性”,可以设置长宽、位置等属性。可参考下图:
点开基本设置,可以设置图片链接,复制以下链接进去,覆盖原链接: https://gzu-edu-quality-max-studio.oss-cn-chengdu.aliyuncs.com/practice/browser-analysis/banner01.png。这样标题banner就设置好了,再点击“保存”就好。效果如下:
点击“单张图片”组件,重命名为“市场分析按钮背景”。导航按钮的背景图片链接为: https://gzu-edu-quality-max-studio.oss-cn-chengdu.aliyuncs.com/comprehensive-data/navigation-bg-1.png ,将其粘贴到基本设置的背景图链接中,可参考下图:
按钮上的文字可以使用“通用标题”来实现,点击文字分类下的“通用标题”,重命名为“市场分析”,接着修改“市场分析”通用标题组件的基础属性,和“市场分析按钮背景”图片组件一样。如下图:
再点开基本设置,修改标题名为“市场分析”。切换“数据”tab选项,点击“刷新数据”,文字即显示为修改的文字。再点开文本样式,可以设置字体、字号、颜色和粗细:
第二个大屏的导航可以复制这个按钮的设置,接着将复制的图片组件重命名为“用户画像按钮背景”,通用标题组件重命名为“用户画像”。可参考下图:
再修改“用户画像按钮背景”和“用户画像”组件的横坐标,如下:
将用户画像标题组件的内容改为“用户画像”,颜色和粗细也做相应修改:
保存预览一下,效果如下:
为方便管理,要将这些组件放在一个组里。选中顶部区域的所有组件,右键“成组”。如下图:
将这个组命名为“顶部”。接下来,先制作左上角第一个图表区域,点击单张图片组件,重命名为“区域背景”,并按照布局草图和参考图设置好大小、位置。如下图:
将区域背景图片链接:https://gzu-edu-quality-max-studio.oss-cn-chengdu.aliyuncs.com/public-material/area-bg.png 粘贴到背景图链接中。接着再添加一个单张图片组件,重命名为“标题背景”,调整好位置和大小,粘贴背景图链接即可,其中背景图链接为: https://gzu-edu-quality-max-studio.oss-cn-chengdu.aliyuncs.com/public-material/title-bg-short.png。可参考如下:
添加通用标题组件,重命名为“标题”,按照参考图,调整大小和位置,标题名修改为“浏览器用户数”,对齐方式为左对齐,其他设置参考如下:
点击常规图标中的“基础柱图”组件,重命名为“浏览器用户数柱状图”,调整大小和位置:
图表的图例默认隐藏,将其设置为可见,并调整水平对齐方式为居中:
再将柱子上的边距调大:
再将增加的组件设置成组,命名为“浏览器用户数”。随后复制刚刚制作的“浏览器用户数”组,重命名为“浏览器使用时长”。可参考下图,拖拽“浏览器使用时长”组到合适位置:
复制的组件内容可能会不显示,重新刷新数据即可。接着将标题名修改为“浏览器使用时长”,并刷新数据。再删除复制的柱状图,重新添加饼图,这里选择“多维度饼图”,调整位置大小,重命名为“浏览器使用时长占比”。接下来设置饼图的样式,取消外圈显示,点击“饼图样式”,点击外圈颜色后的色值方块,将透明度拖到0,并点击“确定”.如下图:
将类目标签设置为可见。再点开“数据系列”,系列及代表分类,也就是浏览器,刚好数据中有6个浏览器,将系列1-6的颜色设置为不同的颜色即可,色值参考:
#2177FC、#3DC3DF、#FF948B、#8A79FE、#82F9A5、#97DFFF
预期效果如下:
记得要将饼图组件拖到“浏览器使用时长”组中,并及时保存。接着再复制制作的“浏览器用户数”组,重命名为“浏览器人均使用时长”,拖拽“浏览器使用时长”组到合适位置,可参考如下:
将标题名修改为“浏览器人均使用时长”,并刷新数据。再将复制的柱状图重命名为“人均使用时长柱状图”即可。再复制“浏览器用户数”组,重命名为“数据概览”,拖拽“数据概览”组到合适位置,调整组件的大小,并刷新数据。可参考如下:
删除复制的柱状图,添加“单张图片”组件,重命名为“图标”,背景图添加链接:
https://gzu-edu-quality-max-studio.oss-cn-chengdu.aliyuncs.com/library-data/audio-video.png 并调整大小、位置,如下图:
添加数字翻牌器组件,重命名为“总使用时长”,并调整大小、位置。如下图:
接下来,调整数字翻牌器的样式。即点开“标题”设置,标题名修改为“总使用时长”,对齐方式改为“居中对齐”,字体大小、颜色、粗细也做相应修改,如下:
点开“翻牌器”设置,水平对齐改为“居中对齐”,其他设置如下:
将图标和总使用时长两个组件成组,命名为“总使用时长”。再复制3个“总使用时长”组,分别重命名为“人均使用时长”、“活跃用户占比”、“重度用户占比”,其中“活跃用户占比”、“重度用户占比”两个组中的图标背景图链接更改为: https://gzu-edu-quality-max-studio.oss-cn-chengdu.aliyuncs.com/library-data/degree-thesis.png。再修改翻牌器标题、后缀,最后调整位置如下:
复制“浏览器用户数”组,重命名为“周内对比”。同时,拖拽“周内对比”组到合适位置,可参考下图:
将标题背景图更换为长标题背景图,标题内容修改为“工作日vs周末使用时长”。再将柱状图删除,重新添加“分组柱状图”,命名为“工作日vs周末使用时长分组柱状图”,并调整大小,位置如下:
接下来调整系列2的柱子颜色为#3DC3DF,其他样式调整参考如下:
复制“周内对比”组,重命名为“24小时活跃分布”,拖拽“24小时活跃分布”组到合适位置,可参考如下:
将标题名修改为“24小时活跃用户数分布”,并刷新数据。再删除复制的分组柱状图,添加区域图,并调整好大小、位置。如下图:
样式调整参考如下,参考颜色为#29F1FA:
再复制“浏览器用户数”组,重命名为“浏览器周活跃用户数变化”,参考以上的实验,调整位置、标题并更换图表类型,实现如下效果:
接着,复制“浏览器周活跃用户数变化”组,重命名为“使用频率分布”,参考以上的实验,调整位置、标题并更换图表类型为“垂直基本柱图”,实现如下效果:
复制“使用频率分布”组,重命名为“浏览器使用数量分布”,参考以上的实验,调整位置、标题共并换图表类型为“基本饼图”。基本饼图样式调整参考如下:
保存大屏,最终预览效果如下:
至此,市场分析大屏的静态布局已完成,下一个实验将使用蓝图编辑器,完成数据接入。
2.10、创建数据库数据源
首先,需要创建链接团队私有数据库的数据源,进入数据大屏平台后,点击“我的数据”,再点击“+新建”,选择“新建数据源”,输出团队私有数据库的信息后,点击“立即添加”。再切换tab选项后可以看见新添加的团队私有数据库,如下图:
打开上一实验制作的“市场分析”数据大屏,接着在画布编辑器内,右键单击左侧图层栏或中间画布区的组件,选择导出到蓝图编辑器,即可将对应组件导出到蓝图编辑器中。接着导出成功后,单击“蓝图编辑器”图标切换到蓝图编辑器页面,可在导入节点列表中查看对应的节点。列表内所有节点都可供后续配置交互使用。随后,从逻辑节点面板中,点击“SQL请求”节点,并将全局节点的“页面初始化完成”输出接口连接到“SQL 请求”节点的“执行SQL”输入接口。如下图所示:
点击“SQL 请求”节点,在配置面板中,数据源选择“团队私有数据库”,SQL类型为“查询”,处理方法的代码框中,输入以下SQL,一次性查询来源为 browser_coverage 的数据:
let sql = `
select
browser_name as x,
user_count as y1,
round(total_duration_sec/3600,0) as y2,
round((total_duration_sec/3600)/user_count,1) as y3
from labs.browser_coverage
order by browser_name`
return sql
预期效果如下:
添加并行数据处理组件,并在其处理方法中再增加2个处理方法,一共3个处理方法,分别命名为:各浏览器用户数、各浏览器总使用时长、各浏览器人均使用时长:
SQL请求节点的执行成功输出接口分别连接到并行数据处理的3个处理方法接口,如下:
其中,并行数据处理的3个处理方法的代码如下,分别粘贴到对应的代码块中即可:
各浏览器用户数:
return data.map(item => ({
x: item.x,
y: item.y1,
s: '用户数'
}));
各浏览器总使用时长:
return data.map(item => ({
name: item.x,
value: item.y2
}));
各浏览器人均使用时长:
return data.map(item => ({
x: item.x,
y: item.y3,
s: '人均时长(小时)'
}));
接下来,点击浏览器用户数柱状图、浏览器使用时长占比、人均使用时长柱状图这3个节点,将它们添加到画布中,再将并行数据处理的3个处理方法的输出接口连接到对应的图表的“导入数据接口”,如下:
点击保存,可以预览一下数据情况是否符合预期
接着可以按照以下配置:
接着从逻辑节点面板中,点击“SQL请求”节点,并将全局节点的“页面初始化完成”输出接口连接到“SQL 请求”节点的“执行SQL”输入接口。然后点击“SQL 请求”节点,在配置面板中,数据源选择“团队私有数据库”,SQL类型为“查询”,处理方法的代码框中,输入以下SQL,一次性查询来源为 browser_overview 的数据:
let sql = `select metric_name, metric_value from labs.browser_overview `
return sql
效果如下:
添加并行数据处理组件,并在其处理方法中再增加3个处理方法,一共4个处理方法,分别命名为:总使用时长、人均使用时长、活跃用户占比、重度用户占比。接着,SQL请求节点的执行成功输出接口分别连接到并行数据处理的4个处理方法接口,如下:
再在对应的处理方法中输入以下代码:
总使用时长:
var item = data.find(d => d.metric_name === '总使用时长');
return [{ value: item ? item.metric_value : 0 }];
人均使用时长:
var item = data.find(d => d.metric_name === '人均使用时长');
return [{ value: item ? item.metric_value : 0 }];
活跃用户占比:
var item = data.find(d => d.metric_name === '活跃用户占比');
return [{ value: item ? item.metric_value : 0 }];
重度用户占比:
var item = data.find(d => d.metric_name === '重度用户占比');
return [{ value: item ? item.metric_value : 0 }];
接着,点击4个数字翻牌器组件的节点,将它们添加到画布中,再将并行数据处理的4个处理方法的输出接口连接到对应的图表的“导入数据接口”,如下:
随后,参考以上SQL请求节点的配置步骤,完成SQL请求节点配置,查询代码如下:
let sql = `
select
browser_name as x,
avg_duration_sec as y,
day_type as s
from labs.browser_weekday_weekend
order by browser_name, day_type
`
return sql
点击工作日vs周末使用时长节点,将它添加到画布中,再SQL请求节点的执行成功输出接口连接到“导入数据接口”,如下:
在参考以上SQL请求节点的配置步骤,完成SQL请求节点配置,查询代码如下:
let sql = `
select hour as x,
active_user_count as y,
browser_name as s
from labs.browser_hourly
order by browser_name, hour
`
return sql
接着,点击24小时活跃用户分布节点,将它添加到画布中,再SQL请求节点的执行成功输出接口连接到“导入数据接口”,如下:
这里需要注意,图例是跟着折线上的标签点的颜色变化的,为了使折线、标签点、图例颜色一致,需要分别设置颜色,在画布编辑器中选中图表,点开数据系列,这个折线图有6个图例,即6个浏览器,所以需要设置6个系列的折线和标记颜色。设置完成后,效果如下:
再参考以上SQL请求节点的配置步骤,完成SQL请求节点配置,查询代码如下:
let sql = `
select hour as x,
active_user_count as y,
browser_name as s
from labs.browser_hourly
order by browser_name, hour
`
return sql
点击活跃用户周变化节点,将它添加到画布中,再SQL请求节点的执行成功输出接口连接到“导入数据接口”,如下:
接着点击保存,由于图例是跟着折线上的标签点的颜色变化的,为了使折线、标签点、图例颜色一致,需要分别设置颜色,在画布编辑器中选中图表,点开数据系列,这个折线图有6个图例,即6个浏览器,所以需要设置6个系列的折线和标记颜色。设置完成后,效果如下:
参考以上SQL请求节点的配置步骤,完成SQL请求节点配置,查询代码如下:
let sql = `
select
browser_name as s,
user_count as y,
usage_level as x
from labs.browser_frequency_stats
order by browser_name
`
return sql
点击使用频率分布节点,将它添加到画布中,再SQL请求节点的执行成功输出接口连接到“导入数据接口”,如下:
参考以上SQL请求节点的配置步骤,完成SQL请求节点配置,查询代码如下:
let sql = `
select
browser_count as name,
user_count as value
from labs.browser_multi_usage
order by browser_count
`
return sql
再点击浏览器使用数量分布节点,将它添加到画布中,再将SQL请求节点的执行成功输出接口连接到“导入数据接口”,如下:
最后再点击保存即可。当组件的样式和数据都配置完成后,可以预览并发布可视化应用,实现应用的在线播放和演示。具体操作:单击大屏页面右上角的预览图标,预览可视化应用。接着再单击大屏页面右上角的发布图标,在弹出的发布对话框中单击发布分享,单击分享链接右侧的复制按钮。打开浏览器,将复制的链接粘贴到地址栏中,即可在线观看。如:2012年浏览器市场分析大屏链接:http://47.109.66.142:30887/#/dataScreen/release?shareId=557871caf59a473e91bd62bbf217f0de
三、实验问题与解决
问题一:在蓝图编译器中完成相关的操作后保存,再去画布编译器中预览效果后发生了报错。
解决办法:经过分析后,发现了原因:在SQL请求组件中填写相应的SQL代码时,没有将labs修改成自己的团队私有数据库的名称,修改后,就不会发生报错了。
四、实验总结
本次实验完成了从用户日志明细表到浏览器市场分析大屏的全流程数据处理与可视化。通过助睿数智平台,利用SQL脚本、值映射、分组、排序等组件,成功构建了核心指标、周活跃趋势、使用频率分布等目标数据表。在数据大屏制作中,借助蓝图编辑器将团队私有数据库中的真实数据接入柱状图、饼图、折线图、数字翻牌器等组件,实现了动态展示。过程中遇到的数据库名称错误问题已顺利解决。通过本次实验,掌握了数据ETL加工、大屏布局设计与动态数据接入的完整方法,提升了商业数据分析的实践能力。