数据仓库设计与开发
数据仓库设计
一、数据仓库设计的特点
1. “数据驱动”的设计
数据仓库是从已有数据出发的设计方法,即从数据源抽取数据,经转换形成面向主题,支持决策的数据集合。以全面了解并利用现有数据为出发点。在进行设计之前就要清楚地知道数据源系统中已经有什么数据,它们与数据仓库设计的对应关系等。尽可能地利用已有的数据和编码等,而不可能“无中生有”地产生数据和编码。
2. “分析驱动”的设计
是从决策分析需求出发的设计。从已有数据源出发,按照决策分析主题对数据源中数据及其之间的联系重新考察,并重新组织形成数据仓库分析需要的主题数据。
3. “需求模糊”的设计
数据仓库设计的数据分析处理需求更加灵活,也没有固定的模式,有时用户自己对所要进行的分析处理也不能事先确定。数据仓库的分析需求在设计初期往往是模糊或不明确的,通常只有在数据仓库设计过程中,或后来数据仓库的决策支持过程中逐渐明确。
4. “螺旋周期”的设计
数据仓库系统的开发是一个动态反馈启发式的循环过程,也称为螺旋上升的周期性开发过程,即“螺旋周期”。数据仓库的数据内容、结构、粒度、分割以及其它物理设计,需要根据用户使用数据仓库所反馈的意见和建议进行调整,以提高系统的效率和性能;用户在使用数据仓库进行决策过程中,不断提出新的决策分析需求,增加新的主题,使数据仓库进入新一轮的设计周期,数据仓库进一步完善,为用户提供更准确、更有效的决策信息。
二、数据仓库系统开发过程
数据仓库系统的开发过程的5个时期:规划时期、设计时期(需求分析、概念设计、逻辑设计、物理设计)、实施时期、开发时期和应用时期。
数据仓库系统的开发过程的3个阶段:将规划和设计时期称为“规划设计阶段”,实施和开发时期称为“实施开发阶段”,应用时期称为“使用维护阶段”。
数据仓库设计过程的“螺旋周期”性:通过这5个阶段的数据仓库开发应用的过程,实现了前期规定的数据仓库主题建设和应用开发任务,为决策者提供了基本的决策分析工具,同时也积累了数据仓库开发和应用的经验,可以转向其它主题的数据仓库开发应用;通过对前期数据仓库的开发和应用经验积累,又对前期建设的数据仓库提出修改建议或者新的决策需求,使其数据仓库得到进一步的改进和完善,以便为决策者提供更加丰富、准确和有用的决策信息。

