天天看点

Apache Kylin权威指南2.1 核心概念

第2章

快?速?入?门

第1章介绍了kylin的概况,以及与其他sql on hadoop技术的比较,相信读者对kylin已经有了一个整体的认识。本章将详细介绍kylin的一些核心概念,然后带领读者逐步定义数据模型,创建cube,并通过sql来查询cube,以帮助读者对kylin有更为直观的了解。

<b></b>

<b>2.1 核心概念</b>

在开始使用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也是按时间顺序来构建的。