当前位置: 首页 > 科技观察

如何向8000人发布报告?苏宁多维报表平台应用实践!

时间:2023-03-21 18:36:09 科技观察

【.com原稿】随着“大数据”浪潮的到来,数据决定成败的观念已经传播到社会各行各业,深刻影响和改变着人们的思想。在工业界,数据已经成为企业的核心竞争力之一。越来越多的企业已经不满足于简单的数据采集和存储,开始尝试通过不同渠道挖掘数据宝藏。假设数据有10个维度,每个维度有10个值,如何任意组合、任意角度分析?这正是多维分析平台需要解决的问题。近两年涌现出很多优秀的开源产品:比如kylin、druid等。LinkedIn今年也开源了自己的解决方案pinot,可见多维分析平台的火爆程度。本文将与大家分享苏宁多维报表平台的探索。多维报表分析的发展历程下图展示了多维报表的发展历程。1969年,Congnos成立,专门从事多维报告。1970年,Express成立,2000年被甲骨文收购,成为甲骨文的多维报表解决方案。1984年,Metaphor成立,开创了基于关系数据库的多维运算模拟。1993年,奥拉普诞生。1999年,微软推出了OlapService产品。2007年,IBM收购了Cognos。苏宁为什么要开发自己的多维报表平台?苏宁是一家传统企业。早期采用Saas系统进行报表、ERP管理、财务数据管理。后来又购买了WEBI系统配合SAP系统的使用。WEBI系统于2016年停产维护。2013年,苏宁购买了Cognos8版本系统。目前,Cognos上有2-3千份报告,每天定期生成。上图是WEBI系统界面,下图是Cognos界面。多维分析软件的界面大同小异,一般都是根据一些维度和指标,勾选选项,制作报表,进行可视化的图形分析。在苏宁看来,自主研发的多维报表平台主要出于以下四点:商业成本。性能太慢。性能无法满足使用需求,跟不上业务场景的变化。技术驱动。苏宁要走IOE,技术驱动,综合积累。维护困难。苏宁多维报表平台解决方案概述苏宁多维报表平台设计理念Olap解决方案的最终概念归结为三个部分:数据、信息和知识。首先,获取原始数据,提炼信息,然后在信息的基础上进一步提炼知识。数据部分涉及采集、清洗、入库、算法平台等细节。信息部分是通过数据聚合、模型构建、多维分析引擎等一系列步骤形成的。知识部分,包括自助报表、权限控制、可视化分析等,是信息进一步细化的结果。苏宁多维报表平台架构如下图所示。最底层是业务系统,主要功能是收集数据,比如用户日志和各种业务系统日志。数据仓库层用于建模汇总,通过数据服务对外开放。报表工具制定报表,做自定义报表分析等。蓝色部分取决于云计算平台。苏宁多维度报表平台架构的整体流程,将整体流程细化为四个部分:数据采集、数据建模、Olap加速、报表分析。不用多说,数据收集,数据建模,可大可小,最简单的就是提取需要的信息。更广泛地说,建模可以用标签、算法和模型来完成。建模的目的是为了报告目的。只有通过Olap加速才能产生可??用的报表分析。最后是报表分析,这四个步骤是一个紧密结合的过程。Olap引擎技术选型Olap引擎选型理念市面上的Olap种类繁多,包括传统数据库,如DB2、MySQL、Oracle等。MPP解决方案,主要涉及GreenPlum。还有一些新的技术方案,比如ES、Druid、Kylin等,那么在这么多的加速引擎中如何选择呢?苏宁的做法是适应所有的解决方案,也就是说,没有必要局限于某个引擎。调用的引擎由场景决定,满足需求即可。Druid之Olap引擎目前Druid是苏宁比较重要的引擎,比如用户流量日志和订单数据,这些数据都是使用Druid。Druid有很多特点,这里主要介绍四点:实时计算。数据从kafka实时写入集合,支持实时索引和实时查询。时间分区。数据必须有时间字段,就是Log类。列式存储。按位置索引操作。聚合计算。count、distinct、sum、max、min等操作,已经满足了大部分场景。如上图所示,是Druid的一个应用结构。可以看到必须要有时间字段,还要定义维度字段和指标字段。指标字段为聚合,聚合方法采用近似算法。这里使用了基于Druid的聚合插件,但是没有开源。Olap引擎的Druid使用了高效的列式存储和快速的维度过滤。列式存储意味着每行只存储一列。比如有一个列必须是name,就是name这个维度。汇总压缩。在数字方面,设置指标。高效的聚合算法。聚合就是将多条数据聚合在一起,可以节省空间,提高效率。Druid对Olap引擎的SQL支持这里值得一提的是,选用的引擎标准是有SQL接口的,而Druid本身是没有SQL接口的。这里使用的解决方案是Calcite,可以通过SQL操作Druid,即通过SQL定义某个指标或者维度。方解石不能通过任何修改获得。Olap引擎ESES的功能主要包括数据分片、高效索引和聚合计算。索引选用了Lucence,在目前的索引开源方案中算是比较优秀的了。它本身也没有官方的SQL接口。ES设计的目的是搜索和存储一些详细的数据,而不需要时间字段。比如用户画像数据需要快速上报和监控,数据量非常大,用ES比较合适。而像日志记录之类的东西适合德鲁伊。苏宁多维报表平台的性能优化是针对性能优化的,我们的主要策略是缓存。首先分为几个场景:非日志数据,定时更新(典型的是用户画像)。日志数据(仅附加,时间分区):定期更新。日志数据(appendonly,timepartition):实时更新。场景一:非日志数据,定期更新(典型:用户画像)日志数据(appendonly,时间分区):定期更新,实时更新日志数据的特点是:历史数据一旦存储,就不会改变.对于查询历史数据,可以进行加速和优化:缓存。预先计算。对于销售等热门报表,可以提前预计算用户经常使用的维度组合,以加快速度。苏宁多维报表平台经营策略及架构选择权限控制苏宁拥有30+大区、500+城市公司、1500+门店、1300+易购服务站。如何给8000人打开一个报告的权限?有两种方式:?维护报表权限维度:区域、城市公司、门店等。?提取ERP中人员身份信息,自动匹配权限。衍生指标的计算——同比、环比、比率基础指标:直接根据当前数据计算,不需要其他数据。衍生指标:一般由多个基础指标数据(不同指标或不同维度)计算得出,甚至需要第三方数据来确定。逻辑:判断哪天是同一天,需要第三方逻辑数据。衍生指数计算回购率。财务指标:(xx产品结构实际购销率-其他产品结构购销差额/其他产品结构支付金额)*变化率(平均销售率-销售实值率)*产品支付总额。苏宁多维度报表平台的未来展望未来,苏宁平台的SQL是方解石支持的,也有多模型组合。目前,苏宁仍采用单机型组合,因为用户希望在一份报表中同时看到流量和销售数据。后面会进行多模型组合,做一些可视化的构建。王福平,苏宁大数据中心高级架构师,曾任百度大数据部高级工程师、一号店搜索与精准部架构师。一直从事大数据的研发工作,对大数据工具和机器学习有深刻理解。有实时计算经验。2013年,设计开发了基于公司实时处理平台的SQLonStream解决方案。对分享和技术传播的热情。目前的重点是数据分析平台的建设,旨在提供平台级的数据服务,打造“数据即服务”的一站式解决方案。以上内容由王雪艳编辑根据王富平先生在WOTA2017“大数据应用创新”专场的演讲内容整理而成。【原创稿件,合作网站转载请注明原作者和出处为.com】