1. 规划时期
对建立数据仓库系统进行必要性、可行性、甚至不可行性分析。对不可行的项目提出取消数据仓库建设的建议,对可行的数据仓库项目提出全面的开发规划。
2. 设计时期
决策需求调查、数据仓库环境分析,数据仓库开发需求确定;各种模型的建立,包括多维数据模型、星型模型、雪花模型和物理模型等,特别是数据源的属性列与数据仓库目标列的映射关系等,并根据选择的数据仓库管理系统,完成相应的物理设计。
3. 实施时期
根据逻辑阶段设计结果创建一个数据仓库文件,及其有关的事实表和维度表;为数据仓库中的每一个目标列确认数据抽取、转换与加载的规则,开发或者购买用于数据抽取、数据转换以及数据合并的中间件;将数据从现有系统(数据源)中装载到数据仓库之中并对数据仓库进行测试。
4. 开发时期
开发一系列对数据仓库进行查询、分析和挖掘的决策支持工具,建立基于数据仓库的决策支持应用平台。
5. 应用时期
对数据仓库的用户进行培训、指导;将数据仓库投入实际应用,充分发挥数据仓库在决策中支持效果;在应用中不断改进和维护数据仓库;对数据仓库进行评价,提出新的决策需求,为数据仓库下一循环的设计开发提供依据。
三、数据仓库系统的规划
规划的必要性:数据仓库系统的规划工作对一个企业或部门的发展都可能产生深远的影响。
实施规划工作:由系统的建设单位(投资方)和用户合作完成,可以聘请数据仓库系统设计开发方面的专家来指导建设单位完成;将整个规划任务委托在数据仓库系统设计和开发方面有资质的咨询公司负责完成(政府部门和事业单位常用这种方式),但投资人和用户也必须参与其中。
规划的任务:建立数据仓库系统的必要性、可行性、甚至不可行性分析。对可行的系统确定建立数据仓库系统的总体目标,包括可靠性和安全性等方面的设想,并制定数据仓库设计与实施计划。
1. 确定开发目标和实现范围
(1)数据仓库使用部门、使用人员和使用目的?
(2)在为用户提供决策支持时,决策主题需要哪些数据源以及需要什么工具来访问?
(3)数据仓库项目设计开发的起止时间,甚至资金预算。
2. 确定数据仓库系统体系结构
通常有虚拟数据仓库、单纯数据仓库、单纯数据集市、数据仓库和数据集市等4种体系结构可供选择。其实现的难易程度、实现所需的时间和费用各不相同,且决策支持的方式也不相同。
(1)虚拟数据仓库:决策支持功能直接在事务处理数据库上实现,这就是“2合1”系统。
(2)单纯数据仓库:从数据源中抽取、转换和加载到一个统一的数据仓库之中,各部门的查询和分析功能都从这个统一的数据仓库中进行。适合管理部门较多,用户较少的情况。
(3)单纯数据集市:一个部门使用的数据仓库,因为企业中的每个职能部门都有自己的特殊管理决策需要,而统一的数据仓库可能无法同时满足这些部门的特殊要求。适合企业个别部门对数据仓库的应用感兴趣,其它部门十分冷漠之。
(4)完整数据仓库:数据仓库从企业各种数据源抽取数据,部门数据集市从企业数据仓库中获取数据。适合各部门都对数据仓库应用感兴趣的企业。
3. 确定数据仓库系统应用结构
用户角度:系统的功能大致可以分为前端显示和后端处理两部分。
软件开发人员的角度:系统功能应该将其分为数据管理、事务控制、应用服务和用户界面(表达逻辑)等四大部分。
系统应用结构:系统四大功能在客户端和服务器之间进行划分的一种方式,每一种划分就称为一种应用结构(Application architecture)。
(1)集中结构
一个主机带多个终端的多用户数据仓库系统应用结构。系统的数据源、ETL、数据仓库、数据集市、DWMS、应用工具及其客户端程序全部在主机上运行,终端仅具备基本的输入和输出功能。

(2)两层结构
① 客户机/服务器结构(Client/Server),简称 C/S 结构。数据仓库系统的数据源、ETL、数据仓库、数据集市、DWMS等集中在主机上运行,客户机负责应用工具、客户端程序以及数据的输入输出功能。
② 浏览器/服务器结构(Browser/Server),简称 B/S 结构。数据源、ETL、数据仓库、数据集市、DWMS以及应用工具等集中在服务上运行,客户机通过 URL(Uniform Resource Locator)向Web 服务器提出服务请求,Web服务器将服务内容传送给客户机,并显示在浏览器上。

(3)三层结构
在两层结构基础增加应用服务器一层。鉴于三层 C/S 结构仍然存在两层 C/S 结构的缺点,实际应用中主要采用三层 B/S 结构。
三层B/S结构把数据仓库系统的四大功能分为三个层次。
① 表示层:客户机的浏览器负责表达逻辑并与用户交互(客户机)
② 功能层:Web 服务器及其应用扩展,实现应用服务(称为应用层)
③ 数据层:数据仓库服务器 负责数据管理和事务控制

(4)多层结构
① 多层结构是在三层结构基础之上发展起来的数据仓库系统应用结构。在这种结构中,一般是根据系统应用规模,将功能层分为两层或者更多层。
② 它将功能层 Web 服务器中的应用服务功能分离出来放在不同的服务器上运行,可以使 Web 服务器专注于响应用户的 Web服务请求,而应用服务器专注于应用服务功能的实现,以增加系统的灵活性和适应性。

