1. OLAP是什么
1.1 OLAP的基本概念
OLAP(online analysis processing),联机分析处理技术,多应用于BI工具,也可以叫做OLAP工具/引擎/数据库。它帮助数据分析师从多个角度对数据进行分析和数据挖掘,用于多维数据查询和报表处理的需求,核心是多维度。
提到多维度,就会有单维度、二维度,这时你就要在脑海里建立起“维”的概念,用维度去思考周围的世界。
我举一个服装销售的例子,商品销售一般需要考虑的数据是销售额、销售成本和销售利润。下表是一张典型的二维数据表,其中月份就是一个关键的维度。
如果我想要在这张二维表的基础上增加服装的类别,比如说:毛衣、连衣裙、牛仔裤、半裙、T恤等,这时候维度就是月份和服装的类别,度量值是销售额、成本、利润。
这就引入了概念:维度、维度的层次、类别、度量
- 维度:用来对数据进行分类和人们观察业务情况的角度;
- 维度的层次:根据维度细节程度不同,划分出来的一类属性,是维度预先定义的不同级别。例如,日期维度的层次包括年、月、日;
- 类别:是各维度的层次上数据项的取值,例如,日期维度的层次月的类别有:1月、2月、3月等;
- 度量:用来描述业务情况的数据,例如,销售额、成本、利润都是度量值。
1.2 OLAP是如何做多维分析的
OLAP多维分析技术的数据处理逻辑是首先把数据预处理成数据立方体,可以简单的理解为把源表选择不重复的唯一值进行分组,并把有可能的汇总都预先计算出来,当用户选择多维度查询或者分析时,会在预先计算出来的基础上很快给出用户想要的结果,从而快速支持极大数据量的分析。
而这其中又涉及到一个知识点:数据立方,数据立方体是什么?
还以刚才讲到的服装销售数据情况为例,将数据处理成数据立方体之后如下图:
数据立方体还有一个高大上的名字:多维数据模型。例如,将上图的立方体拆可解成一个多维数据模型:
当然,实际上一个商品销售表的维度绝不止这些。例如,增加地域维度、支付维度、用户维度等之后,就形成了一个星型多维模型:
这张图中间的表叫事实表,四周的表叫维表,事实表是用来记录具体事件,包含具体要素。
例如:某人(用户ID)在某地(地域ID)某时(时间ID)通过某种方式(支付ID)购买了某产品(产品ID),维度表是对事实表中的每个字段展开描述,例如用户ID,展开成一张维度表,记录该用户的姓名、地址、年龄、性别等信息。
通过对源表中的事实表以及相关的维表通过不同的拆分组合形成和业务相关的,具有多维度的数据立方,让数据根据不同的业务需求呈现出千变万化的结果。
多维分析是以多维的形式组织数据,并采用切片、切块、钻取、旋转等多种分析方式探查数据,使分析人员或者管理人员能够从多方面、多角度去查询数据,从而得到有价值的信息。
所以针对数据立方体包含的操作有:下钻(drill- down)、上卷(roll- up)、切片(slice)、切块(dice)、旋转(pivot)
- 下钻:往更细粒度深挖,从上一层次到下一层次,例如:浙江省维度的数据,经过钻取可以分为杭州市、宁波市,湖州市、绍兴市等地级市维度的数据;
- 上卷:和钻取意思相反,从细粒度向上聚合,例如将北京、上海、深圳、广州的销售数据进行汇总查看一线城市的销售数据;将2020年四个季度的数据汇总成2020年总数据等都属于上卷;
- 切片:选中特定的值进行分析,比如只选择电子产品的销售数据,或只选择浙江省一个省粒度进行分析;
- 切块:比切片粒度更大,选择某个维度中多个范围内的数据。例如选择2020年第一季度到第二季度的销售数据,产品种类中电子产品和日用品的销售数据;
旋转:即维度位置互换,像一张表的行和列互换,旋转是根据不同的需求,改变分析角度。例如本来将产品作为观察角度,在地域和时间维度上不同产品的销售情况,旋转之后分析不同地区的销售情况。
1.3 OLAP的类别
根据数据存储格式OLAP可分为ROLAP、MOLAP、HOLAP。
ROLAP:基于关系数据库的OLAP,以关系型数据库为基础,以关系型结构对多维数据进行数据存储和展现,常用的开源技术有Presto、Impala;
- MOLAP:基于多维数据库的OLAP实现,其中切片、切块是主要技术手段,数据检索速度较快,但是生成立方体的时间较长,数据存储在多维立方体中,常用的开源技术有Kylin、Druid;
- HOLAP:是基于关系性和多维矩阵型等混合型的OLAP,它的技术主要结合MOLAP和ROLAP两种技术的优点。
在数据架构时,目前没有一个OLAP技术能在数据量,灵活程度和性能上(吞吐和并发)做到完美,这块大家可以深入了解后,根据自身的业务需求选择相应的技术。
2. OLAP怎么用?
2.1 OLAP的实现架构
OLAP就是用来帮助我们解决数据访问、快速的数据分析、报表展示等问题,OLAP多维分析的实现架构大致包括:业务数据源、数据仓库、多维分析模型设计、多维分析立方体生成、报表图表制作。
业务数据源:OLAP可以支持多种数据源连接分析,主流数据源包括SQL类数据源,可将其进一步划分为关系数据库与分析型数据库,其次还有NoSQL类数据库、大数据离线计算系统以及API类数据源,文件类数据源等。
数据仓库:将业务数据源中的数据按照一些业务属性相关规则进行数据开发后,形成一个个主题数据库存放于数据仓库中,当需要做数据分析时,直接从数据仓库获取相关主题数据。
多维分析模型:常用的多维分析模型有雪花模型和星型模型。
- 星型模型:将多维数据分成事实表和维表,事实表存储的都是指标数据和维表的关键字段值,维表存储维度的层次、类别等信息。维表和事实表通过主外键关联在一起,形成了星型模型。
- 雪花模型:对于层次较复杂的维,可以使用多个表来描述。例如,一个产品销售数量实施表,维表有产品维表、时间维表、产品类型维表、地址维表,地址维表又包括国家、省级、地市等维表。通过建设雪花模型,可以最大限度的减少数据存储量以及关联较小的维表来改善数据查询的性能。
多维分析立方体:就是我们上文讲到的数据立方体,数据立方体使OLAP工具能够实现便捷快速查询、分析。
报表图表制作:我们使用BI工具时,行外人最常接触的功能,通过拖拉拽的方式,将数据用一个好看又直观的方式展现出来。报表制作的组件有很多种,例如,柱状图、折线图、双轴图(或叫柱线图)、散点图等。
2.2 OLAP的实施过程
2.2.1 需求阶段
需求分析包括:通过调研得出的业务需求(从维度、各业务的分析主题等方面进行描述)、性能需求(系统相应时间的要求)、技术需求、安全性需求以及需求的优先级等。
在需求阶段,是我们熟悉相关业务知识的过程,这对我们接下来的设计环节至关重要。
2.2.2 规划阶段
在需求分析的基础上,需要对项目的整体结构有一定的了解,按照软件工程的一般规则和方法规划整个项目的过程。同时需要确定整个项目需要的资源,包括人力,做哪些相关培训等内容。
2.2.3 设计阶段
设计阶段是整个OLAP实施最重要的阶段,包括对模型的分析、维度的分析和设计、事实表的设计等内容。其中模型的分析包括定义问题和确定分析的目标和内容,A这家电商公司全年销售的毛衣的利润总额是多少?在2020年第一年度,牛仔裤的利润趋势是什么?
维度的分析包括分析问题中所涉及的维度是哪些,每个主题中维度和度量值是多少。
2.2.4 构建模型阶段
根据业务需求确定需要分析的主题,根据分析的主题确定分析的粒度和度量值,包括分析的维度。例如,服装销售情况信息主题主要从服装类别、日期两个维度进行分析,最后测试和验证模型的正确性。
2.2.5 报表展现阶段
报表展现阶段,就是将分析的结果以一种直观、清晰明了的方式展现出来,可以利用一些成熟的报表工具展示(例如Cognos),也可以选择自己开发,在OLAP模型的基础上进行多角度的分析并展示,达到说明问题的效果。
3. 结语
OLAP很大程度上能够降低数据分析的使用门槛,大大降低了数据挖掘的成本,既方便数据分析师挖掘数据,又能让不熟悉sql语言的产品、运营等业务同学通过简单的鼠标拖拽即完成数据分析或者查询设计。
联机分析处理技术是为了数据分析、数据查询等需求能够快速响应,BI工具是助力数据应用的最后一公里,不论是处理简单的报表需求还是真的帮助企业做职能决策,都是为了让数据能够真正的发挥价值。BI工具要想又快又好的完成需求,需要依附于OLAP技术。
当我们接触一个自己还不熟悉的新事物时,可以先去研究其来源、底层的逻辑,就会发现新事物相关的蜘丝马迹,毕竟站在巨人的肩膀上我们能走的更远,在你研究的过程中,说不定就发现了什么新大陆,成为下一个创新者。