网易有数技术白皮书V7.5
背景
近十年来,商业市场的数据量不断增加。来自IDC的数据表明,全球数据年生产量在2015年已经达到8.6ZB,约等于90亿块1TB的储存量总和。与数据量一起增加的还有数据结构的复杂度。以前简单的几列数字,几张表格,已经变成了由千百个维度和度量组成的复杂多维数据,这些改变让数据分析的成本不断升高。同时,市场飞速变化,竞争程度不断增加,以前商业运作中 “拍脑袋” 和 “凭经验”的决策方式所带来的弊端愈渐明显,领先的企业开始更多地通过数据分析来得到更高效更合理的方案。在这两方面的压力下,能否高效、低成本地对复杂数据进行分析,并将分析结果转化为推动企业发展的动力,成为了衡量一个企业竞争力的最重要因素之一。
商业智能的发展大致可以分为四个阶段:表格时代,传统商业智能时代,敏捷商业智能时代以及正在发展的智能商业智能时代。最早,企业使用Excel工具对数据进行储存分析处理,并将表格或图表在PowerPoint等幻灯片软件中汇总并制成报告,最后将报告文件发送给团队进行分享。随着企业数据的增长,数据库慢慢开始代替表格文件,使用Excel软件的劣势也渐渐显现出“数据库的数据需要下载下来发给数据分析人员,但因为数据库是随着企业运作动态更新的,这种操作会导致出现数据不同步”的问题。这种不同步不仅存在于数据库和数据文件之间,也存在于不同的数据分析人员和读者间。另一方面,基于文件的数据分析需要企业的数据分析人员数量随分析需求的增加线性增长,从而也带来人力成本增加的问题。
面对这一问题,企业开始寻求与数据库直接相连的数据分析产品,传统商业智能软件开始占领市场。同时,传统商业智能产品一般由第三方实施公司开展项目搭建,将企业的操作数据库(一般为OLTP结构)通过ETL转换导入为方便分析查询而设计的数据仓库(一般为OLAP结构),并使用商业智能工具对数据进行分析。这一过程中,实施公司会按照企业的需求在数据分析平台中完成报表的制作和展示平台的搭建。此类项目短则3个月,长则1-2年,并且成本极高。但是,随着市场节奏的加快,越来越多的企业意识到这种工作模式同样消耗大量的人力物力,渐渐无法跟上企业发展的脚步,严重影响企业对市场变化的判断和反映。另一方面,由于传统商业智能方案中的数据需要中心化处理与分析,虽然可以满足部分通用的需求,但无法实现不同数据阅览角色的个性化分析需求,传统商业智能软件依然无法解决数据分析师人力成本增加的问题。
基于上述原因,敏捷数据分析产品开始崭露头角。所谓敏捷,体现为数据在整个企业中的运转,价值挖掘,以及结果的分享,全链路都可以让用户自助完成。企业中的每个角色都可以根据自己的需求,自助进行数据分析,并且方便地将分析结果在团队中共享沟通,通用的报表制作时间也只有使用传统工具的几十分之一甚至几百分之一,让项目实施效率显著增加。与此同时,部分企业选择自主研发适合于自己业务和节奏的数据分析产品,以代替缓慢沉重的传统商业智能方案,但由于专场不在这个领域,成本非常高且效果往往不佳。因此,越来越多的企业选择购买第三方敏捷数据分析平台,打造响应更快速,成本更低的数据分析方案。
在此背景下,网易有数团队选择切入企业级敏捷数据分析平台方向的研发,利用多年来在数据处理、智能专家引擎、可视化效果库和前端应用技术和经验方面积累,立志打造一款能真正为企业带来价值的在线敏捷数据分析产品。
但不得不说,数据分析仍然有很高的门槛,数据素养的培养、分析的偏见、数据报告的解读等等仍然需要专业人士的深度参与。随着深度学习、自然语言等人工智能技术的持续发展,目前已经进入智能化数据分析阶段,人工智能技术将在交互,可视化以及分析等多个环节持续增强产品能力。有数也将会在智能数据分析领域持续探索,为用户以及行业提供更加先进的智能商业产品。
产品介绍
网易有数用数据将组织中各类角色连接在一起,实现整体的效率提升。管理层可以随时看到自己最关心的核心指标以清晰美观的方式被展现,提出的问题也可以迅速通过数据分析而获得答案。
网易有数是一款智能大数据敏捷分析平台,在有数中你可以快速建立数据分析报告,发现数据中的价值,并将结果分享给其他用户。连接好数据之后,只需几分钟就能完成数据模型(或称为业务主题)的建立以及报告的创建与分享。通过自主研发的数据可视化智能推导引擎,用户无需编写繁琐的代码,简单的托拉拽几步即可完成多维分析,然后即时将报告分享出去,IT人员便可以免去以往繁琐的支持维护工作。
网易有数通过健全的安全系统设计,最细粒度可以支持到单元格级别权限设置,也可以将权限与用户的属性进行关联,从而实现用户权限的动态调整。无论是业务人员,还是数据分析人员,都可以在设置的权限范围内快速获取需要的数据,在海量的信息中高效寻找到最重要的数据结论,并与团队进行即时、便捷的交流共享。
功能介绍
数据连接
网易有数提供丰富的数据源支持,从传统的Excel到关系型数据库mysql、oracle,再到海量数据kylin、Hive、Spark,再到最新OLAP数据引擎Druid、ClickHouse、Druid以及Restful和API。简单几步配置即可完成数据连接,全程不需开发接入即可完成数据准备。
业务流程
数据源选择
数据建模
传统的数据建模需要数据开发深度参与,业务流程长并且缺乏灵活性,数据模型的创建过程往往无法跟上业务的发展。有数产品将建模过程产品化,分析师或者普通用户通过拖拉拽的方式可以自助完成数据建模,不需开发配合,极大提高了数据分析的效率。而且,在建模阶段,有数支持空值,计算字段,数据字典自定义SQL等轻量级ETL功能进一步帮助用户提高效率。
同时,基于MPP架构,通过抽取的方式将数据同步到有数,实现异源异构数据的多维分析;结合MPP列存以及分布式查询等特点,有数可以帮助用户提高大数据量场景下的查询效率(亿级数据场景下的复杂查询可以达到秒级响应)。
抽取管理
抽取设置
可视化建模
报告
几步简单操作即可实现自助式分析。用户不需要掌握任何SQL语言,简单拖拽,有数便会自动生成高效的查询代码,让用户快速完成报表的的制作或调整。在报告内,可自由灵活地对多张图表进行组合布局,支持图表的堆叠,排版,分组,分层等高级操作。不限于数据图表,报告还支持添加矩形、文本、图片、注释,箭头等非图表控件以便支持。产品支持多级数据筛选,报告参数,图表联动,跨视图分析,预测聚类等高级分析功能,产品在可视化上支持雷达图、桑吉图,旭日图、热力地图等高级图表,同时支持引用echarts图表以制作拥有高灵活性的报告。
大屏
大屏以可视化模板作为核心功能点,内置多种动画、控件以及主题。不需要SQL以及代码能力,普通用户通过拖拉拽可以做出一个优美酷炫的可视化大屏,满足会议、展览以及业务监控等多种场景。产品功能上支持标题、图形堆叠,交互以及其他组件,满足用户在不同场景下的可视化展览需求。在大屏可视化产品支持图表、滚动文字、时间器以及多种可视化素材供用户使用以及报告制作。
数据门户
数据门户以帮助客户建立数据产品作为主要目标,客户基于有数的数据门户可以快速搭建面向不同行业以及角色的数据产品。数据门户的核心功能包括:创建独立站点,支持自定义站点名称,自定义导航,风格主题;创建移动端微应用,支持集成到第三方App中。跟报告、门户以及复杂报表打通,同时支持集成第三方页面以及链接; 完善的发布、管理以及权限体系。
复杂报表
有数的复杂报表采用类 Excel 式交互设计,支持多种报表形式,包括网格式报表,分组式报表,交叉式报表,分片报表,柱子报表等多功能报表形式。产品功能上包括合并表头,多级报表组合,帮助企业建立企业级报表平台,同时,复杂报表也支持集成到有数报告中作为关键组件使用。
数据填报
企业在运营过程中有很多线下数据需要收集入库,有数填报支持企业将离散的线下数据收集起来写入数仓。产品功能上,有数的数据填报支持用户自定义表单模板,用户通过拖拉拽即可制作内容丰富的数据表单,并将之发布出去。同时,有数的数据填报支持轻量级任务流,不需要工程师接入,用户可以独立完成表单的发布,填写,审批,入库等全链路操作,完美解决企业的线下数据采集和分析问题。
表单制作
表单填写
自助取数
自助取数以产品化方式帮助终端用户快速获取数据,解放数据开发生产力,加快数仓设计。使用有数的自助取数功能,用户无需 SQL,拖拽式操作即可快速取数,查询结果数据支持一键同步至其他系统,实现快速数据变现,取数结果支持一键生成可视化分析报告。同时取数产品支持将大数据量查询通过接口方式推送给业务系统以及定制化接口。
数据模型库
取数界面
智能决策
智能决策帮助终端用户及时获取异常数据,自动归因,快速决策,将数据的价值贯穿整个业务过程,实现数据驱动业务发展。通过灵活的规则组合设置预警策略,实时监测核心指标,并有多渠道的预警通知。预警支持报表和模型两个层级的预警功能,模型预警可以让开发基于数据直接设置预警,当数据产生异常时,系统能够快速通知终端用户。报表预警针对某一指标或者图表设置预警,终端用户根据业务经验设置预警,当数据异常时快速得到消息。用户可以设置同环比值、固定值、计算值、预测值等预警规则,应用丰富的预警场景,预警消息支持邮件、短信、钉钉、微信等多端触达用户,实现预警的统一管理与预警历史的追溯。
指标异动分析支持用户设置异动规则,对核心指标进行拆解,从而实现异常指标的自动归因,节省盲目找原因的时间,提高决策效率,快速应对多变的商业环境。
决策引擎支持用户创建个性化业务场景下的不同决策事件,通过由“如果”、“那么”构成的完整决策流,实现多场景监测与执行动作建议,完成个性化的消息推送和数据推送。
添加决策事件页面
指标异动分析界面
驾驶舱
制作完报告之后,可以通过定时邮件发送给相关人员或领导,让每个人都可以第一时间获取最新最有价值的信息。还可将报告发布为驾驶舱,相关人员可以第一时间了解数据动态。同时驾驶仓提供产品跨项目集成功能,领导可以在驾驶舱中获得企业全局视角。
产品特点
多维可视化数据探索
为了帮助用户实现对数据全方位、多角度、深层次的查询和计算,深入了解数据中蕴含的信息和价值,有数所有图表建立在透视结构基础上,使用户能在复杂的多维数据中迅速发现亮点。
智能推荐,让用户迅速获得最优的可视化方案
恰当合适的数据可视化方案可使信息呈现更直观,有数使用基于关系代数和图形语法的智能引擎进行数据可视化智能推导,用户只需选择自己关心的数据,有数便可以根据数据特性为用户推荐最合适的图表,为用户的探索式数据分析提供思路。
智能问答,用自然语言绘制图表
有数提供智能问答功能,用户输入自然语言,有数即可生成对应图表。比如输入“各地区汽车销量占比”,即自动生成对应的饼图,生成的图表可直接拖拽至报告面板,简单便捷。
智能分析,自动发现数据规律
除了帮助用户进行数据可视化之外,通过多种算法辅助,智能分析可以帮助用户发现数据背后的规律,获得数据之外的洞察。用户只需要点击智能分析按钮,有数会自动帮助用户生成分析报告。
图表联动,直观选定分析范围
有数支持多张图表间的联动,如图所示,当在右侧的环状图中选中“欧洲”,左侧的折线图会对应呈现欧洲各年份的汽车销量数据。
多端支持
为了使用户随时随地方便查看报表,网易有数平台全部基于HTML5开发,HTML5具有天然的跨平台特性,用户可以在PC、手机和平板等不同终端使用网易有数。
数据权限
数据分析对于数据的权限控制要求非常高,网易有数使用了基于RBAC的权限控制模型,可以精确到数据库行级权限控制,允许不同用户查看同一张报表时看到不同的数据,同时对于如姓名,电话等敏感信息,除了可以在数据的行级别做到细粒度控制,有数还支持对数据列设置权限,对核心数据再增加一层保护,让用户对数据做到最细粒度的管控。
行权限设置
列权限设置
全局搜索
有数支持对项目内所有资源的标题和内容进行搜索,包括报告、数据大屏、数据门户、自助取数等。用户只要在顶部搜索栏输入对应资源或引用字段的名称,即可显示对应资源相关信息,在海量资源中迅速找到所需内容。
全局搜索“销售额”结果页
历史回溯功能
数据分析是个探索性很强的过程,我们鼓励用户在使用时进行不断的试错,深掘数据的潜在价值,历史回溯是个必要的容错机制。有数选择不变数据类型代替常规的命令模式来实现历史回溯功能。
团队介绍
网易有数的团队来自牛津、剑桥、浙江大学等国内外知名学校。汇集了业界顶尖的专家。平台团队由网易前端技术专家领衔,可视化团队由网易游戏资深的图形专家领衔,数据团队有1名oracle mysql ACE(全国只有两名),保证网易有数生成的查询是高效的,比起大部分程序员写的SQL语句质量更高。
技术架构
网易有数架构图如下:
核心模块
平台层
有数业务平台基于Nodejs平台和浏览器实现了Javascript全栈开发。它包括
· 高性能平台Server
· 高效图形化界面
- 高性能平台Server
平台层连接数据接入层和智能推导层,并且提供一组抽象API给前端使用,需要做到稳定、高并发、快速响应,提供权限控制以及其他周边服务。它主要负责提供
- 高并发请求处理服务
- 请求的合并及缓存
- 细粒度权限控制
- 网页截图服务
- 日志收集以及分析
平台层本身的业务逻辑由于不涉及大数据分析所以性能瓶颈不在计算量。而对并发却有着很高的要求,所以我们选择了单线程无阻塞的Nodejs作为平台层语言,并且构建了一个基于Nodejs的MVC Web Server框架,实现了可配置路由,过滤器等功能。
- 基于Web的富交互系统
有数团队基于Web技术提供类似Native应用的体验。它主要包含了以下亮点
- 历史回溯功能
有数是个探索性很强的平台,需要鼓励用户在使用时进行不断的试错。所以历史回溯是个必要的容错交互。有数选择不变数据类型代替常规的命令模式来实现历史回溯功能。
- 拖拽交互
拖拽在常规界面开发中是一种常见的交互,它可以简化操作步骤,减小记忆负担。 另一方面,在有数这样一个强依赖数据抽象的界面,用户也可以借由拖动操作,直观的感受到数据从哪里来到哪里去。
- 前端单页系统(SPA)
单页应用即Single Page Application, 是一种普遍被应用的开发模式。
从产品体验上来讲,页面的切换更快了,因为只有需要改变的部分发生的更新,所有全局资源都不需要重新加载、解析和渲染。从数据通信层讲,服务端的压力更小,一次切换只需返回数据即可。而从开发层面来讲,前后端开发被强制通过API接口通信实现了分离,后端只需关心数据接口服务,这个也有助于保证未来对各端(Android、IOS等)的API统一。
有数在部分模块使用自主开发的框架实现了单页系统的服务端预渲染,达到了性能和开发效率的平衡。
图表渲染引擎
有数图表描述包含了图表的结构、数据、数据到图元的映射、交互、样式、统计信息等,图表渲染引擎主要负责对图表合成模块生成的图表描述进行解析,确定图表结构、内容以及图表各个部分的参数、样式、交互行为等等,最终将图表描述渲染成一个在画布上可呈现的,反映数据特点的图表。
请求处理模块
请求处理模块对用户输入的可视化查询请求(visual query)进行分析,这个请求对应的数据透视表会有多种单元格。理论上,可视化查询请求会为每种单元格生成一个可视化查询语句(query sentence),每条查询语句最终都会被翻译成一条数据库查询语句(SQL)来获取数据。但是一个可视化请求生成的多个可视化查询语句是可能处于同一维度粒度(dimensional granularity),此时,它们可以合并成一次数据库请求,这对网易有数产品的性能是至关重要的,因为数据分析时大部分的时间会被消耗在从数据库查询的环节。
智能推导模块
做为数据可视化智能助手,合适的图表不仅仅在外表上需要做到美观,还需要根据数据的特征来推断出合适的图表类型最终呈现给用户,让用户能够高效快速的理解数据,从而在数据探索中发现价值。
推导模块使用形式化语言—图形语法(Grammar of Graphics)来描述可视化图表, 并通过逻辑编程(Logic Programming)对可视化查询语言中的描述的数据特征进行逻辑推理、演绎从而在有限的空间内找到最佳的可视化图表组合方案用以呈现数据。
智能推导模块当前完成了两种主要功能:
- 在用户指定图表的数据呈现配置,如x,y轴,颜色,大小等绑定的数据之后,根据数据属性做出图表种类的推导。
- 在用户指定需要呈现的数据,以及想要看到的图表种类,如柱状图,折线图,饼图等,根据数据特征,推导出最合适,高效的展现数据的图表配置方案。
图表合成模块
图表合成模块是智能推导系统最终输出的功能模块,承担了表达的功能。合成模块通过解析理解推导模块的推导结果,结合用户的个性化定制,生成最终可被绘制出来的图表配置。现在我们主要配合使用的是自主研发的JavaScript可视化库NEV,所以合成模块主要的工作是针对NEV图表库生成声明式的图表配置代码。
具体来说,我们首先会根据可视请求处理模块的透视图表结构划分,生成主要框架,然后依据图表推导模块的推导结果,以及对于不同类型的数据的不同解读方式,选用合理的呈现方法,例如:用离散的颜色映射展现离散的数据区分或用连续的颜色渐变展现连续的数据变化, 用于呈现连续数据的轴上需要在大刻度上配置网格线以更好地辅助用户观察图表。
同时合成模块需要根据数据的属性以及位置对它在图表上的呈现做一些区别,例如自定义的配色方案、小数点、货币单位等数据格式配置。
数据计算层
数据计算层提供数据源无关的数据集计算能力(如沿着某些维度计算差值,累积和,窗口平均值等等),以及透视结构整理功能,为上层应用准备好可以立即使用的数据。
数据访问层
数据访问层通过一系列技术手段屏蔽了多种数据源之间的差异,使得多种数据可以以一致的方式在有数产品中使用。数据访问层的工作主要包括:
- 设计实现了数据连接适配,实现MySQL、Oracle、Hive、Kylin、Excel的无缝接入。
- 提供动态文件数据库,支持Excel, CSV文件的导入。
- 自定义SQL语法的中间表达。使得数据访问请求可以根据数据源的不同产生不同的SQL语句以完成数据查询。
核心技术
基于grammar of graphics的图表渲染引擎
NEV是网易自主研发的一款基于grammar of graphics的图表可视化引擎,采用了JSON格式来描述图表的结构、数据、数据到图元的映射、交互、样式、统计信息等。它采用了一种面向对象的设计,将各种类型的图表放在一个统一的描述框架中,具有良好的可扩展性。
在图表展现方面,NEV提供了智能人性化的布局策略,无需用户干预,能够根据绘图区的大小,图表类型,数据量,文本内容等因素来综合确定整个图表区域的图形内容的展现方式,保证了图表的“信达雅”。为了满足各种用户风格迥异的外观需求,NEV提供多套外观主题,例如“海洋风格”,“黑色风格”,“简洁风格”等等,而且还允许用户自己来编写个性化的主题样式的配置,做到图表结构和样式、交互分离,可以针对任意结构的图表定制样式和交互,大大扩展了NEV的适用场合。
在图形映射方面,为了更好地建模图形与数据之间的动态关系,自主研发了一套类似于D3的selection的数据驱动机制,实现了图元和数据的动态的对应以及互操作。
在底层渲染方面,NEV采用了自主研发的基于canvas 2d的图形渲染库colorbox,基于stateful trait的OO机制能更高效复用代码,避免传统OO中菱形继承、同名等问题。基于frp的交互消息机制能让用户方便、简单地订制各种复杂交互,同时避免传统 callback 交互机制中各种状态维护控制问题。
基于关系代数和图形语法的数据可视化智能推导引擎Insight
Insight是有数服务端的智能可视化引擎,可以被看做是有数的『大脑』,它主要有三个部分组成: 请求解析模块、图表推导模块和图表配置合成模块。
Insight对于最终数据展现的可视化方案主要做了两个核心工作,一个是基于关系代数的图表透视结构分析,一个是基于图形语法的图表类型推导。
Insight从输入的可视化请求中对使用关系代数分析出行与列应当如何划分,其中的一些维度会决定表头,把表格划分成方格(Pane),再根据决定轴的数据进一步把方格划分成单元格(Cell),每个单元格可以通过属性面板设置不同的配置,包括图表类型与视觉属性,在分析高维数据的时候使用数据透视表可以十分容易地对比、参照与观察各个单元格内的数据。
呈现给用户的可视化图表需要使用形式化语言来描述,这种图表语言的语法被称为图形语法(Grammar of Graphics),每一个具体的图表都是符合这种语法的一句话,称为图形语句(Graphical Sentence)。初始时会有若干种基本的图形语句,也就是基本的图表,符合一定条件的多个图形语句可以组合成复合的图形语句来表达不同各类的图表的呈现。由于人的视觉感知能力是一种资源,因此组合操作的意图是尽量合并两个图表兼容的部分,产生出能让人类更高效地视觉感知的图表(图形语句)。图表类型推导使用了逻辑编程的方法,基于图形语法来完成了合理高效的可视化解决方案,包括选择可视化图表类型以及在图形上组合多维的可视化属性,如颜色,大小,形状等。
安装部署
网易有数主要使用私有部署形式,目前支持单机部署和分布式部署两种方式,硬软件要求如下:
用户数 | 500人以下 | 500人以上 |
部署方式 | 单机部署 | 分布式部署 |
硬件要求 | 专用服务器 CPU 16核以上 内存64G以上 | 根据具体用户规模制定 |
操作系统 | Linux | |
数据库 | mysql |
以上内容对您是否有帮助?