4. 确定数据仓库项目预算
数据仓库的设计开发具有需求模糊,螺旋周期的特点,但可以根据决策使用部门、使用人数、基础软件和硬件平台、以及数据仓库设计开发等所需费用,对数据仓库系统开发方案预算进行粗略的宏观估计。
5. 编写可行性分析报告和规划纲要
在完成数据仓库规划后,应写出详尽的可行性分析报告,编制数据仓库系统规划纲要,内容包括数据来源、数据范围、人力资源、设备资源、软件及支持工具资源、开发成本估算、开发进度计划等。
6. 评审可行性分析报告和规划纲要
由决策部门的领导组织召开有数据仓库专家、决策部门负责人、决策分析人员以及其他行政领导参加的评审会,对其进行评价。
如果评审认定该系统规划可行,应立即成立由企业主要领导负责的数据仓库设计开发领导小组,以便协调各个部门在数据仓库系统建设中的关系,保证系统开发所需的人力、物力和财力,保证设计开发工作的顺利进行。如果需要的话,应同时对外发表项目招标公告。
四、数据仓库的设计
数据仓库的设计包括需求分析、概念设计、逻辑设计和物理设计四个阶段,其设计工作一般由项目中标的软件企业负责完成。项目的投资方和用户通常需要密切配合软件企业的需求调查和设计工作,以确保设计结果符合投资方和用户的决策分析需求。
(一)需求分析
1. 需求调查
需求调查目的:了解企业决策的主题需求以及支持这些主题的数据来
需求调查对象:企业或事业单位的中高层管理者以及决策分析人员。
需求调查过程:围绕数据仓库的开发目标,实施范围,询问或征集他在管理决策中最关心问题:你每天(周/月)最需要知道哪些统计数据,是否还需要客户、城市等其它统计数据;你经常参阅或使用的统计分析图表有哪些,每张图表通常在什么时间使用,所有这些统计图表需要哪些部门的数据等,同时把企业工作中使用的这些统计分析图表收集起来,作为需求分析的原始资料。
需求调查方法:个别交谈,也可以是小型会议,还可以预先设计一份调查问卷,并分发给有关人员填写后收回。
2. 分析整理
(1)确定主题
明确哪些主题对于企业决策是最有价值的?用户希望从哪些角度(维度)观察每一个主题?每个维度有哪些维层次?每个维层次又有哪些维成员?各个地区需要哪些信息来制定决策?
(2)确定数据源
哪些数据源(操作型)与决策主题有关?数据源中哪些数据列与决策主题有关?决策主题需要怎样的数据细节程度?
(3)估计数据量
根据主题需要的数据源行数、属性列数来估计数据仓库的数据总量大概有多少。
(4)确定抽取频率
决策支持所需的数据增量抽取的频率是多少,是每小时、每天还是每周?数据仓库中保留数据的时间区间要多长,是5年还是10年?过期数据如何处理,直接删除还是转到其它存储介质?
(5)确定关键性能指标
数据仓库查询分析有哪些关键的性能指标?如何评价和监控这些关键指标?数据仓库的预期用途在哪些方面?对规划中的数据仓库重点要考虑什么?
3. 需求说明
在需求调查和分析整理基础上,依据一定的规范撰写需求分析说明书。其主要内容有
(1)数据源:包括数据源的数据结构,数据源的位置,数据源的计算机环境,可用的历史数据,数据抽取方案;
(2)数据转换:数据仓库中的数据为决策分析服务,而数据源所在系统的数据为业务处理服务,因此,需求说明书需要描述如何正确地将这些数据源转换成适合数据仓库存储的数据;
(3)数据存储:数据仓库所需数据的详细程度,即数据所在维的最低层次,还包括关于存储需求足够的信息,估计数据仓库需要多少历史和存档数据。
例3-1 以“某市警务数据仓库系统”实例为背景,简单介绍需求分析所做的主要工作。
需求调查:
通过与公安派出所等有关领导、治安管理负责人等进行需求调查后发现,他们经常,特别是在重大节假日期间,希望了解并掌握如下一些与决策主题相关的统计分析数据。
(1)最近几天或者一周,在指定派出所或公安分局辖区内宾馆住宿的旅客主要从哪些地区而来;
(2)最近几天或者一周,在指定派出所或公安分局辖区内宾馆住宿的人中有没有犯罪前科人员,他们所犯前科类型是什么(大类、小类还是子类)?
(3)最近几天或者一周,在指定派出所辖区宾馆住宿的人次,平均住宿天数等;
(4)以上问题还可能是以小时为单位的查询,比如周六晚上11点至凌晨2点之间辖区内的宾馆入住人员数量等。
(5)数据来源于6个不同的数据库应用管理系统:户籍管理系统(称为常住人口),暂住人口管理系统,酒店客房管理系统、治安管理应用系统、辖区旅馆基本信息管理系统等。
分析整理:
(1)确定主题
警务数据仓库的首个主题,并将其命名为“入住”,并用 Hotel 作为别名。
① 主题涉及的事实有“入住人次”和“入住天数”等。相关的维度主要是入住宾馆的“人员”,“时间”和所入住的“宾馆”。
② 旅客的来源地,可以从人员的户口所在地或籍贯信息获得,而旅馆所属治安管理的辖区从旅馆基本信息的所属派出所地址信息中找到。
(2)确定数据源
根据确定的主题和警务信息管理处提供的可用原始数据库,我们确定了主题所需的数据源有8张基本表。虽然它们分别来自不同的应用系统,但为了方便,我们将它们统一放在一个名为OLTPHotel 的数据库中。
① 旅馆数据源表 LGXX,共有65个属性描述旅馆的名称、电话、地址等基本信息。
② 常住人口数据源表 CZRK,共有128个属性描述常住人口的身份证号、姓名、性别等公民基本信息。
③ 宾馆入住数据源表 LGRZ,共有34个属性描述旅客身份证号、姓名、性别、入住时间、离店时间等入住宾馆的基本信息。
④ 暂住人口数据源表 ZZRK,共有98个属性描述暂住人口的暂住证号、身份证号、姓名、性别等暂住人员基本信息。
⑤ 犯罪类型数据源表 FZLX,共有18属性描述我国刑法规定的犯罪类型,有大类、小类、子类和具体罪行名称等。
⑥ 所属辖区数据源表 SSXQ,共有12个属性描述了旅客或暂住人口户口所在的省市县名称等基本信息。
⑦ 派出所数据源表 PCS,共有10个属性描述了派出所的名称、编码、地址等基本信息。
⑧ 人员前科数据源表 SSXQ,共有8个属性描述了犯罪人员的身份证号、犯罪类型和时间等基本信息。
由此可知,事务处理数据库系统中记录的旅馆信息、人员信息非常细致,比如旅馆数据源表有65个属性,常住人口数据源表有128个属性,暂住人口数据源表也有98个属性。许多属性并不是决策分析需要的数据属性或观察数据的维度,我们从各个数据源表中筛选出与主题可能有关的属性(表3-1至3-4)。
表3-1 旅馆和常住人口数据源

