下面以一个BI项目为例,该项目立足于为企业建立一个商业智能数据管理的统一平台,实现自助式数据处理、多维数据分析、可视化分析。下面介绍建立BI项目的意义与需求、项目目标、系统设计与阶段划分。
在快速变化的市场环境中,企业能不能及时地通过数据分析验证产品思想,常常决定产品占领市场的速度。通过数据分析,能揭示用户对新上线产品功能的满意程度,帮助企业快速定位用户痛点,从而避免产生错误思维。但是,随着企业业务的快速发展,企业早期采用的数据分析方法已不能满足要求。
目前,随着数据量的增加,企业面临的数据需求越来越多,数据复杂度也越来越高,如图2-1所示。
图2-1 企业面临的数据挑战
随着企业数据量不断增加,数据需求也日益增加。庞大的数据量,导致脚本处理数据所需的计算资源不断增加,当单机性能达到极限时,数据分析的并行性就会降低,每一次执行任务所需的时间会变长,一旦某个数据需求需要重新执行,就会造成所有需求进度的延迟。
此外,随着数据源的日益丰富,数据之间的关系越来越复杂,错误发生的频率不断提高,这给数据分析人员的工作带来很大挑战,因为缺少统一的统计口径,数据不一致性问题日益突出。
在企业业务不断发展的今天,数据的复杂度越来越高,从数据需求的角度看,业务越发展,就越需要对决策提供数据支持,也要求数据需求分析的速度更快。
随着数据量的增加,数据之间的关系变得更加复杂,现有数据分析模式的使用效率降低。要想为企业各个业务部门的发展提供决策依据,帮助管理人员更好地了解业务现状,改善数据分析状况,我们提出一套全面的解决方案,以改变当前企业数据使用效率较低的现状。
这个项目基于Apache Superset的BI数据可视化研究,以一家著名电商品牌的线上销售数据为例,从不同维度对其客户数据、销售数据、供应商数据等进行抽取、过滤和转换,最终以合适的方式呈现结果。该项目需要优化的方向如图2-2所示。
图2-2 需要优化的方向
(1)降低代码数量:对于数据分析员来说,代码数量过多也容易产生较大的工作量,应避免通过编写代码来完成简单的数据统计。
(2)缩短运行时间:由于数据量很大,简单的计算、统计任务往往要花上一天或几天时间来完成,应缩短数据分析运行时间。
(3)优化数据复杂度:数据来自多种数据源,如金融、运营、渠道和若干App产品的商业数据库,并且企业大都采取敏捷开发,业务变化非常迅速,数据结构也不稳定。
(4)统一指标与算法:针对同一指标,若不同开发者所使用的数据来源、算法不一致,就会造成外展数据显示存在相互矛盾的情况,导致业务方对数据分析结论不信任。
(5)提升工作效率:几乎90%的需求是由业务方临时提出的,一方面大大提高了数据分析的实时性要求,增加了数据分析的工作量,另一方面,业务方又难以根据分散的需求获取数据所提供的价值。
我们知道,可视化技术的核心功能是使用户在最短时间内获得数据的总体信息和大多数细节,而这种方法显然不能直接观测到数据。如果设计师可以预估到使用者的行为和期望,并以此作为视觉设计依据,就能帮助使用者了解视觉效果。BI可视化开发需要遵循以下8个方面的原则。
视觉是获取信息最重要的渠道,人脑对美的感知没有统一的标准,但有一定的规律可循,美学标准原则有稳定的构图、合理的信息布局、适宜的色彩情感等。
传统的数据可视化以各种图表组件为主,而优秀的数据可视化设计需要具有绚丽的视觉效果,且通常需要具备以下特征:颜色搭配合适、信息承载丰富、动画效果逼真等。
通过对数据进行分析、挖掘,提取出隐含在数据中的信息,然后根据叙述的需要,选取适当的视图类型,最后有层次、有顺序地使用一个或多个视图展示数据中包含的重要信息。
合理的信息展示有利于向用户清晰地叙述故事,视图不是越多越好。合理的基本评判标准是:筛选信息密度,使信息展示量恰到好处;区分信息主次,使信息显示主次分明。
可视化的核心是要使用户在最短的时间内获得数据表达的信息,所以要充分利用内在经验,从数据中选取适当的数据映射到可视化元素,以提高可视化设计的实用性。
可在数据可视化期间自动交换数据信息,从而促进可视化的交互。在需要用户交互操作时,要保证操作的引导性与预见性,并在交互之后有反馈,使整个可视化故事自然连贯。
在利用数据叙述故事时,将陌生的数据信息用可视化用户熟悉的事物进行比较,可以降低可视化用户的理解门槛,深入了解你的产品,提高视觉使用者对故事的理解。
动画和转播效果使视觉效果更丰富、更易理解,可以提高用户互动的反馈度,还可以增强重点信息或者整体画面的表现力,吸引用户的关注力,加深用户对视图的印象。
BI项目的目标是解决企业在数据分析工作中遇到的问题与瓶颈,为企业提供所需的数据支持,具体内容包括以下方面,如图2-3所示。
图2-3 项目目标
(1)满足数据查询。伴随着企业的成长,数据分析员的数量越来越多,项目在线运行必须能够承受数据分析员同时执行查询语句的负载,只有这样,才能最大限度地提高多人协作的效率。系统对查询语句的执行速度也要够快,才能保证数据分析与输出的效率。
(2)积累数据需求。企业的数据分析,比较理想的情况是数据分析员已经将大量的数据需求进行了整合,并将业务方的一些指标沉淀为报表的形式,然后形成定期报告或实时报告,即席查询作为整个需求系统的一部分,起到补充、验证的作用。通过即席查询的方式,不仅可以减少分析人员大量的重复性工作,提高业务方面的数据使用体验,还能显著降低系统负载。
(3)统一数据口径。企业对数据的稳定性、连贯性等方面有着很高的期望,数据组应为一个整体,对外输出一致的数据。若统计口径不统一,各指标算法不一致,将导致分析人员对同一项指标给出的数据不一致,甚至难以自圆其说。因此,需要建立统一的指标体系,详细定义每一个指标的具体算法。
(4)规范数据集。因为企业经历了后端数据库的迁移,所以现在有两种后端数据库共存。从历史上看,前台埋点返回的数据是由两个后端数据库的键混合在一起的,这就造成了数据分析员要花很多时间处理迁移前和迁移后两个关键字段之间的联系,模式的标准化需要处理大量的连接操作,数据的使用体验不佳。所以,新开发的BI平台希望以数据仓库技术为基础,提供一套集成、统一、易用的数据集,以进一步提高数据分析的效率和数据使用体验。
BI平台的主要目标是提高数据分析员的工作效率,同时提高数据需求的输出速度,提供统一的报表入口,尽可能避免数据结构变化对数据分析的影响,系统设计的基本原则如下,如图2-4所示。
图2-4 系统设计的基本原则
(1)创建中间层。对原始数据建立中间表,数据分析就不会直接依靠原始数据,原始数据的更改也就不会直接影响分析代码的可用性。
(2)梳理业务过程。对业务方感兴趣的业务,预处理一批中间表,以离线计算或实时计算的形式完成数据汇总等运算,提高查询速度。
(3)整理需求类别。根据业务方面的要求,以报告的形式提供需求,即席查询只是处理临时需求,减轻数据分析员的工作负担。
BI系统的开发过程比较复杂,针对电商企业的实际需求,项目可以分为以下几个阶段,如图2-5所示。
图2-5 项目阶段划分
(1)数据准备阶段。明确需要哪些商品信息,以及如何获取真实、有效的商品销售数据。
(2)数据提取阶段。对于第一步获取的原始数据,其格式、结构参差不齐,因此如何对这些数据进行清洗、转换并从中提取有效信息,是最为关键也较为复杂的一步。
(3)数据存储阶段。对提取的原始数据进行数据清洗处理及格式转换,针对有效数据设计数据库结构,建立相应数据库,并且能对数据库中存储的数据表进行查询、更新等操作。
(4)数据可视化阶段。对于不同维度甚至多维度数据,选择高效、灵活的可视化方式进行展示,并且在可视化图表中实现交互,用户可通过图表透视数据库具体内容,还可以将多个数据切片整合到一个可视化看板中。
(5)分析总结阶段。可视化图表将数据以直观的方式展现出来,管理者可通过对图表信息的对照分析,总结产品销售情况,并对未来做出合理预测。