网易在智能分析领域的应用与实践

本次分享将从以下三个方面做介绍:

PART 01 部门介绍

网易大数据主要分为俩部分:大数据底层的网易猛犸和大数据应用层的网易有数,具体介绍见下图。

PART 02

1. 网易数据平台发展史

经过多年大数据分析的技术积累,网易有数目前服务 150+ 项目,报表 20000+,用户超过 3000,整个过程主要分以下几个阶段:

① 初级阶段:

  • 数据统计为主,分析为辅:BIEE 配置了大量统计报表,主要为公司内部各级人员提供报表功能,分析功能比较弱,需求环节较长。

② 起步阶段:

  • 引入 Hadoop 存储计算平台:面对海量的业务数据,开始尝试引入 Hadoop 来解决数据存储和计算问题。
  • 数据获取更方便:通过 Hive 提供查询功能,开发人员可以通过 HiveSQL 响应分析和业务人员数据需求。

③ 整合阶段:

  • 统一数据采集机制:针对不同移动端平台开发了数据采集 SDK,WEB 端开发了 JS 数据采集器,服务端开发了数据接入 API 接口。
  • 规范化指标体系:统一了产品、市场等业务的数据评估指标,使得网易各产品间的数据有了对比的可能。
  • 场景化分析产品:针对产品、设计、运营和市场等不同场景提供相应的分析产品,提供特定的分析模型用于评估业务效果。
  • 数据高质量分析管理:从数据采集、传输、存储、管理、分析和展示等一系列流程保证所有业务数据的高质量、可管理和可分析。

④ 提速阶段:

  • 加速工程师开发工作:通过猛犸工具提供的计算任务调度管理、任务作业流管理、数据传输和同步管理加速工程师的数据开发工作。
  • 提高数据获取速度:Hermes 通过优化底层数据模型和数据分析架构,提高数据获取的速度。
  • 提升数据分析师效率:通过有数可视化工具完成大量数据探索工作,固化分析结果,形成日常报表。
  • 更快发挥数据价值:通过有数和 Hermes 分别进行数据探索和数据获取工作,极大提高了数据价值发现过程。

这是目前大多数公司的分析方式:

这是我们认为比较高效的分析方式:

2. 当时面临的挑战

① 分析工具层面:

  • 缺乏易用性:用户上手困难,甚至需要用户进行编码;
  • 缺乏洞见性:图表类型固定,无法支持对数据个性化探索,无法挖掘出数据中隐藏的故事;
  • 缺乏连贯性:用户无法在一个平台内完成整套数据分析;
  • 性能不好:在大数量的情况下,响应慢。

② 用户层面:

  • 用户自身数据分析、可视化知识的匮乏。比如不知道如何用合适的图形来更有效的反应数据。

③ 对数据产品的要求

  • 易用性:直观的拖拽式的交互操作,大大地缩短数据建模,查询,可视化的时间;
  • 高性能:使用内存数据库等技术,加速查询,可混合多种数据源;
  • 连贯性:一个人,在一个平台中,可以快速独立完成所有的分析工作;
  • 洞见性:帮助用户发现问题,定位问题,进行决策。

PART 03

1. 智能分析平台:网易有数

网易有数是企业级大数据智能可视化分析平台,他可以通过拖拽,自然语言搜索的方式,智能化的完成数据分析与探索。下图为网易有数的编辑界面。

2. 易用性

网易在智能分析上的探索:具有易用性、智能化的可视化系统中的图形智能推导技术。

具体表现为:

  • 用户通过拖拽、点击式的操作,可以轻松完成数据分析与探索;
  • 可视化过程中,系统给予用户可视化辅助建议,更好的指导用户完成;
  • 能够支持通过自然语言进行图表的制作,真正降低用户可视化门槛,实现数据驱动运营。

下面为大家展示一些 Demo:

① 易用:拖拽、点击、完成一份精美的报告

② 智能推荐:“还可以怎么看”

根据图表当前的字段,能够匹配值最适合展示的图表类型,用户可以轻松点击完成图表制作。

③ 智能位置匹配:“应该怎么看”

用户双击某个感兴趣的字段,字段会自动匹配放置到最合适的位置。

④ 智能问答:基于自然语言绘制图表

基于用户的文字输入,匹配出最合适的图表,并给出相应的推荐。

VQL

上述的功能我们是如何做到的呢?实际上,有数在拖拽式数据建模、查询和可视化背后的核心逻辑就是我们把它编译成了 VQL(Visual Query Language) ,一种可以拖拽式生成的数据可视化请求语言