表3-2 旅馆入住和暂住人口数据源

表3-3 犯罪类型与所属辖区数据源

表3-4 派出所与人员前科数据源

(3)确定抽取频率
由于决策分析查询经常需要最近几天或一周的统计数据,因此,我们将旅客宾馆入住数据的抽取工作,设计为每天执行一次抽取。
(二)概念设计
概念模型设计任务:将需求分析阶段确定的各个主题,转换为概念数据模型表示,并为这些主题的逻辑数据模型设计奠定基础。主要有如下3个步骤。
(1)设计每个主题的多维数据模型,包括事实和维度名称;
(2)设计每个维的层次及其名称;
(3)设计每个主题的元数据,包括事实、维度等的类型、长度等。
例3-2 请根据例 3-1需求分析结果,完成警务数据仓库“入住”主题的概念设计。
解:按照概念设计的步骤分别设计如下。
1. 设计多维数据模型

2. 确定维度层次
(1)人员维的层次
人员维度本质上是户口所辖这个地址维度上最底层的维成员,故层次关系设计为:人员→区县→地市→省份→国家。
(2)时间维的层次
警务查询需要指定小时区间的入住统计,因此时间维度最底层的维成员以小时为单位,这样时间维度的层次有两种情况:
① 小时→天→月→季→年。
② 小时→天→周→年。
(3)宾馆维的层次
旅馆维度是地址所属辖区这个治安维度的最底层维成员,因此,旅馆维度的层次为:旅馆→区县→地市→省份→国家。宾馆维是治安管理的对象,因此,旅馆维也称为治安维。另外,宾馆是地理位置上的具体单位,也是一种地理维度。
3. 元数据设计
多维数据模型的元数据,主要是多维数据模型中描述维度和事实的属性类型、长度以及取值范围等。
在设计时应尽可能的参照数据源中对应属性的类型、长度和取值范围。在一些特别情况下,就需要重新确定属性的类型或长度。
例如,人员的性别,它的数据源包括常住人口中的性别(长度为2,取值{男、女})和暂住人口(长度为1,取值{1,0})和其它地方来本市辖区旅行的人员。虽然性别属性都是字符型,但因为长度不一致,最后将多维数据模型中人员的性别属性设计为字符型,且统一规定长度为1,取值范围{1,0}。
(三)逻辑设计
将数据仓库的逻辑模型转化成具体计算机系统能够支持的逻辑模型,与具体的 DWMS所支持的数据模型。概念数据模型表示的数据一般可以方便地转换为逻辑数据模型表示。当前数据仓库大都建立在关系数据仓库管理系统(RDWMS,如 SQLServer 等)之上,下面介绍 RDWMS 中的数据仓库逻辑设计。
1. 选定逻辑模型
每个主题的概念模型为多维数据集,而多维数据集在关系数据库管理系统中可用星形模型或雪花模型表示。逻辑模型设计的第一步:采用星形模型/雪花模型???
2. 设计维度表的关系模式
设计任务:每个维度表需要的属性(包括主键和外键),属性的类型、长度和取值范围等。
雪花模型:就要增加详细类别表的设计,以及这些维度表、详细类别表中属性与数据源中对应属性之间的关系和转换方法。
3. 设计事实表的关系模式
同样是设计事实表需要的属性、类型、长度和取值范围等,以及它们与数据源中属性之间的对应关系和转换方法。
4. 设计详细类别表
如果某个主题的逻辑模型选用雪花模型,则还需要设计详细类别表需要的属性(包括主键),属性的类型、长度和取值范围等,也包括这些属性与数据源中对应表的属性之间的对应关系和转换方法。
例 3-3 请用例 3-2的概念设计结果,完成“入住”主题的逻辑设计。
解:
(1)选定逻辑模型
由于“入住”主题的概念模型为如下的三维数组,即
入住(宾馆、人员、时间;入住天数)
因此,其对应的逻辑模型有1个事实为入住天数;3个维度:宾馆、人员、时间。即“入住”主题需要1个事实表,至少需要宾馆、人员和时间3个维度表。
① 人员维度表的户口属辖是地址信息,宾馆的治安所辖地由派出所地址信息决定,因此可将其从人员维度表和派出所信息表中分解出来形成一个详细类别表,即地址表,并通过“主键-外键”实现地址表与人员维度表的联系,而宾馆则通过与派出所信息表与地址表联系起来。
② 通过以上分析讨论可知,我们选定雪花模型作为“入住”主题的逻辑模型为宜。
(2)设计维度表
① 旅馆维度表:

