第2章
快?速?入?门
第1章介绍了Kylin的概况,以及与其他SQL on Hadoop技术的比较,相信读者对Kylin已经有了一个整体的认识。本章将详细介绍Kylin的一些核心概念,然后带领读者逐步定义数据模型,创建Cube,并通过SQL来查询Cube,以帮助读者对Kylin有更为直观的了解。
2.1 核心概念
在开始使用Kylin之前,我们有必要先了解一下Kylin里的各种概念和术语,为后续章节的学习奠定基础。
2.1.1 数据仓库、OLAP与BI
数据仓库(Data Warehouse)是一种信息系统的资料储存理论,此理论强调的是利用某些特殊的资料储存方式,让所包含的资料特别有利于分析和处理,从而产生有价值的资讯,并可依此做出决策。
利用数据仓库的方式存放的资料,具有一旦存入,便不会随时间发生变动的特性,此外,存入的资料必定包含时间属性,通常一个数据仓库中会含有大量的历史性资料,并且它可利用特定的分析方式,从其中发掘出特定的资讯。
OLAP(Online Analytical Process),联机分析处理,以多维度的方式分析数据,而且能够弹性地提供上卷(Roll-up)、下钻(Drill-down)和透视分析(Pivot)等操作,它是呈现集成性决策信息的方法,多用于决策支持系统、商务智能或数据仓库。其主要的功能在于方便大规模数据分析及统计计算,可对决策提供参考和支持。与之相区别的是联机交易处理(OLTP),联机交易处理,更侧重于基本的、日常的事务处理,包括数据的增删改查。
OLAP需要以大量历史数据为基础,再配合上时间点的差异,对多维度及汇整型的信息进行复杂的分析。
OLAP需要用户有主观的信息需求定义,因此系统效率较佳。
OLAP的概念,在实际应用中存在广义和狭义两种不同的理解方式。广义上的理解与字面上的意思相同,泛指一切不会对数据进行更新的分析处理。但更多的情况下OLAP被理解为其狭义上的含义,即与多维分析相关,基于立方体(Cube)计算而进行的分析。
BI(Business Intelligence),即商务智能,指用现代数据仓库技术、在线分析技术、数据挖掘和数据展现技术进行数据分析以实现商业价值。
今天,许多企业已经建立了自己的数据仓库,用于存放和管理不断增长的数据;这些数据中蕴含着丰富的价值,但只有通过使用一系列的分析工具,进行大量的筛选、计算和展示,数据中蕴含的规律和潜在的信息才能被人们所发现;分析人员可结合这些信息展开商业决策和市场活动,从而为用户提供更好的服务,或为企业产生更大的价值。
2.1.2 维度和度量
维度和度量是数据分析中的两个基本概念。
维度是指审视数据的角度,它通常是数据记录的一个属性,例如时间、地点等。度量是基于数据所计算出来的考量值;它通常是一个数值,如总销售额、不同的用户数等。分析人员往往要结合若干个维度来审查度量值,以便在其中找到变化规律。在一个SQL查询中,Group By的属性通常就是维度,而所计算的值则是度量。如下面的示例:
select part_dt, lstg_site_id, sum(price) as total_selled, count(distinct seller_id) as sellers from kylin_sales group by part_dt, lstg_site_id
在上面的这个查询中,part_dt和lstg_site_id是维度,sum(price)和count(distinct seller_id)是度量。
2.1.3 事实表和维度表
事实表(Fact Table)是指存储有事实记录的表,如系统日志、销售记录等;事实表的记录在不断地动态增长,所以它的体积通常远大于其他表。
维度表(Dimension Table)或维表,有时也称查找表(Lookup Table),是与事实表相对应的一种表;它保存了维度的属性值,可以跟事实表做关联;相当于将事实表上经常重复出现的属性抽取、规范出来用一张表进行管理。常见的维度表有:日期表(存储与日期对应的周、月、季度等的属性)、地点表(包含国家、省/州、城市等属性)等。使用维度表有诸多好处,具体如下。
缩小了事实表的大小。
便于维度的管理和维护,增加、删除和修改维度的属性,不必对事实表的大量记录进行改动。
维度表可以为多个事实表重用,以减少重复工作。
2.1.4 Cube、Cuboid和Cube Segment
Cube(或Data Cube),即数据立方体,是一种常用于数据分析与索引的技术;它可以对原始数据建立多维度索引。通过Cube对数据进行分析,可以大大加快数据的查询效率。
Cuboid在Kylin中特指在某一种维度组合下所计算的数据。
Cube Segment是指针对源数据中的某一个片段,计算出来的Cube数据。通常数据仓库中的数据数量会随着时间的增长而增长,而Cube Segment也是按时间顺序来构建的。