接下来,将为大家详细讲解下背后的逻辑:

这是图表的界面,它的面板显示了 X 轴,Y 轴分别代表了什么,以及一些筛选条件,这其实就对应了我们的 VQL。

因为要支持拖拽字段的方式生成图表,所以需要解析图表配置面板上的信息,可视化查询也就是图表数据面板上面的字段配置信息,比如 X 轴 Y 轴哪些字段,顺序是怎么样的。

配置的背后会表示成类似 json 格式的结构,会告诉我面板 X 轴上有什么,Y 轴上有什么,颜色上有什么,等等。

当这个配置传给平台端之后,会根据配置做两件事情:

  • 划分透视结构
  • 获取数据,把这个配置对应的数据获取过来

一个图表构成的要素有以下三个:

  • 图表的透视结构
  • 图表每个格子内的图形设计
  • 图表中每个格子的数据

对于上图,可以看到 X 轴和 Y 轴的配置,根据这个配置我们会得到中间的图,这里有个定义,Pane 是相同结构的东西,如左图,Pane 里面会有一个 Cell,所以通过这个配置,我们得到了一个 2*3 的透视结构,有 6 个 Pane(块),12 个 Cell(格子)。

结构知道之后,我们需要把数据从数据源中调取出来,当有了数据之后,就可以根据数据结构来切分数据,切分成一个个 pane 和 cell,在这之后,就是智能推导模块要做的事情,寻找最合适的标记组合图形语句。

这里不得不提图形语法,它阐述了一个重要的概念:

  • 不仅数据是有结构的,图形也是有结构的,如上图,虽然看上去形式是两样的,实际上,只是把图表从笛卡尔坐标系转换成了极坐标系;
  • 图形语法首先描述了图形的结构,并提出了一种组合的方法,从而可以描述无穷无尽的图表。

所以,图表也是由一些基础的组件,搭建而成的,如坐标轴,平或者扁的标记,颜色等等配合而成的。那么,网易有数在做智能推导的时候,也是运营了图形语法:

  • 几何标记:可视化中标记通常是一些几何图形元素,例如:点、线、面
  • 视觉通道:用于控制几何标记的展示特性,包括标记的位置、大小、方向、颜色、色调、饱和度、亮度等。

这里引用陈为老师《数据可视化》中的例子说明:

图 A 表示了三个不同班级的数学平均分,用柱状图表示,矩形作为几何标记,柱状图的高度作为一个视觉通道,编码了数学平均分的值;

图 B 中,我们想在 A 的基础上多展示语文平均分这一项数据(即增加了一个数据维度),则选用点这个形状作为几何标记,点的横坐标编码语文平均分的值;点的纵坐标编码数学平均分的值。

这时候发现图 B 中我们把班级这个数据维度给丢掉了,于是我们可以用颜色这一视觉通道来编码班级这个属性信息,如图 C。

如果我们还想展示班级人数这一信息,则可以用尺寸这一视觉通道来编码,如图 D。

所以有数的面板中也会有几何标记和视觉通道。

那么说了这么多,想表达的意思就是,我们希望通过寻找合适的标记组合,把图形展示出来。

举个例子,上图就是车辆颜色销售额的排名,那么这张图在有数是怎么做出来的呢。

它是由这两张图合并出来的,上边是用线做出来的图表,下面是用点和数字做出来的图表,它们表示的都是同一个意思。

寻找最合适标记的方法:

  • 基于数据特征的标记类型推荐

① 数据角色 ( Role ):维度 ( Dimension ) 、度量 ( Measure )

② 数据阐释 ( Interpretation ):离散 ( Discrete )、连续 ( Continuous )

③ 数据类型 ( Type ):整数、小数、字符串、日期、时间、地理等

  • 标记类型推荐:基于字段的放置位置

① 轴的配置 + 视觉属性

图形语句合并的时候,会有一些算法逻辑包含在里面。

最后,VQL 主要的内容解析完毕之后生成的透视表结构,数据,以及推导出来的抽象图表描述将会交给图标合成层,合成最终将在前端渲染出来的图表配置。在这个模块中,VQL 中剩下的一些信息,如用户自定义的轴的范围,数据格式等将会被解析执行。这就是 VQL 智能生成与解析的完整链路流程。