② 人员维度表-暂住人口:

③ 时间维度表:

从时间维度表可知,时间维表只有原始时间属性与旅馆入住数据源表的入住时间和离店时间有对应关系,其它属性都由入住时间和离店时间派生而得。
派生方法就是利用函数 DATEPART(”Year”,RZSJ) 在入住时间 RZSJ 中取出年 (Year) 作为 CYear属性,同理取出季(Quarter)、月(Month)、周(Week)、日(Day)、时(Hour)等,分别作为CQuarter、CMonth、CWeek、CDay、CHour 属性。
同时将 CQuarter、CMonth、CWeek、CDay、CHour 分别作为T_CQuarter、T_CMonth、T_CWeek、T_CDay、T_CHour 变量,由它们派生出:DateKey =T_CYear+RIGHT(“0”+T_Month,2) + RIGHT(“0”+T_Day,2) + RIGHT(“0”+T_Hour,2)
(3)设计住宿事实表

居住天数可由入住时间、离店时间计算得到,而入住时间键和离店时间键分别由入住时间、离店时间派生而得。
InDateKey = RZ_CYearB + RIGHT("0"+RZ_CMonthB,2) + RIGHT("0"+RZ_CDayB,2) +RIGHT("0"+RZ_CHourB,2)
OutDateKey = LD_CYearB + RIGHT("0"+LD_CMonthB,2) + RIGHT("0"+LD_CDayB,2) ++RIGHT("0"+LD_CHourB,2)
(4)设计详细类别表
① 派出所维度表:

