01 什么是OLAP?
说到数据分析,OLAP大概是最常见的选择。因此,作为一名数据人,要想搭建一个业务的数据分析平台,OLAP是你不得不掌握的必备技能。
OLAP(OnLine Analysis Processing ,联机分析处理 ) 是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。在实际的商业分析中,OLAP联机分析更多的是指对数据分析的一种解决方案。
OLAP联机分析首先是把数据预处理成数据立方(Cube),并把有可能的汇总都预先算出来(即预聚合处理),然后在用户选择多维度汇总时,在预先的计算出来的数据基础上很快地计算出用户想要的结果,从而可以更好更快地支持极大数据量的及时分析。
OLAP联机分析最基本的工作就是对数据方(Cube)的操作,因此,首先让我们了解数据方(Cube)的维度层次划分和基本操作,并在此基础上,掌握应该从哪些方面考虑数据并构建出业务模型。为了方便大家的阅读理解,下面所有的举例分析都是基于图一数据方(Cube)的基础上进行的。
02OLAP的数据源的层次划分
OLAP联机分析是从多维信息、多层次信息的角度,针对特定问题进行数据的汇总分析。因此,站在数据面的角度考虑,数据源需要满足如下层次划分:
维度(Dimension):是用户观察数据的特定角度,是问题的一类属性,属性集合构成一个维度(时间维、地理维等)。举个例子:图一数据方(Cube)中的季度维度和城市维度。
维度的层次(Level):用户观察数据的某个特定角度(即某个维度)还可能存在细节程度不同的各个描述方面(时间维包括日期、月份、季度、年)。举个例子:图一数据方(Cube)中的季度维度还可以进一步划分为月份的维度,月度还可以在日期的细节粒度进行描述。
维度的成员(Member):即维度的一个取值,是数据项在某个维度中位置的描述,如“某年某月某日”是在时间维度上的位置描述。举个例子:2016年一季度是一个维度的成员。
度量(Measure):多维数组的取值。举个例子:机票在2016年一季度上海市的出票量。
03OLAP的数据操作
OLAP联机分析是在基于数据方(Cube)的基础上进行操作的。因此,站在分析的角度上,数据源需提供支持钻取(Drill-up和Drill-down)、切片(Slice)和切块(Dice)以及旋转(Pivot)等操作。
钻取:改变维的层次,变换分析的粒度。它包括向下钻取(Drill-down)、向上钻取(Drill-up)。
向上钻取是在某一维上将低层次的细节数据概括到高层次的汇总数据,或者减少维数。举个例子:将北京、上海、广州等三个省市的机票出票量进行汇总来查看北上广一线城市的出票情况。
而向下钻取则相反,从汇总数据深入到细节数据进行观察或增加新的维度。举个例子:将2016第一季度的出票量进行下钻,查看具体1月、2月、3月三个月的每月的出票量。
切片和切块:在一部分维上选定值后,关心度量数据在剩余维上的分布。如果剩余的维只有两个,则是切片,如果有三个或以上,则是切块。
切片是选定特定的值进行分析,在立方体(Cube)上的感觉就是选定一个维度后进行的平面切分,就像是一刀切。举个例子:只选择机票这个票种的销售数据,或者2016第一季度的数据。
切块是选择维度中特定区间的数据,或者某批特定值进行分析,在立方体(Cube)上的感觉就是挥几刀切出一块。举个例子:2016第一季度到2016第二季度的销售数据。
旋转:变换维的方向,即在表格中重新安排维的放置(如行列互换)。举个例子:图一数据方(Cube)中季度维度和城市维度的旋转互换。
04如何构建多维数据模型
在实现数据方(Cube)的过程中,由于业务灵活多变,导致了构建的业务模型随之经常发生变化,而业务维度和量度一旦发生变化,研发人员需要把整个Cube(多维立方体)重新定义并生成,数据人员只能在此Cube上进行多维分析,这样就限制数据人员快速改变问题分析的角度,从而使数据分析平台成为死板的日常报表系统。
为了避免这一情况,数据人员在前期过程中,就需要理解数据并且构建出符合业务的多维数据模型,包括:
源数据如何拆分到不同字段中?
例如如何把季度拆分到日期的格式,日期date拆分成yyyy-MM-dd这样的字段格式进行存储。
哪些字段用于维度?
例如季度、城市、票种等都可以作为维度字段。
哪些字段用于统计指标?
例如出票量、销售额这些都可以作为指标进行分析统计使用。
使用什么样的规则来对数据进行聚合?
例如是进行简单的汇总,还是要进行一般的加减乘除,又或者更复杂的规则进行聚合。
用户经常使用的组合查询是?
例如经常把季度和城市进行组合查询汇总,这些都需要提前考虑清楚。
排序规则?
例如经常会按照出票量和时间等进行排序。
05 写在最后
掌握以上几点以后,你会发现一旦多维数据模型建成后,OLAP联机分析并没有想象的那么复杂。大数据分析架构在这个巨大Cube的支持下,直接把维度和度量的生成交给咱们数据人 ,由数据人自己定义好维度和度量之后,Hadoop会将业务的维度和度量直接翻译成MapReduce运行,并最终生成业务报表。
网友评论