使用 VQL 让网易有数具有以下的这些优点:

  • 用户可以不需要编写 SQL 代码,通过较为简单的拖拽,只需要表达对于可视化图形的需求,我们就能从中提炼并自动生成获取数据的代码。
  • VQL 的表达能力也是非常强大的,复杂的复合可视化图表的表达一样非常简单,多层嵌套的透视图表,双轴图,地图等,都可以在 VQL 中统一的描述。
  • 最后,VQL 的这种表达方式让用户可以更容易的建立起数据和图形之间的联系,从而使用户可以互动式的探索挖掘数据,让有数的可视化探索分析成为可能。

以上就是今天要解决的第一个点:易用性,以及在智能化上的探索。

3. 洞见性

从上图可以看出,很多时候,我们停留在什么地方?比如我们用一个分析工具,来描述当前的业务现状,做了一些报表,做了一些监控,帮助我们发现问题,但是其实用户更想知道的是为什么会发生这些问题,未来是否还会发生这样的问题,是否可以提前知道,应该该如何解决,这块我们把他认为是高级分析领域,目前大多数分析师,还是停留在知道发生了什么。

针对这样的问题,我们有了智能模块,包括:智能洞察、智能问答、机器学习。

① 智能洞察

比如我想查看下华东和东北为什么会有这么大的差异。

这里会有两种,一种是对比分析,一种是解释分析。

  • 对比分析:不需要用户自己找差异,根据不同的维度、指标,会直接告诉用户差异在什么地方,方便用户找到他需要的原因。

  • 解释分析,这里没有截图,其实也比较好用,就是会解释下为什么会有这种情况。

② 智能问答:自然语言解析

智能问答的作用有很多:

  • 通过语言的描述,快速的做图表
  • 回答各种问题,比如销售额为什么会下降

如上图,我们输入了“2018 年销售额情况”,下面就是我们智能问答给出的结果:

③ 机器学习算法

这是常用的一些机器学习算法,直接集成在网易有数中,比如回归、聚类、时序预测等,这里并不是做成黑盒傻瓜式的工具,而是根据用户自己的需求进行选择。

4. 高性能

影响性能的因素:

  • 数据量巨大,查询耗时
  • 查询请求数大,数据引擎并发受限

性能优化的点很多,这里以报告性能为例:

报告性能由会由几部分构成:页面渲染、数据查询,网络延迟等等,页面渲染通常比较容易优化的,这里的难点在数据查询,它跟用户数据源的性能是强相关的,如果用户数据源性能非常差,那么请求就会非常慢,经常落库查询会需要 20s,但是如果可以命中缓存的话,其实只需要 0.06s。

所以,我们的思路就是如何做缓存:

这里我们有两个层面:

① 数据驱动,从被动缓存(可能用户第一次查询这个数据的时候会非常慢,那没关系,这时我们已经把它缓存了,当用户再次查询这个数据的时候就会非常快)到定时缓存(用户第一次查询还是很慢,这时就会采用定时缓存,比如每天 3:00 定时把报表都重新刷一遍,这样就起到了加速的作用,但是这种方法对计算资源消耗非常大),这时我们就采用了数据驱动缓存:

比如说我有这些报名,它们背后都有对应的数据模型在猛犸中,所以表数据有没有更新完,猛犸是很清楚的,当表猛犸更新完之后来主动触发对所有图表的缓存,这样就解决了缓存的问题,同时也实现了图表级的缓存。

② 精细化

从对报告级缓存,到页面级缓存,再到图表级缓存,越来越精细化。从上图可以看出,当达到图表级的时候,对系统的压力就非常分散了。

5. 分析思路产品化

这也是我们有数在做的事情,分析思路产品化:当用户使用的时候只需要选择对应的模板,把自己的数据替换进去,就可以了。

PART 04

最后给大家分享一些案例:


这是我们的一些大屏展示

这是生成海报的例子

最后,欢迎大家登入官网体验我们的智能分析平台:

https://youdata.163.com/

作者介绍:

王文开,网易大数据资深数据产品专家,复旦大学软件工程硕士,从事多年可视化分析工作,具备丰富的数据分析、智能分析实践及应用经验,熟悉国内外主流 BI 产品。目前任职网易数据科学中心,负责网易数据分析产品设计工作。

本文来自 DataFun 社区

原文链接:

https://mp.weixin.qq.com/s?__biz=MzU1NTMyOTI4Mw==&mid=2247493311&idx=1&sn=eed00341c8445026535a69d2701acfb9&chksm=fbd754d3cca0ddc55818ae1b2549dd660b7c5b37cf16fdc8ba08811dfab31adb04d34870e963&scene=27#wechat_redirect