② 地址维度表:

“入住”主题的逻辑模型——雪花模型表示:

(四)物理设计
数据仓库在物理设备上的存储结构和存取方法就称为数据仓库的物理结构或物理数据模型(Physical DataModel),它是描述数据仓库在存储介质上组织结构的数据模型,不但与具体的 DWMS有关,而且还与操作系统和硬件有关。每一种逻辑数据模型在实现时都有其对应的物理数据模型。
设计人员必须全面了解所选用的数据仓库管理系统,特别是存储结构和存取方法,了解数据环境,数据的使用频度、使用方式、数据规模以及响应时间要求等,它们都是对时间和空间效率进行平衡和优化的重要依据。设计人员还要了解外部存储设备的特性,如分块原则,块大小的规定,设备的I/O 特性等。
商品化关系数据仓库管理系统(RDWMS)作为数据仓库的管理平台,数据仓库的大量内部物理结构都由 RDBMS自动完成,只留有少量的、用户可参与的物理结构设计内容。
主要介绍如下几种物理设计内容。
1. 数据存储结构设计
通常,DWMS提供了多种存储结构供设计人员选用。不同的存储结构有不同的实现方式,各有各的适用范围和优缺点,设计人员应该在综合考虑存取时间、存储空间和维护代价等因素的基础上,确定并选择合适的存储结构。
2. 数据索引策略设计
设计人员可以考虑对各个数据存储建立专用的、复杂的索引,如位图索引、广义索引、链接索引等,以获得最高的存取效率。数据仓库中的数据很少更新的,每个索引结构都是比较稳定的,一旦建立就几乎不需要再对这些索引进行维护。
数据仓库是只读数据环境,建立索引可以获得更好的灵活性,对提高查询性能极为有利。但一张表建立的索引过多,可能导致数据加载时间的延长,因此,建立索引的数量也需要进行综合的权衡。应按照索引使用的频率由高到低的顺序逐步建立,直到某一索引建立后反而使数据加载的时间更长时,就结束索引的添加,即不再建立新的索引。
开始一般是对主键和外键建立索引,通常不需要添加更多的其它索引。在DW使用过程中如果发现响应时间太长,则按照实际需要逐步建立其它索引,这样就会避免一次建立大量索引带来的不利后果。
如果某个事实表占用空间过大,而且又需要另外增加索引,则可以考虑将该表进行分割处理。如果一个事实表中所用到的属性都在索引文件中,就不必访问事实表,只要访问索引就可以达到访问数据的目的,以此来减少I/O 操作。如果事实表太大,并且经常要对它进行长时间的扫描查询,那么就要考虑添加一张概括表(粒度粗一些的表)以减少数据的扫描任务。
3. 数据存放位置设计
数据仓库中,同一个主题的数据并不要求存放在相同的介质上。常常需要按照数据的重要性、使用频率以及对响应时间的要求,将不同类型的数据分别存储在不同的存储设备中。
高速——硬盘;低速——磁带/光盘;镜像/冗余存储提高效率?
总的来说,在确定数据存放位置时一般应遵循以下几个原则。
(1)应该把经常需要连接操作的几张表存放在不同的存储设备上,这样可以利用存储设备的并行操作功能加快数据查询的速度。
(2)如果几台服务器之间的连接可能造成严重的网络数据传输负担,则可以考虑在服务器之间复制表格,以减少不同服务器之间因数据连接导致的网络数据传输负担。
(3)考虑把整个企业共享的细节数据放在主机或其它集中式服务器上,以提高这些共享数据的使用速度。
(4)不要把表格和它们的索引放在同一设备上。可将索引存放在高速存储设备上,表格存放在一般存储设备上,以加快查询速度。
4. 数据存储分配设计
商品化数据仓库管理系统提供了一些存储分配的参数供设计者进行物理优化处理,比如块的尺寸、缓冲区的大小和个数等。
五、数据仓库的实施
数据仓库实施时期的任务包括DW创建、数据抽取、数据转换和数据装载等四个阶段。
(一)数据仓库的创建
根据逻辑设计阶段的结果,创建一个数据库文件,并在其中创建事实表、维度表以及详细类别表结构(没有任何数据记录),同时根据物理结构设计结果完成存储位置、存储分配等物理参数设置,等待数据抽取、数据转换直到完成数据的装载。
例 3-5 试根据例3-3和3-4的设计结果创建警务数据仓库。
解:根据例 3-3和3-4的设计结果,我们以 Windows 身份验证登录 SQL Server2008 R2 的数据库引擎服务器,并在 SSMS环境中创建数据仓库 HuangDW_Hotel,具体创建步骤如下。
1. 创建数据仓库名称HuangDW_Hotel
2. 创建维度表
按照以下顺序分别创建 DimDate,DimCaseType,DimAddress,DimPolice,Dimpeople 和 DimHotel等6张维度表。
(1)创建时间维度表DimDate维度表的SQL命令。
CREATE TABLE DimDate (
DateKey nchar(10) PRIMARY KEY,
FullDateTime smalldatetime NULL,
CYear smallint NULL,
CMonth tinyint NULL,
CDay tinyint NULL,
CQuarter tinyint NULL,
Cweek tinyint NULL,
CHour tinyint NULL
)
(2)创建前科类型表DimCaseType维度表的SQL命令。
CREATE TABLE DimCaseType(
CrimeKey nchar(6) PRIMARY KEY,
LaregeClassName nvarchar(100) NULL,
SmallClassName nvarchar(100) NULL,
SubClassName nvarchar(100) NULL
)
(3)创建地址表DimAddress维度表的SQL命令。
CREATE TABLE DimAddress(
AddressKey nchar(9) PRIMARY KEY,
ProvinceKey nvarchar(2) NULL,
…
)
(二)数据抽取转换加载
在单击数据仓库名称 HuangDW_Hotel 前面的“+”号并逐层展开,我们可以看到已经创建的6张维度表和1张事实表,只是这7张表中没有任何记录。
下面的工作就是配置数据抽取、转换和装载(Extraction-Loading-Transformation,ETL)包,也称为 SSIS 包或 ETL包,使其能够完成从事务数据库 OLTPHotel 中抽取数据,经转换后加载到 HuangDW_Hotel 这个数据仓库之中。
六、数据仓库系统的开发
(一)开发任务
其任务就是要开发查询类,验证型和发掘型三大类型的数据仓库访问工具,统称为决策支持工具。
1. 查询类工具
(1)数据仓库的工具虽然是以分析工具为主,但查询类工具(Query Tool,QT)仍然是其重要组成部分。
(2)数据仓库的查询工具很少是对记录级数据的查询,而几乎都是对分析结果,如广义索引中的统计数据,或者发展趋势、模式总结等的查询,其主要用户为企业中高层领导或决策者。
2. 验证型工具
(1)验证型工具也称为分析型工具(Analysis Tool,AT),一般是用户自己对数据仓库数据有某种假设或期待,然后利用各种分析工具通过反复的、递归的统计查询以验证或否定自己的假设,即从数据仓库中发现某种事实。
(2)多维分析工具就是一种验证型工具。它通过对数据的多种可能的观察角度(时间、地域和业务等)进行快速,一致和交互的存取,以对数据进行深入地分析和观察。
(3)联机分析处理(On Line Analysis Processing,OLAP)是一种基于多维数据模型的数据分析处理技术。
(4)基于 OLAP 技术的数据分析程序就是一种多维分析工具,也称为联机分析处理工具或 OLAP 工具。它通过 OLAP服务器,将来源于关系型数据库或其它应用系统的数据抽取和转换为多维数据集,并对其包括切片、切块、旋转、下钻、上卷等多维分析处理。
(5)当数据仓库成功建立后,意味着 OLAP再也无需自己劳神抽取和转换数据,只要围绕数据仓库直接创建多维数据集,即可完成各种多维数据分析处理功能,并为企业领导提供决策支持。
(6)多维分析工具或 OLAP 工具的使用是一个人机交互过程,即在数据分析处理的每一步都需要用户的“指导”,或者输入分析参数,或者做出某种选择后才能进行下一步的分析处理。
3. 发掘型工具
(1)发掘型工具也称预测型工具,它可在没有用户指导或有少量指导的情况下,从数据中发现潜在而新颖的模式,预测趋势和经营行为。
(2)数据挖掘(Data Mining,DM)是典型的发掘型工具,它是从大型数据库中提取隐藏的预测性信息的一种技术。
(3)DM与验证型工具不同,数据挖掘是一种展望和预测型工具,它能挖掘出数据间潜在的模式,为企业提出具有前瞻性的、基于知识的决策信息。
(4)数据挖掘工具都依赖某种数据挖掘算法,如关联规则、分类规则、聚类分析、时序规则或离群点挖掘算法等。
4. 三类工具的关系
(1)查询工具、验证型工具、发掘型工具是数据仓库应用工具的三个重要方面,它们各自具有不同的侧重点,适用的范围和针对的用户也各不相同。
(2)查询工具属于表面层次的工具,验证型工具处于较浅的层次,而发掘型工具则是深层次的分析挖掘工具。
(3)三类工具相互补充,完美结合可是 DW 更好地发挥决策支持功能。
(二)开发方法
数据仓库访问工具的开发一般有三种途径。
1. 使用商品化开发平台
比如,使用 SQL Server的分析服务等开发平台配置数据仓库访问工具。开发人员只要求做少量的配置工作或者少量的开发工作,即可让用户访问已经建成的数据仓库。但这种商品化的开发平台,缺乏灵活性,对一些查询分析过程复杂的访问工具开发,就显得能力不足,甚至难于实现。
2. 使用程序设计语言
利用某种高级语言或 Web程序设计语言,开发用户访问数据仓库的程序或应用工具,具有相当的灵活性和较强的应变能力。其访问工具能让用户方便地通过鼠标操作,或输入少量参数,即可实现对数据仓库的访问,完成查询、分析和挖掘等数据分析任务。
3. 综合使用两种途径
因为商品化开发平台可能无法完成一些复杂的访问工具,这时就需要结合程序设计语言来开发部分复杂的功能,并集成为一个完整的数据仓库访问工具。
(三)系统测试
在完成访问工具开发工作之后,需要对数据仓库系统进行全面的测试,其测试工作主要包括单元测试和系统集成测试两个方面。
1. 单元测试
当数据仓库系统访问工具的每个独立单元模块完成后,需要立即对它们进行单元测试,以查找存在于每个单元模块程序中的错误。
2. 集成测试
在完成单元测试之后,需要进行数据仓库的集成测试。以检查每个单元模块与数据仓库系统和子系统之间的接口是否完好,是否能够正常传递数据和完成系统的整体功能。系统的集成测试需要对数据仓库的所有组件进行大量的功能测试和回归测试。数据仓库访问工具的开发,本质上属于软件的开发问题。
七、数据仓库系统的应用
(一)用户培训
(1)培训目的:使用户熟练地应用数据仓库系统并为企业管理决策提供支持。
(2)素质要求:参加培训的人员,应该具有一定的计算机使用技能。
(3)培训准备:选择一个完整的数据仓库主题数据作为培训案例,演示数据仓库系统的统计报表、OLAP 分析以及数据挖掘等功能,理解统计报表和 OLAP分析结果对管理决策的支持作用。
(4)原理讲解:向用户较详细地介绍数据仓库的概念、多维分析概念和数据仓库的数据源;培训用户了解数据仓库中所有查询工具、分析工具与挖掘工具的类型,以及利用这些工具获得报表以及分析结果的方法。
(二)决策支持
用户利用数据仓库系统开发时期完成的决策支持工具,对数据仓库进行查询统计、 OLAP分析和数据挖掘,并将其统计分析或挖掘结果提供给企业高层领导决策参考的过程。
1. 决策的查询支持
以警务数据仓库系统为例,可以回答决策者关心的如下问题。
(1)哪个旅馆/辖区当天的入住人数最多?
(2)每个旅馆每月前科人员的入住量?
(3)各类前科人员在不同旅馆的入住时间长短?
(4)各类前科人员入住、离开的高峰时间是哪个时间段?
(5)某个时间段哪个旅馆入住率最高?比如,下半夜入住率高的
end
