助睿数据大屏实验:手把手教你搭建浏览器市场分析大屏 前言从800万条用户行为数据中挖掘出驱动市场决策的关键洞察你是否也曾面对海量数据却无从下手是否渴望将枯燥的数据转化为直观的可视化报告真正驱动业务决策今天我们将带你完整走一遍从原始数据到可视化大屏的全流程。以“浏览器市场与用户画像分析”为例你将学习如何利用一站式数据科学平台搭建一个专业的数据分析大屏。这套方法同样适用于用户行为分析、产品运营监控、市场营销评估等多种场景。一、实验背景我们为什么要做这件事1.1 业务问题驱动任何分析项目都始于一个核心问题我们要通过数据回答什么业务问题在这个案例中我们手握800万条用户浏览器行为日志和1000位用户的属性信息希望搭建一个大屏回答以下关键问题第一个问题哪个浏览器用户最多这个问题帮助我们了解市场领导者判断自身产品的市场地位。用户数直接反映了各浏览器的市场占有率。第二个问题哪个浏览器用户用得最久用户数多不代表粘性高使用时长方能反映用户对浏览器的真实依赖程度。一个用户数排名第二但人均时长第一的浏览器可能拥有更高忠诚度的核心用户群。第三个问题用户活跃度在增长还是下降通过追踪每周活跃用户数的变化趋势可以判断产品所处的生命周期阶段及时发现衰退信号并采取干预措施。第四个问题用户什么时候最活跃了解用户活跃的时间分布可以优化推送和运营时机在正确的时间触达用户提升运营效果。第五个问题用户是重度使用还是偶尔打开通过区分轻度、中度和重度用户可以制定差异化的运营策略对重度用户重点维护对轻度用户尝试提升使用频次。第六个问题用户同时用几个浏览器了解用户使用的浏览器数量可以判断用户忠诚度。如果大部分用户只用一种浏览器说明用户粘性高如果用户同时使用多种浏览器说明存在被竞品替代的风险。第七个问题工作日和周末使用习惯有何不同区分工作场景和娱乐场景的使用习惯可以帮助产品在不同时段提供差异化的功能或内容推荐。第八个问题核心用户是谁通过分析用户的性别、年龄、职业、收入、地域分布可以明确目标用户群体指导产品设计和营销方向。1.2 实验环境与数据规模本次实验使用的平台是助睿在线实验平台网址为 lab.guilian.cn。该平台是一站式数据科学平台覆盖从数据接入、ETL处理、机器学习建模到可视化展示的全链路零代码功能。数据处理部分使用助睿ETL数据集成平台这是一个可视化的数据加工工具通过拖拽组件的方式完成数据的清洗、转换和加载无需编写代码。可视化展示部分使用助睿Max数据大屏这是一个通过图形化界面轻松搭建专业可视化应用的产品适用于会议展览、业务监控、风险预警等场景。实验数据的规模为1000名用户800多万条行为记录数据文件大小约825MB。1.3 整体分析框架为了回答上述业务问题我们规划了两个大屏模块。第一个大屏是浏览器市场行为分析主要关注浏览器本身的市场表现。这个模块要回答的问题包括各浏览器的用户规模和使用时长对比、活跃度的周趋势变化、用户使用频率的分布、工作日与周末的使用习惯差异、用户同时使用几种浏览器等。第二个大屏是浏览器用户画像分析主要关注使用不同浏览器的用户群体特征。这个模块要回答的问题包括男女用户比例、各年龄段用户分布、用户学历层次、职业分布、收入水平、地域分布等。在设计大屏之前我们需要先明确一个重要的原则大屏上的每个图表、每个数字都需要有对应的数据来源。我们不能在大屏上直接查询原始明细表因为原始明细表数据量大、查询慢会影响大屏加载速度。大屏需要的是聚合后的统计结果而不是原始明细。而且多个图表可能共用同一份聚合数据提前加工可以避免重复计算。因此在动手做大屏之前我们需要先完成数据加工工作将原始日志数据清洗聚合为各类统计表。二、实验步骤从原始数据到动态大屏整个实验过程分为三个紧密相连的环节我们称之为“三部曲”。第一部是数据加工将杂乱的原始日志清洗聚合为可用的统计表。这一部在ETL平台中完成。第二部是静态布局在大屏编辑器中搭建可视化骨架确定各个图表的位置和样式。第三部是数据接入通过蓝图编辑器将真实数据注入图表让大屏“活”起来。第一部数据加工ETL—— 让原始数据变“干净”这一步的目标是将杂乱的明细日志清洗聚合为后续大屏直接可用的统计表。我们会一步步完成从明细表到各张统计表的加工。重要说明本实验严格基于上一个实验的产出成果。上一个实验已经输出了browser_coverage和browser_hourly本实验将直接使用这两张表并进一步加工新的目标表。步骤1.1准备“用户-日-浏览器-小时”明细表明细表是所有后续分析的基础。注意daily_browser_detail这张明细表并非从零开始创建而是复用上一个实验的转换流进行改造。第一步创建数据表首先我们需要在团队私有数据库中创建用于存放明细表的数据表。打开上个实验创建的项目“互联网用户行为日志”。新建一个转换流命名为“创建用户_日_浏览器_小时明细表”。从组件库中拖入一个“执行一个SQL脚本”组件到画布上。双击这个组件在弹出的配置窗口中数据库连接选择“团队私有数据库”然后在SQL代码框中输入建表语句。建表语句的完整代码如下CREATETABLEIFNOTEXISTSdaily_browser_detail(user_idVARCHAR(50)NOTNULLCOMMENT用户ID,usage_dateDATENOTNULLCOMMENT使用日期,browser_nameVARCHAR(50)NOTNULLCOMMENT浏览器名称,hourTINYINTNOTNULLCOMMENT小时,total_duration_secINTNOTNULLCOMMENT总使用时长(秒),active_countINTNOTNULLCOMMENT活跃次数)ENGINEInnoDBDEFAULTCHARSETutf8mb4 COMMENT用户_日_浏览器_小时明细表;输入完成后点击“运行”按钮执行这个转换流。执行成功后团队私有数据库中就会创建好daily_browser_detail这张空表。第二步复制转换流上个实验中的“互联网用户行为日志数据清洗抽取”转换流已经包含了生成明细数据的完整逻辑但只输出了分支A和B也就是browser_coverage和browser_hourly。我们需要将其复制一份改为输出明细表。找到上个实验的项目中的“互联网用户行为日志数据清洗抽取”转换流右键选择“复制”。然后在根目录右键选择“粘贴”。粘贴后右键重命名为“输出用户日浏览器小时明细表”。第三步更正排序记录组件这里有一个非常重要的注意事项上个实验中“排序记录 1”组件仅按照process_name升序排序但分组组件的分组字段是user_id、usage_date、process_name、hour这四个。如果排序字段与分组字段不一致会出现多条重复数据。因此需要更正“排序记录 1”组件的排序字段将其设置为与分组组件的分组字段一致即按照user_id、usage_date、process_name、hour四个字段升序排序顺序要一致。第四步浏览器名称映射原始日志中的进程名比如chrome.exe不够直观我们需要通过值映射组件将其转换为用户能看懂的浏览器名称。在分组组件后添加“值映射”组件这个值映射组件需要连接到原分支A的“分组1”组件同时复制发送到原分支B的“排序记录2”组件。双击值映射组件使用的字段名选择process_name目标字段名输入browser_name表示创建一个新字段来存储映射结果。然后在映射表中逐行添加映射关系iexplore.exe 对应 IE浏览器360chrome.exe 对应 360极速360se.exe 对应 360sechrome.exe 对应 Chromesogouexplorer.exe 对应 搜狗QQBrowser.exe 对应 QQ浏览器注意上个实验的“过滤记录筛选进程为主要浏览器的数据”步骤中匹配条件是process_name IN LIST。如果您的匹配条件与上述不同比如包含了EXCEL.EXE、WINWORD.EXE、AlilM.exe需要删除这三个非浏览器的进程名。另外转换流中的分组组件里聚合字段的聚合类型如果是“个数”需要改成“统计不同值的数量(N)”。并且在分支A的“分组1”组件前需要添加排序记录组件按process_name升序排序。第五步输出明细表最后拖入一个“表输出”组件将值映射组件连接到这个表输出组件。双击表输出组件进行配置数据库连接选择“团队私有数据库”目标表选择daily_browser_detail勾选“裁剪表”选项这样每次运行时会先清空原有数据然后勾选“指定数据库字段”并建立字段映射。配置完成后点击运行明细表就加工好了。步骤1.2创建所有目标数据表在开始抽取数据之前需要先创建好所有目标表。我们新建一个转换流命名为“创建浏览器大屏分析目标数据表”。拖入一个“执行一个SQL脚本”组件数据库连接选择“团队私有数据库”输入建表语句。这次我们要创建六张核心表。使用DROP TABLE IF EXISTS可以避免需要重新建表时语句报错。第一张表是核心指标概览表命名为browser_overview。这张表用于存放大屏顶部的四个核心指标总使用时长、人均使用时长、活跃用户占比、重度用户占比。表结构很简单指标名称和指标值两个字段。建表语句如下DROPTABLEIFEXISTSbrowser_overview;CREATETABLEbrowser_overview(metric_nameVARCHAR(50)NOTNULLCOMMENT指标名称,metric_valueDECIMAL(12,2)NOTNULLCOMMENT指标值)ENGINEInnoDBDEFAULTCHARSETutf8mb4 COMMENT核心指标概览表;第二张表是各浏览器周活跃趋势表命名为browser_weekly_active。这张表记录每个浏览器在第1周到第4周的每周活跃用户数用于绘制周活跃趋势折线图。字段包括浏览器名称、周日期范围、活跃用户数。建表语句如下DROPTABLEIFEXISTS browser_weekly_active;CREATETABLEbrowser_weekly_active(browser_nameVARCHAR(50)NOTNULLCOMMENT浏览器名称,week_rangeVARCHAR(20)NOTNULLCOMMENT周日期范围,active_user_countINTNOTNULLCOMMENT活跃用户数)ENGINEInnoDBDEFAULTCHARSETutf8mb4 COMMENT各浏览器周活跃趋势表;第三张表是浏览器使用频率分布表命名为browser_frequency_stats。这张表记录每个浏览器下轻度用户、中度用户、重度用户的数量用于绘制使用频率分布图。字段包括浏览器名称、使用等级轻度/中度/重度、用户数。建表语句如下DROPTABLEIFEXISTS browser_frequency_stats;CREATETABLEbrowser_frequency_stats(browser_nameVARCHAR(50)NOTNULLCOMMENT浏览器名称,usage_levelVARCHAR(10)NOTNULLCOMMENT使用等级,user_countINTNOTNULLCOMMENT用户数)ENGINEInnoDBDEFAULTCHARSETutf8mb4 COMMENT浏览器使用频率分布表;第四张表是用户使用浏览器数量分布表命名为browser_multi_usage。这张表记录用户同时使用几种浏览器的分布情况比如使用1种浏览器有多少人、使用2种有多少人、使用3种及以上有多少人。字段包括浏览器数量等级和用户数。建表语句如下DROPTABLEIFEXISTS browser_multi_usage;CREATETABLEbrowser_multi_usage(browser_countVARCHAR(10)NOTNULLCOMMENT使用浏览器数量,user_countDECIMAL(5,2)NOTNULLCOMMENT用户数量)ENGINEInnoDBDEFAULTCHARSETutf8mb4 COMMENT用户使用浏览器数量分布表;第五张表是浏览器工作日周末对比表命名为browser_weekday_weekend。这张表对比每个浏览器在工作日和周末的使用时长情况。字段包括浏览器名称、日期类型工作日/周末、人均使用时长、总使用时长、用户数。建表语句如下DROPTABLEIFEXISTS browser_weekday_weekend;CREATETABLEbrowser_weekday_weekend(browser_nameVARCHAR(50)NOTNULLCOMMENT浏览器名称,day_typeVARCHAR(10)NOTNULLCOMMENT工作日/周末,avg_duration_secINTNOTNULLCOMMENT人均使用时长(秒),total_duration_hourBIGINTNOTNULLCOMMENT总使用时长(小时),user_countINTNOTNULLCOMMENT用户数)COMMENT浏览器工作日周末对比表;第六张表是用户画像统计表命名为user_profile_stats。这张表记录每个浏览器的用户在不同维度上的分布包括性别、年龄、学历、职业、收入、居住地类型、省份等。建表语句如下DROPTABLEIFEXISTSuser_profile_stats;CREATETABLEuser_profile_stats(browser_nameVARCHAR(50)NOTNULLCOMMENT浏览器名称,genderVARCHAR(10)COMMENT性别,age_groupVARCHAR(10)COMMENT年龄段,eduVARCHAR(50)COMMENT学历,jobVARCHAR(50)COMMENT职业,incomeVARCHAR(50)COMMENT收入,city_typeVARCHAR(10)COMMENT居住地类型,provinceVARCHAR(50)COMMENT省份,user_countINTNOTNULLCOMMENT用户数)ENGINEInnoDBDEFAULTCHARSETutf8mb4 COMMENT用户画像统计表;建表语句输入完成后点击“运行”按钮执行转换流六张表就都创建好了。步骤1.3各浏览器周活跃趋势表数据抽取本步骤的目标是统计每个浏览器在第1-4周的每周活跃用户数。新建一个转换流命名为“各浏览器周活跃趋势表数据抽取”。第一步读取明细数据拖入“表输入”组件到画布中。双击这个组件数据库连接选择“团队私有数据库”然后点击“获取SQL查询语句”按钮在弹出的窗口中选择daily_browser_detail表系统会自动生成查询所有字段的SQL语句。点击确认。第二步日期格式转换拖入“字段选择”组件到画布中创建表输入组件到字段选择组件的连线。双击字段选择组件点击“元数据”选项卡右键插入一行输入字段名称usage_date类型设置为Date格式设置为yyyy-MM-dd。这一步是为了确保日期格式正确。第三步日期转周区间拖入一个“值映射”组件字段选择组件连接到值映射组件。双击值映射组件使用的字段名选择usage_date目标字段名输入week_range表示创建一个新字段来存储映射结果。然后逐行添加映射把2012-05-07到2012-05-13这几天的日期都映射为“5/7-5/13”把2012-06-04到2012-06-10映射为“6/4-6/10”把2012-07-02到2012-07-08映射为“7/2-7/8”把2012-08-06到2012-08-12映射为“8/6-8/12”。第四步排序拖入一个“排序记录”组件值映射组件连接到排序记录组件。排序记录组件设置为按照browser_name、week_range两个字段升序排序。第五步分组统计拖入一个“分组”组件排序记录组件连接到分组组件。分组字段选择browser_name和week_range。聚合配置中输入字段名active_user_count聚合主题选择user_id聚合类型选择“统计不同值的数量(N)”。第六步输出结果最后拖入“表输出”组件。数据库连接选择团队私有数据库目标表选择browser_weekly_active勾选“裁剪表”勾选“指定数据库字段”并建立字段映射。配置完成后点击运行。步骤1.4各浏览器使用频率分布表数据抽取本步骤的目标是按轻度小于3小时/周、中度3-10小时/周、重度大于10小时/周划分用户使用频率统计每个浏览器各等级的用户数。新建一个转换流命名为“使用频率分布数据抽取”。第一步读取明细数据拖入“表输入”组件读取daily_browser_detail表的所有数据。第二步按用户和浏览器分组计算总时长先拖入排序记录组件按user_id和browser_name升序排序。然后拖入分组组件分组字段选user_id和browser_name聚合时对total_duration_sec求和得到每个用户使用每个浏览器的总时长单位是秒。第三步秒转小时拖入一个“增加常量”组件分组组件连接到增加常量组件。添加一个新字段hour_m_s类型设置为Integer固定值设为3600。然后拖入“计算器”组件增加常量组件连接到计算器组件。新增字段total_hours计算公式为总秒数除以3600即A / B字段A选择total_seconds字段B选择hour_m_s保留两位小数。第四步划分使用等级拖入一个“JavaScript代码”组件计算器组件连接到JavaScript代码组件。双击打开代码编辑器输入以下代码var total_hours total_hours;var usage_level ;if(total_hours 3){ usage_level 轻度;}elseif(total_hours 3 total_hours 10){ usage_level 中度;}else{ usage_level 重度;}点击“获取变量”按钮系统会自动识别代码中输出的变量。注意usage_level这个字段需要在之前的增加常量组件中先新增一个空字段。第五步按等级统计用户数拖入排序记录组件按browser_name和usage_level升序排序。然后拖入分组组件按这两个字段分组对user_id进行去重计数。第六步输出到目标表拖入表输出组件目标表选择browser_frequency_stats勾选“裁剪表”勾选“指定数据库字段”并建立字段映射。点击运行。步骤1.5各浏览器使用数量分布表数据抽取本步骤的目标是统计用户使用1种、2种、3种及以上浏览器的用户数。新建一个转换流命名为“浏览器使用数量分布数据抽取”。第一步读取明细数据拖入“表输入”组件读取daily_browser_detail表的所有数据。第二步按用户分组统计浏览器种类数量拖入排序记录组件按user_id升序排序。然后拖入分组组件分组字段选user_id聚合时对browser_name进行去重计数得到每个用户使用了几种不同的浏览器。第三步划分浏览器数量等级拖入一个“JavaScript代码”组件输入以下代码var browser_cnt browser_cnt;var browser_count ;if(browser_cnt 1){ browser_count 1种;}elseif(browser_cnt 2){ browser_count 2种;}else{ browser_count 3种及以上;}第四步按等级统计用户数拖入排序记录组件按browser_count升序排序。然后拖入分组组件按browser_count分组对user_id进行去重计数。第五步输出到目标表步骤1.6各浏览器工作日周末对比表数据抽取本步骤的目标是统计各浏览器在工作日和周末的使用时长对比。新建一个转换流命名为“浏览器工作日周末对比数据抽取”。第一步读取明细数据拖入“表输入”组件读取daily_browser_detail表。第二步判断工作日还是周末拖入一个“JavaScript代码”组件输入以下代码var date usage_date;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分组。聚合配置平均使用时长用“平均值”聚合类型总使用时长用“求和”用户数用“统计不同值的数量(N)”。第四步总时长秒转小时使用增加常量组件添加3600和计算器组件除以3600将总使用时长的单位从秒转换为小时。第五步清理冗余字段使用字段选择组件删除计算过程中产生的中间字段。第六步输出到目标表用表输出组件写入browser_weekday_weekend表。步骤1.7核心指标数据抽取本步骤的目标是将大屏顶部四个指标卡的数据存入一张通用的键值对表中。特别说明在以上数据抽取中我们已经获取了各浏览器的用户数、使用时长等数据。但核心指标需要的是全局数据除了使用时长可以直接汇总外其他用户数相关的数据在不同浏览器之间是存在重叠的同一个用户可能使用多个浏览器所以需要重新计算。新建一个转换流拖入“表输入”组件数据库连接选择团队私有数据库在SQL语句框中输入以下SQLSELECTROUND(SUM(total_duration_sec)/3600,2)AS total_hours,ROUND(SUM(total_duration_sec)/3600/COUNT(DISTINCT user_id),2)AS avg_hours,ROUND((SELECTCOUNT(DISTINCT user_id)FROM daily_browser_detail WHERE usage_date BETWEEN2012-08-06AND2012-08-12)*100.0/COUNT(DISTINCT user_id),2)AS active_ratio,ROUND((SELECTCOUNT(*)FROM(SELECT user_id FROM daily_browser_detail WHERE usage_date BETWEEN2012-05-07AND2012-07-08GROUPBY user_idHAVINGSUM(total_duration_sec)/360030) t)*100.0/COUNT(DISTINCT user_id),2)AS heavy_ratioFROM daily_browser_detail接下来使用“行转列”组件将字段名称转为指标名称字段值转为指标值。然后使用“值映射”组件将指标名称映射为中文。最后使用表输出组件写入目标表browser_overview执行转换流即可。步骤1.8用户画像表加工本步骤的目标是统计每个浏览器按性别、年龄、学历、职业、收入、居住地类型、省份的用户分布。用户画像表需要用户的属性信息行为日志的数据中仅包含行为数据缺少用户属性数据因此需要获取数据集中的人口属性信息表demographic.csv通过用户ID进行关联。第一步获取人口属性信息文件点击左侧菜单的“公共空间”切换到“数据资源”选项卡找到demographic.csv文件。点击文件卡片右上角的“更多”按钮选择“导出”选择导出到项目根目录点击确定。刷新文件库即可看到该文件。第二步读取CSV文件新建转换流命名为“用户画像表加工”。拖入“CSV文件输入”组件浏览选择demographic.csv文件列分隔符保持默认编码选择UTF-8右键点击空白表格区域选择“获取字段”。第三步计算年龄并分段拖入“增加常量”组件添加常量字段year值设为2012。拖入“计算器”组件计算年龄age year - BIRTHDAY。然后用JavaScript代码组件将年龄分段18、18-25、26-35、35。第四步读取行为数据拖入另一个“表输入”组件读取daily_browser_detail表。第五步关联两个数据源分别对两个数据源按连接字段排序行为数据按user_id升序排序属性数据按USERID升序排序。然后拖入“记录集连接”组件连接类型选择LEFT OUTER JOIN连接字段为user_id和USERID。第六步分组统计按browser_name、GENDER、EDU、JOB、INCOME、PROVINCE、ISCITY、age_group八个字段分组对user_id进行去重计数。第七步输出结果用表输出组件写入user_profile_stats表。点击运行执行转换流。执行成功后可以在“数据探查”中查看生成的目标表是否符合预期。第二部大屏静态布局 —— 为数据搭建“骨架”数据加工完成后接下来进入大屏制作阶段。这一阶段的核心任务是在可视化平台中搭建大屏的静态布局也就是确定每个图表的位置、大小和样式。步骤2.1创建数据大屏并设置样式首先进入数据大屏模块。点击左侧菜单的“数据大屏”进入助睿数据大屏可视化平台。点击“新建”按钮选择“新建大屏”。在模板选择中点击“空白模板”然后输入大屏名称“市场分析”点击下一步自动跳转到大屏编辑界面。现在来设置大屏的背景。在右侧的页面设置栏中屏幕大小默认为1920x1080可以根据最终展示的屏幕大小来调整。背景图片需要设置为一张合适的图片复制背景图片链接粘贴到“背景图片”文本框中。大屏的标题我们使用图片组件来实现这样更美观。从左侧组件列表中点击“媒体”分类下的“单张图片”组件拖入画布。右键这个组件选择“重命名”输入“标题banner”。选中这个组件在右侧设置栏中设置它的位置和大小然后在基本设置中粘贴标题图片的链接。这样标题就设置好了。步骤2.2配置导航按钮因为我们有两个大屏市场分析大屏和用户画像大屏需要设置导航按钮来实现大屏间的跳转。在当前的市场分析大屏上我们要放两个按钮一个是当前页面的按钮高亮显示另一个是跳转到用户画像大屏的按钮。先做“市场分析”按钮。拖入一个“单张图片”组件作为按钮背景命名为“市场分析按钮背景”设置位置和大小粘贴按钮背景图片的链接。然后拖入一个“通用标题”组件作为按钮文字命名为“市场分析”。把它放在按钮背景的上面调整位置使其居中。在基本设置中将标题名改为“市场分析”点开文本样式可以设置字体、字号、颜色和粗细。当前页面是市场分析所以这个按钮应该是选中状态可以设置不同的颜色。用同样的方法制作“用户画像”按钮。复制刚才的按钮背景和标题组件重命名为“用户画像按钮背景”和“用户画像”修改横坐标位置使它排在前一个按钮的右边。标题内容改为“用户画像”。为了方便管理选中顶部区域的所有组件包括标题banner和两个按钮右键选择“成组”命名为“顶部”。步骤2.3按区域布局各图表根据我们之前的设计大屏需要展示多个图表。每个图表区域都包含四个层次区域背景、标题背景、标题文字、图表组件。我们以左上角的“浏览器用户数”区域为例详细说明如何搭建。第一步添加区域背景拖入一个“单张图片”组件命名为“区域背景”。根据布局草图设置它的宽度、高度和横纵坐标。在基本设置中粘贴区域背景图片的链接这种背景图片通常是一个半透明的毛玻璃效果让图表区域看起来更有质感。第二步添加标题背景再拖入一个“单张图片”组件命名为“标题背景”。这个组件用于衬托标题文字让标题更醒目。这个区域的标题比较短所以使用短标题背景图片。设置位置使它位于区域背景的上方偏左位置。第三步添加标题文字拖入一个“通用标题”组件命名为“标题”。设置它的位置使其刚好在标题背景之上。将标题名修改为“浏览器用户数”设置左对齐调整字体大小和颜色。第四步添加图表组件根据设计浏览器用户数使用柱状图展示。点击“图表”分类下的“基础柱状图”组件拖入画布命名为“浏览器用户数柱状图”。调整它的位置和大小使其位于区域背景之内、标题背景之下。图表的图例默认是隐藏的我们需要把它设置为可见并调整水平对齐方式为居中。如果发现柱子和图例的距离过小可以点开“全局样式”调整柱子上边距。将本区域的所有组件选中右键成组命名为“浏览器用户数”。这样以后移动这个区域就只需要移动组就可以了。按照同样的方法我们要搭建所有图表区域。下面列出每个区域需要使用的图表类型浏览器用户数区域使用基础柱状图展示六个浏览器的用户数量对比。使用时长占比区域使用多维度饼图展示各浏览器使用时长的份额。人均使用时长区域使用基础柱状图展示各浏览器的人均使用时长。数据概览区域比较特殊不是用图表而是用数据翻牌器来展示四个核心指标。这个区域需要拖入四个数据翻牌器组件每个翻牌器可以配置标题、后缀和数值样式。为了更美观还可以在每个翻牌器旁边添加一个小图标。工作日与周末对比区域使用分组柱状图展示各浏览器在工作日和周末的人均使用时长对比两个柱子并排显示更方便比较。24小时活跃分布区域使用区域图也叫面积图展示各浏览器在全天24小时的活跃用户数变化趋势。周活跃趋势区域使用基础折线图展示各浏览器在第1周到第4周的活跃用户数变化通过折线的走向判断增长还是下降。使用频率分布区域使用垂直基本柱图这是一种堆叠柱状图可以把轻度、中度、重度用户堆叠在一起同时展示总量和构成。浏览器使用数量分布区域使用基本饼图展示使用1种、2种、3种及以上浏览器的用户占比。每个区域搭建完成后按照布局草图的规划调整位置使整体排列整齐、层次分明。第三部数据接入 —— 让骨架“活”起来静态布局完成后大屏虽然看起来像那么回事了但图表里还没有真实数据。这一步我们通过蓝图编辑器将数据库中的数据接入到各个图表组件中。步骤3.1创建数据库数据源首先需要创建数据源告诉大屏平台我们的数据库在哪里、怎么连接。进入数据大屏平台后点击顶部菜单的“我的数据”。点击“新建”按钮选择“新建数据源”。在弹出的窗口中填写团队私有数据库的连接信息包括数据库地址、端口、数据库名、用户名和密码。填写完成后点击“立即添加”。添加成功后可以在数据源列表中看到新添加的团队私有数据库。步骤3.2将组件导出到蓝图编辑器接下来需要把大屏上的图表组件导出到蓝图编辑器中这样蓝图编辑器才能操作这些组件。打开上一节制作好的“市场分析”数据大屏。在画布编辑器中右键单击左侧图层栏或中间画布区的图表组件选择“导出到蓝图编辑器”。系统会提示导出成功。依次把所有需要接入数据的组件都导出包括各个柱状图、饼图、折线图、区域图、数据翻牌器等。导出完成后单击顶部工具栏的“蓝图编辑器”图标切换到蓝图编辑器页面。在右侧的“导入节点”列表中可以看到所有刚才导出的组件节点。步骤3.3为市场格局三个图表配置数据现在开始配置数据接入。市场格局区域的三个图表——用户数柱状图、使用时长饼图、人均时长柱状图其实都来自同一张表browser_coverage。我们可以通过一次SQL查询获取所有需要的数据然后用并行数据处理节点分发给三个图表这样效率更高。第一步添加全局节点在蓝图编辑器的逻辑节点面板中找到“全局节点”拖入画布。全局节点用于在大屏打开时自动触发后续操作比如加载数据。第二步添加SQL请求节点从逻辑节点面板中拖入一个“SQL请求”节点。将全局节点的“页面初始化完成”输出接口连接到SQL请求节点的“执行SQL”输入接口这样大屏一打开就会自动执行这个SQL查询。选中SQL请求节点在右侧的配置面板中进行设置。数据源选择刚才创建的“团队私有数据库”SQL类型选择“查询”。这段SQL从browser_coverage表中查询出浏览器名称、用户数、总使用时长转换为小时、人均使用时长总时长除以用户数。注意字段别名x、y1、y2、y3是为了后续处理方便。第三步添加并行数据处理节点拖入一个“并行数据处理”节点。这个节点可以把一份数据分发给多个下游节点每个下游节点可以编写不同的处理逻辑。我们需要为三个图表分别处理数据所以在并行数据处理节点中添加三个处理方法分别命名为“各浏览器用户数”、“各浏览器总使用时长”、“各浏览器人均使用时长”。将SQL请求节点的“执行成功”输出接口连接到并行数据处理节点的三个处理方法输入接口并行节点会自动连接到所有处理方法。现在为每个处理方法编写数据转换代码。各浏览器用户数处理方法的代码return data.map(item ({x: item.x,y: item.y1,s: 用户数}));这段代码把查询结果中的x浏览器名称映射为图表需要的x字段把y1用户数映射为y字段s字段固定为“用户数”。各浏览器总使用时长处理方法的代码return data.map(item ({name: item.x,value: item.y2}));饼图需要的字段是name分类名称和value数值所以这里把x映射为namey2映射为value。各浏览器人均使用时长处理方法的代码return data.map(item ({x: item.x,y: item.y3,s: 人均时长(小时)}));第四步连接图表节点在右侧导入节点列表中找到“浏览器用户数柱状图”节点拖入画布。将并行数据处理中“各浏览器用户数”处理方法的输出接口连接到这个图表节点的“导入数据接口”。同样的找到“浏览器使用时长占比”饼图节点和“人均使用时长柱状图”节点分别连接到对应的处理方法输出接口。点击保存然后预览大屏可以看到三个图表已经显示真实数据了。步骤3.4为指标区域配置数据四个指标卡总使用时长、人均使用时长、活跃用户占比、重度用户占比的数据来自browser_overview表。同样使用一次查询加并行处理的方式。新建一个SQL请求节点查询代码如下let sql select metric_name, metric_value from labs.browser_overviewreturn sql这个查询返回的结果类似于总使用时长对应456800人均使用时长对应8.20等。添加并行数据处理节点添加四个处理方法分别命名为“总使用时长”、“人均使用时长”、“活跃用户占比”、“重度用户占比”。四个处理方法的代码逻辑类似都是先根据指标名称找到对应的值然后返回格式为[{value: xxx}]的数组。以总使用时长为例var item data.find(d d.metric_name 总使用时长);return [{ value: item ? item.metric_value : 0 }];这段代码用find方法在数据数组中查找metric_name等于“总使用时长”的那条记录然后取出它的metric_value作为value返回。如果找不到就返回0。在导入节点列表中找到四个数字翻牌器节点分别连接到对应的处理方法输出接口。步骤3.5为其他图表配置数据剩下的几个图表每个都需要单独配置SQL查询因为它们来自不同的数据表。工作日vs周末对比表**的SQL查询let sql selectbrowser_name as x,avg_duration_sec as y,day_type as sfrom labs.browser_weekday_weekendorder by browser_name, day_typereturn sql这个查询把浏览器名称作为x轴人均时长作为y轴日期类型工作日/周末作为系列分组s。分组柱状图会根据s字段自动分组显示。24小时活跃分布的SQL查询let sql select hour as x,active_user_count as y,browser_name as sfrom labs.browser_hourlyorder by browser_name, hourreturn sql小时作为x轴活跃用户数作为y轴浏览器名称作为系列。周活跃趋势的SQL查询let sql selectweek_range as x,active_user_count as y,browser_name as sfrom labs.browser_weekly_activeorder by browser_name, week_rangereturn sql使用频率分布的SQL查询let sql selectbrowser_name as s,user_count as y,usage_level as xfrom labs.browser_frequency_statsorder by browser_namereturn sql浏览器使用数量分布的SQL查询let sql selectbrowser_count as name,user_count as valuefrom labs.browser_multi_usageorder by browser_countreturn sql每个SQL请求节点配置完成后将执行成功输出接口连接到对应图表节点的“导入数据接口”。步骤3.6图表样式微调数据接入后图表可能看起来还不够完美需要做一些样式调整。对于饼图来说默认可能会显示外圈如果觉得不好看可以把外圈颜色透明度调为0让外圈消失。同时设置标签类目为可见让每个扇区旁边显示对应的浏览器名称。对于折线图来说最需要注意的是颜色配置。数据接入后图例和线条的颜色可能是自动分配的看起来不协调甚至混乱。需要在画布编辑器中选择折线图点开右侧的“数据系列”设置。这个折线图有六个浏览器所以需要设置六个系列的折线颜色和标记颜色。建议使用一套固定的品牌色IE浏览器用蓝色、Chrome用珊瑚红、360极速用青色、360se用紫色、搜狗用绿色、QQ浏览器用浅蓝。这样颜色和浏览器能够一一对应用户看起来更直观。步骤3.7预览并发布所有组件的数据和样式都配置完成后就可以预览并发布大屏了。单击大屏页面右上角的预览图标预览可视化应用。检查每个图表的数据是否正确显示交互是否流畅样式是否符合预期。预览确认无误后单击发布图标。在弹出的发布对话框中单击“发布分享”系统会生成一个分享链接。单击分享链接右侧的复制按钮就可以把链接发给其他人查看了。在浏览器中打开这个链接即可在线观看大屏不需要登录平台。三、实验结果我们得到了哪些洞察大屏成功运行后我们得到了丰富的可视化结论。以下是一些关键发现第一个洞察Chrome是市场领导者但用户粘性并非绝对领先。从用户规模柱状图可以看出Chrome的用户数明显高于其他浏览器稳居第一。从使用时长占比饼图也能看到Chrome占据了最大的份额。然而当我们看向人均使用时长柱状图时会发现一个有趣的现象搜狗浏览器的人均使用时长超过了Chrome排在第一。这意味着虽然使用Chrome的人更多但使用搜狗的人可能对它的依赖度更高、粘性更强。用户数多不代表粘性高人均时长方能反映真实依赖度。这个洞察给我们的业务启示是不能仅关注用户规模粘性指标同样重要。对于Chrome来说需要警惕高用户数低粘性的风险对于搜狗来说可以研究其高粘性背后的功能或场景借鉴到自身产品中。第二个洞察用户活跃度在第4周出现显著下降。从周活跃趋势折线图可以看出所有主流浏览器在第4周的活跃用户数相比前3周都有明显下滑下滑幅度普遍在15%到20%之间。这个趋势值得警惕。可能的原因是数据时间范围是5月到8月第4周可能对应学期结束或假期开始用户使用电脑的场景减少了。但也可能是产品体验问题导致用户流失需要进一步分析确认。业务启示是需要进一步下钻分析确认下降原因。如果是季节性因素可以提前规划暑期运营活动如果是产品问题需要及时定位并修复。第三个洞察工作日与周末使用习惯差异明显。从工作日vs周末使用时长分组柱状图可以看到不同浏览器的使用场景差异。IE浏览器在工作日使用时长显著高于周末大约高出40%。这可能是因为IE浏览器在企业办公场景中仍然被广泛使用很多企业内部系统只兼容IE。Chrome在周末的使用时长占比相对提升说明它的用户群体更偏向生活娱乐场景周末在家使用较多。360系列浏览器在工作日和周末的使用时长差异较小说明其用户场景覆盖比较均衡。业务启示是针对不同浏览器的使用场景差异可以制定差异化的推送策略。工作日可侧重办公效率类功能推广周末可侧重娱乐内容推荐。第四个洞察超六成用户使用2种及以上浏览器。从浏览器使用数量分布饼图可以看出只使用1种浏览器的用户占比大约35%使用2种浏览器的用户占比大约40%使用3种及以上浏览器的用户占比大约25%。这意味着同时使用2种及以上的用户占比超过60%。用户忠诚度整体较低大多数用户不会绑定在单一浏览器上而是在不同场景下使用不同浏览器。竞品之间的替代风险很高。业务启示是抢夺市场份额的竞争会很激烈需要持续优化产品体验。可以针对“单一浏览器用户”重点维护他们是高忠诚度群体。针对多浏览器用户可以研究他们在什么场景下会选择你的产品强化这些场景的优势功能。第五个洞察24小时活跃分布呈现明显规律。从24小时活跃分布图可以看出一天中的活跃规律。早高峰出现在8点到10点用户开始工作或学习活跃度快速上升。午间小高峰出现在12点到14点午休时间活跃度有小幅回升。晚高峰出现在19点到22点这是全天最高峰娱乐场景主导。凌晨0点到6点是活跃度最低的时段用户都在休息。业务启示是产品更新、运营活动应在晚高峰前也就是18点到19点之间推送这样能确保最大触达率。系统维护可以选择在凌晨3点到5点进行对用户的影响最小。四、问题与解决那些“踩过坑”后的经验在实验过程中我们遇到了一些典型问题。这里把问题和解决方案分享出来帮助大家避开同样的坑。问题一数据加工后出现重复记录现象是在生成daily_browser_detail明细表后发现统计的总活跃次数远大于原始日志中的记录数数据被放大了很多倍。经过排查原因是ETL流程中的“排序记录”组件的排序字段与“分组”组件的分组字段不一致。分组组件按照user_id、usage_date、process_name、hour四个字段进行分组但排序组件可能只按照其中一部分字段排序或者顺序不一致。这导致分组组件在处理时无法正确识别分组边界同一个分组的数据被分散到了多个地方最终产生了重复。解决方案是检查“排序记录”组件的排序字段列表确保排序字段包含分组组件的所有分组字段并且顺序一致。也就是说分组字段是那四个字段排序字段也必须是这四个字段顺序也一样。问题二大屏图表数据未更新或显示为空现象是蓝图配置完成后预览大屏时图表显示“暂无数据”或者一直显示加载中。排查这个问题需要按照数据流向逐层检查。首先检查SQL请求节点选中该节点点击“测试”按钮看能否返回正确的数据。如果测试失败说明SQL语句有语法错误或者表名、字段名写错了。如果SQL测试正常检查数据源连接在“我的数据”中测试数据源连接是否正常数据库是否能够连通。如果数据源也正常检查数据处理节点的输出格式。在并行数据处理节点的代码中加一行console.log(data)然后打开浏览器的开发者工具查看控制台输出确认原始数据是什么样子的。然后检查return的对象字段比如x、y、name、value等是否与图表“数据接口映射”中的字段名称完全一致。字段名不匹配是常见错误比如图表期待的是x字段但你返回的是category字段图表就认不出来。问题三图表样式混乱颜色与图例不对应现象是折线图或饼图中线条或扇区的颜色与图例颜色不一致或者多个系列使用了相同的颜色看起来很混乱。原因是图表默认的系列颜色是自动分配的当数据动态加载后系列的顺序可能会变化但颜色没有同步更新。解决方案是手动指定每个系列的颜色。在画布编辑器中选中图表点击右侧面板的“数据系列”设置。根据实际分类的数量和顺序逐一指定每个系列的颜色值。建议使用固定的品牌色规范这样不同图表之间颜色一致用户更容易识别。比如六个浏览器的颜色可以分别设置为蓝色、珊瑚红、青色、紫色、绿色、浅蓝。问题四用户画像表关联后数据量异常现象是用户画像统计表的用户数总和远大于行为数据中的独立用户数。比如行为数据中去重后有1000个用户但画像表各维度用户数加起来可能达到了几千。原因是记录集连接前没有对两个数据源进行排序。在ETL中记录集连接组件要求输入的两个数据流都是按照连接字段排好序的。如果没有排序连接结果可能会出现笛卡尔积效应——每条记录和另一边的所有记录都尝试匹配导致数据被成倍放大。解决方案是在“记录集连接”组件之前分别为两个数据源添加“排序记录”组件。确保两个数据源都按照连接字段升序排序行为数据按user_id排序属性数据按USERID排序。连接类型选择LEFT OUTER JOIN左外连接以行为数据为主表这样行为数据中的每条记录最多匹配一条属性记录。五、 实验总结从“做出来”到“用起来”通过本次实验我们不仅掌握了一套从数据处理到可视化呈现的完整技能更重要的是建立了一种“以业务问题驱动数据分析”的工作方法。第一个核心经验先问“为什么”再想“怎么做”。每一步技术操作都应该服务于明确的业务问题。写SQL之前先明确要回答什么问题、需要哪些字段。选图表类型之前先明确要展示什么关系——是对比关系用柱状图是趋势变化用折线图是构成分布用饼图。做数据加工之前先反推需要什么粒度的数据、需要哪些维度和指标。脱离业务问题谈技术做出来的东西可能看起来很漂亮但没有实际价值。第二个核心经验数据产品的核心是准确与直观。准确是数据产品的生命线。ETL流程保证了数据源的准确性一个错误的数据加工环节可能导致整张大屏的结论失效。所以每一步数据加工都需要验证每个聚合结果都要核对。直观是数据产品的价值放大器。大屏布局和图表选型决定了洞察是否能被用户一眼看懂。好的可视化应该让用户在三秒内抓住重点而不是费力地解读图表含义。第三个核心经验组件化思维提升效率。ETL中的转换流可以复制复用不用每次都从头搭建。大屏中的区域可以成组后复制只需修改标题和图表类型就能快速生成新区域。蓝图中的并行数据处理节点可以一次性服务多个图表避免重复的SQL查询。善用这些组件化能力可以大幅提升工作效率。第四个核心经验问题排查有章可循。遇到问题时按照“数据源 → SQL → 数据处理 → 图表绑定”的顺序逐层排查。先确认数据源连接是否正常再确认SQL是否能返回正确数据然后检查数据处理节点的输出格式是否符合要求最后检查图表组件的绑定是否正确。这个排查思路适用于绝大多数可视化开发中的问题。如果这篇文章对你有帮助欢迎点赞、转发支持。感谢您的观看