数据仓库和数据挖掘的OLAP技术(武汉大学-李春葆)35731.pptx
第第2 2章章数据仓库和数据挖掘的数据仓库和数据挖掘的OLAP技术技术数据仓库数据挖掘的有效平台。数据仓库数据挖掘的有效平台。n数据仓库中的数据清理和数据集成,是数据挖掘的重要数数据仓库中的数据清理和数据集成,是数据挖掘的重要数据预处理步骤。据预处理步骤。n数据仓库提供数据仓库提供OLAPOLAP工具,可用于不同粒度的数据分析。工具,可用于不同粒度的数据分析。n很多数据挖掘功能都可以和很多数据挖掘功能都可以和OLAPOLAP操作集成,以提供不同操作集成,以提供不同概念层上的知识发现。概念层上的知识发现。q分类分类q预测预测q关联关联q聚集聚集2.1 什么是数据仓库什么是数据仓库 20世纪世纪80年代中期,年代中期,“数据仓库数据仓库”这个名词首次出现这个名词首次出现在号称在号称“数据仓库之父数据仓库之父”W.H.Inmon的的Building Data Warehouse一书中。一书中。在该书中,在该书中,W.H.Inmon把数据仓库定义为把数据仓库定义为“一个面一个面向主题的、集成的、稳定的、随时间变化的数据的集合,向主题的、集成的、稳定的、随时间变化的数据的集合,以用于支持管理决策过程以用于支持管理决策过程”。2.1.1 数据仓库的定义数据仓库的定义数据仓库还有许多不同的定义,如:数据仓库还有许多不同的定义,如:“数据仓库是融合方法、技术和工具以在完整的平台数据仓库是融合方法、技术和工具以在完整的平台上将数据提交给终端用户的一种手段上将数据提交给终端用户的一种手段”。“数据仓库是对分布在企业内部各处的业务数据的整数据仓库是对分布在企业内部各处的业务数据的整合、加工和分析的过程合、加工和分析的过程”。“数据仓库是一种具有集成性、稳定性和提供决策支数据仓库是一种具有集成性、稳定性和提供决策支持的处理持的处理”。“为查询和分析(不是事务处理)而设计的关系数据为查询和分析(不是事务处理)而设计的关系数据库库”在众多的数据仓库定义中,公认的仍然是在众多的数据仓库定义中,公认的仍然是W.H.Inmon的定义,该定义指出了数据仓库的定义,该定义指出了数据仓库面向主题、集成、稳定、面向主题、集成、稳定、随时间变化随时间变化这这4个最重要的特征。个最重要的特征。(1)面向主题)面向主题主题主题就是在一个较高的管理层次上对信息系统的数据按照就是在一个较高的管理层次上对信息系统的数据按照某一具体的管理对象进行综合、归类所形成的分析对象。某一具体的管理对象进行综合、归类所形成的分析对象。如顾如顾客、供应商、产品和销售组织等客、供应商、产品和销售组织等。从数据组织的角度看,从数据组织的角度看,主题是一些数据集合主题是一些数据集合,这些数据集,这些数据集合对分析对象作了比较完整的、一致的描述,这种描述不仅涉合对分析对象作了比较完整的、一致的描述,这种描述不仅涉及到数据自身,而且涉及到数据之间的关系。及到数据自身,而且涉及到数据之间的关系。面向主题的数据组织方式,就是在较高层次上对分析对象面向主题的数据组织方式,就是在较高层次上对分析对象的数据的一个完整、一致的描述,能完整、统一地刻画各个分的数据的一个完整、一致的描述,能完整、统一地刻画各个分析对象所涉及的企业的各项数据,以及数据之间的联系。析对象所涉及的企业的各项数据,以及数据之间的联系。(2)集成)集成数据仓库中存储的数据一般从企业原来已建立的数据数据仓库中存储的数据一般从企业原来已建立的数据库系统中提取出来,但并不是原有数据的简单拷贝,而是库系统中提取出来,但并不是原有数据的简单拷贝,而是经过了经过了抽取、筛选、清理、综合抽取、筛选、清理、综合等工作。这是因为:等工作。这是因为:1)原有数据库系统记录的是每一项业务处理的流水原有数据库系统记录的是每一项业务处理的流水帐,这些数据不适合于分析处理。在进入数据仓库之前必帐,这些数据不适合于分析处理。在进入数据仓库之前必须经过综合、计算,同时抛弃一些分析处理不需要的数据须经过综合、计算,同时抛弃一些分析处理不需要的数据项,必要时还要增加一些可能涉及的外部数据。项,必要时还要增加一些可能涉及的外部数据。2)数据仓库每一个主题所对应的源数据在源分散数数据仓库每一个主题所对应的源数据在源分散数据库中有许多重复或不一致之处,必须将这些数据转换成据库中有许多重复或不一致之处,必须将这些数据转换成全局统一的定义,消除不一致和错误之处,以保证数据的全局统一的定义,消除不一致和错误之处,以保证数据的质量;显然,对不准确,甚至不正确的数据分析得出的结质量;显然,对不准确,甚至不正确的数据分析得出的结果将不能用于指导企业做出科学的决策。果将不能用于指导企业做出科学的决策。3)源数据加载到数据仓库后,还要根据决策分析的源数据加载到数据仓库后,还要根据决策分析的需要对这些数据进行概括、聚集处理。需要对这些数据进行概括、聚集处理。(3)稳定性即非易失的)稳定性即非易失的业务系统的数据库中一般只存储短期数据,因此在数据库业务系统的数据库中一般只存储短期数据,因此在数据库系统中数据是不稳定的,它记录的是系统中数据变化的瞬态。系统中数据是不稳定的,它记录的是系统中数据变化的瞬态。但对于决策分析而言,历史数据是相当重要的,许多分析但对于决策分析而言,历史数据是相当重要的,许多分析方法必须以大量的历史数据为依托。没有大量历史数据的支持方法必须以大量的历史数据为依托。没有大量历史数据的支持是难以进行企业的决策分析的,因此是难以进行企业的决策分析的,因此数据仓库中的数据大多表数据仓库中的数据大多表示过去某一时刻的数据示过去某一时刻的数据,主要用于查询、分析,不像业务系统,主要用于查询、分析,不像业务系统中的数据库那样,要经常进行修改、添加,除非数据仓库中的中的数据库那样,要经常进行修改、添加,除非数据仓库中的数据是错误的。数据是错误的。(4)随时间而变化即时变的)随时间而变化即时变的数据仓库中数据是批量载入的,是稳定的,这使得数据数据仓库中数据是批量载入的,是稳定的,这使得数据仓库中的数据总是拥有时间维度。仓库中的数据总是拥有时间维度。从这个角度,从这个角度,数据仓库实际是记录了系统的各个瞬态数据仓库实际是记录了系统的各个瞬态,并通过将各个瞬态连接起来形成动画,从而在数据分析的时并通过将各个瞬态连接起来形成动画,从而在数据分析的时候再现系统运动的全过程。数据批量载入(提取)的周期实候再现系统运动的全过程。数据批量载入(提取)的周期实际上决定了动画间隔的时间,数据提取的周期短,则动画的际上决定了动画间隔的时间,数据提取的周期短,则动画的速度快。速度快。2.1.2 数据仓库与操作数据库系统的区别数据仓库与操作数据库系统的区别n操作数据库系统的主要任务是联机事务处理操作数据库系统的主要任务是联机事务处理OLTPq日常操作日常操作:购买,库存,银行,制造,工资,注册,记购买,库存,银行,制造,工资,注册,记帐等。帐等。n数据仓库的主要任务是联机分析处理数据仓库的主要任务是联机分析处理OLAPq数据分析和决策支持,支持以不同的形式显示数据以满数据分析和决策支持,支持以不同的形式显示数据以满足不同的用户需要。足不同的用户需要。OLTP 和和OLAP的比较的比较(1/3)n用户和系统的面向性用户和系统的面向性q面向顾客(事务)面向顾客(事务)面向市场(分析)。面向市场(分析)。n数据内容数据内容q当前的、详细的数据当前的、详细的数据 历史的、汇总的数据。历史的、汇总的数据。n数据库设计数据库设计q实体联系模型(实体联系模型(ER)和面向应用的数据库设计)和面向应用的数据库设计 星星型型/雪花模型和面向主题的数据库设计。雪花模型和面向主题的数据库设计。OLTP 和和OLAP的比较(的比较(2)n数据视图数据视图q当前的、企业内部的数据当前的、企业内部的数据 经过演化的、集成的数据。经过演化的、集成的数据。n访问模式访问模式q事务操作事务操作 只读查询(但很多是复杂的查询)只读查询(但很多是复杂的查询)n任务单位任务单位q简短的事务简短的事务 复杂的查询。复杂的查询。n访问数据量访问数据量q数十个数十个 数百万个。数百万个。OLTP和和OLAP的比较(的比较(3)n用户数用户数q数千个数千个 数百个。数百个。n数据库规模数据库规模q100M100M数数GB GB 100GB100GB数数TBTB。n设计优先性设计优先性q高性能、高可用性高性能、高可用性 高灵活性、端点用户自治。高灵活性、端点用户自治。n度量度量q事务吞吐量事务吞吐量 查询吞吐量、响应时间。查询吞吐量、响应时间。2.1.3 为什么需要一个分离的数据仓库为什么需要一个分离的数据仓库?n提高两个系统的性能提高两个系统的性能qDBMSDBMS是为是为OLTPOLTP而设计的:存储方式、索引、而设计的:存储方式、索引、并发控并发控制和制和 恢复。恢复。q数据仓库是为数据仓库是为OLAPOLAP而设计:复杂的而设计:复杂的 OLAP OLAP查询、查询、多维多维视图和汇总。视图和汇总。n不同的功能和不同的数据不同的功能和不同的数据:q历史数据:决策支持需要历史数据,而这些数据在操作历史数据:决策支持需要历史数据,而这些数据在操作数据库中一般不会去维护。数据库中一般不会去维护。q数据汇总:决策支持需要将来自异种源的数据统一(如数据汇总:决策支持需要将来自异种源的数据统一(如聚集和汇总)。聚集和汇总)。q数据质量:不同的源使用不一致的数据表示、编码和格数据质量:不同的源使用不一致的数据表示、编码和格式,对这些数据进行有效的分析需要将他们转化后进行式,对这些数据进行有效的分析需要将他们转化后进行集成。集成。2.1.4 数据仓库中的关键名词数据仓库中的关键名词1.ETL(Extract/Transformation/Load)数据抽取、转数据抽取、转换、加载工具换、加载工具 ETL工具就是进行数据的抽取、转换和加载工具。工具就是进行数据的抽取、转换和加载工具。(1)数据提取()数据提取(Data Extract)从业务数据库只需提取出系统分析必需的那一部分数从业务数据库只需提取出系统分析必需的那一部分数据。例如,某超市确定以分析客户的购买行为为主题建据。例如,某超市确定以分析客户的购买行为为主题建立数据仓库,则我们只需将与客户购买行为相关的数据立数据仓库,则我们只需将与客户购买行为相关的数据提取出来,而超市服务员工的数据就没有必要放进数据提取出来,而超市服务员工的数据就没有必要放进数据仓库。仓库。现有的数据仓库产品几乎都提供各种关系型数据接口,现有的数据仓库产品几乎都提供各种关系型数据接口,提供提取引擎,从关系型数据中提取数据。提供提取引擎,从关系型数据中提取数据。(2)数据转换()数据转换(Data Transform)由于业务系统可能使用不同的数据库厂商的产品,比由于业务系统可能使用不同的数据库厂商的产品,比如如IBM DB2、Oracle、Informix、Sybase、NCR Teradata、SQL Server等,各种数据库产品提供的数据类型可能不同,等,各种数据库产品提供的数据类型可能不同,因此需要将不同格式的数据转换成统一的数据格式。如时因此需要将不同格式的数据转换成统一的数据格式。如时间格式间格式“年年/月月/日日”,“月月/日日/年年”、“日日-月月-年年”的不的不一致问题等。一致问题等。(3)数据清洗()数据清洗(Data Clean)所谓所谓“清洗清洗”就是将错误的、不一致的数据在进入数据就是将错误的、不一致的数据在进入数据仓库之前予以更正或删除,以免影响决策支持系统决策的正仓库之前予以更正或删除,以免影响决策支持系统决策的正确性。确性。(4)数据加载(数据加载(Data Load)数数据据加加载载部部件件负负责责将将数数据据按按照照物物理理数数据据模模型型定定义义的的表表结结构构装装入入数数据据仓仓库库,包包括括清清空空数数据据域域、填填充充空空格格、有效性检查等步骤。有效性检查等步骤。2.元数据(元数据(MetaData)“什么是元数据?什么是元数据?”元数据是元数据是描述数据的数据描述数据的数据。在数据仓库中,元数据是定义数据仓库对象的数据。元在数据仓库中,元数据是定义数据仓库对象的数据。元数据包括相应数据仓库的数据名和定义、数据提取操作时被数据包括相应数据仓库的数据名和定义、数据提取操作时被提取数据的时间和地点以及数据清理或数据集成过程添加的提取数据的时间和地点以及数据清理或数据集成过程添加的字段等。它提供了有关数据的环境,用于构造、维持、管理、字段等。它提供了有关数据的环境,用于构造、维持、管理、和使用数据仓库,在数据仓库中尤为重要。和使用数据仓库,在数据仓库中尤为重要。CREATE TABLE student no int;name char(10);sex char(2);class char(8);nonamesexclass1张三张三男男1301数据数据数据的数据:元数据数据的数据:元数据 3.数据集市(数据集市(Data Market)数据仓库中存放的是整个企业的信息,并且数据是按数据仓库中存放的是整个企业的信息,并且数据是按照不同主题来组织的。比如市场发展规律的分析主题主要由照不同主题来组织的。比如市场发展规律的分析主题主要由市场部门的人员使用,我们可以在逻辑上或者物理上将这部市场部门的人员使用,我们可以在逻辑上或者物理上将这部分数据分离出来,当市场部门人员需要信息时,不需要到数分数据分离出来,当市场部门人员需要信息时,不需要到数据仓库的巨量数据中检索,而只需在相应的部门数据上进行据仓库的巨量数据中检索,而只需在相应的部门数据上进行分析,因此从效率和处理速度的角度出发,这种划分是合算分析,因此从效率和处理速度的角度出发,这种划分是合算的。的。这这种种面面向向企企业业中中的的某某个个部部门门(主主题题)而而在在逻逻辑辑上上或或物物理理上上划划分分出出来来的的数数据据仓仓库库中中的的数数据据子子集集称称为为数数据据集集市市。换换句句话话说,数据集市包含了用于特殊目的数据仓库的部分数据。说,数据集市包含了用于特殊目的数据仓库的部分数据。数数据据仓仓库库面面向向整整个个企企业业,而而数数据据集集市市则则是是面面向向企企业业中中的的某某个个部部门门。典典型型示示例例是是销销售售部部门门、库库存存和和发发货货部部门门、财财务务部部门门和和高高级级管管理理部部门门等等的的数数据据集集市市。数数据据仓仓库库中中存存放放了了企企业业的的整整体体信信息息,而而数数据据集集市市只只存存放放了了某某个个主主题题需需要要的的信信息息,其其目目的是减少数据处理量,使信息的利用更快捷、灵活。的是减少数据处理量,使信息的利用更快捷、灵活。4.OLAP OLAP(On-line Analytical Processing,在在线线分分析析处处理理或或联联机机分分析析处处理理)就就是是一一个个应应用用广广泛泛的的数数据据仓仓库库使使用用技术。技术。它它可可以以根根据据分分析析人人员员的的要要求求,迅迅速速灵灵活活地地对对大大量量的的数数据据进进行行复复杂杂的的查查询询处处理理,并并以以直直观观的的容容易易理理解解的的形形式式将将查查询询结结果果提提供供给给各各种种决决策策人人员员,使使他他们们能能够够迅迅速速准准确确地掌握企业的运营情况,了解市场的需求。地掌握企业的运营情况,了解市场的需求。2.2 多维数据模型多维数据模型2.2.1 由表到数据立方体由表到数据立方体数据仓库和数据仓库和OLAPOLAP工具基于多维数据模型。工具基于多维数据模型。在多维数据模型中,数据以数据立方体(在多维数据模型中,数据以数据立方体(data cubedata cube)的)的形式存在。形式存在。q数据立方体允许以多维数据建模和观察。它由维和事实定数据立方体允许以多维数据建模和观察。它由维和事实定义。义。n维是人们观察数据的特定角度,是考虑问题时的一类维是人们观察数据的特定角度,是考虑问题时的一类属性。属性的集合构成一个维(如时间维、机构维等)。属性。属性的集合构成一个维(如时间维、机构维等)。n维分层:同一维度还可以在细节程度不同的各个描述维分层:同一维度还可以在细节程度不同的各个描述方面(如时间维可包含年、季度、月份和日期等)。方面(如时间维可包含年、季度、月份和日期等)。n维属性:维的一个取值,是数据项在某维中位置的描维属性:维的一个取值,是数据项在某维中位置的描述(如述(如2013年年11月月2日在时间维上位置的描述)日在时间维上位置的描述)。n每个维都有一个表与之相关联,称为维表。每个维都有一个表与之相关联,称为维表。一个数据立方体:一个数据立方体:q多维数据模型围绕中心主题组织,该主题用事实表表示多维数据模型围绕中心主题组织,该主题用事实表表示。n事实表包括事实的名称或度量以及每个相关维表的关事实表包括事实的名称或度量以及每个相关维表的关键字。键字。n事实指的是一些数字度量。事实指的是一些数字度量。学生学生课程课程分数分数100120018910022002831005200490 学号学号姓名姓名班号班号1张三张三1201 学生学生1001课程课程编号编号名称名称20011C+学生维表学生维表成绩事实表成绩事实表课程维表课程维表OLTP系统是为了快速回答简单查询,而不是为了存储系统是为了快速回答简单查询,而不是为了存储分析趋势的历史数据而创建的。一般的分析趋势的历史数据而创建的。一般的OLTP提供了大量的提供了大量的原始数据,这些数据不易被分析。原始数据,这些数据不易被分析。l查询某人买房记录。查询某人买房记录。l查询某房的价值。查询某房的价值。l一个英国房屋销售系统:一个英国房屋销售系统:两个系统数据组织模式比较示例两个系统数据组织模式比较示例1来源于事务型的数据来源于事务型的数据库,如采用关系型数库,如采用关系型数据库进行数据存储据库进行数据存储数据仓库需要回答更复杂的查询,而不仅仅是一些像数据仓库需要回答更复杂的查询,而不仅仅是一些像“英国主要城市的商品平均销售价格是多少英国主要城市的商品平均销售价格是多少”之类的简单聚集之类的简单聚集数据查询。数据查询。数据仓库需要回答的查询类型可以是简单的查询,也可数据仓库需要回答的查询类型可以是简单的查询,也可以是以是高度复杂高度复杂的,且还与终端用户使用的查询工具相关。的,且还与终端用户使用的查询工具相关。l2008年第三季度,整个英格兰的总收入是多少?年第三季度,整个英格兰的总收入是多少?l2007年英国每一类房产销售的总收入是多少?年英国每一类房产销售的总收入是多少?l2008年租借房产业务中每个城市哪个地域最受欢迎?与过去的两年相年租借房产业务中每个城市哪个地域最受欢迎?与过去的两年相比有何不同?比有何不同?l每个分支机构本月的房产销售月收入是多少,并与刚过去的每个分支机构本月的房产销售月收入是多少,并与刚过去的12个月相个月相比较。比较。l如果对于如果对于10万英镑以上的房产,法定价格上升万英镑以上的房产,法定价格上升3.5%而政府税收下降而政府税收下降1.5%,对英国不同区域的销售会产生什么影响?,对英国不同区域的销售会产生什么影响?l 在英国主要城市中,哪种类型的房产销售价格高于平均房产销售价格在英国主要城市中,哪种类型的房产销售价格高于平均房产销售价格?这与人口统计数据有何联系?这与人口统计数据有何联系?英国房屋销售数据仓库系统:英国房屋销售数据仓库系统:来源于已处理的或汇总的数据,要预先采用数据结构来源于已处理的或汇总的数据,要预先采用数据结构如多维模型存放这些汇总的数据。如多维模型存放这些汇总的数据。两个系统数据组织模式比较示例两个系统数据组织模式比较示例2数据库系统数据库系统面向面向“商品商品”、“供应商供应商”和和“顾客顾客”的数据仓库系统的数据仓库系统商品数据仓库结构商品数据仓库结构供应商数据仓库结构供应商数据仓库结构顾客数据仓库结构顾客数据仓库结构来源于的前面的多个表的数据来源于的前面的多个表的数据从上述实例,不难看出:从上述实例,不难看出:在从面向应用到面向主题的转变过程中,丢弃了原来有在从面向应用到面向主题的转变过程中,丢弃了原来有的但不必要的、不适于分析的信息;的但不必要的、不适于分析的信息;在原有的数据库模式中,有关商品的信息分散在各个子在原有的数据库模式中,有关商品的信息分散在各个子系统之中;面向主题的数据组织方式所强调的就是要形系统之中;面向主题的数据组织方式所强调的就是要形成关于主题一致的信息集合;成关于主题一致的信息集合;不同主题之间有重叠内容。不同主题之间有重叠内容。2.2.2 多维数据模型多维数据模型 time_keydayday_of_the_weekmonthquarteryeartime 维表维表location_keystreetcitystate_or_provincecountrylocation 维表维表Sales 事实表事实表 time_key item_key branch_key location_key units_sold dollars_solditem_keyitem_namebrandtypesupplier_typeitem 维表维表branch_keybranch_namebranch_typebranch 维表维表数据仓库:事实表维表数据仓库:事实表维表度量度量n在数据仓库中,数据立方体是在数据仓库中,数据立方体是n-Dn-D的(的(n n维)维)q(关系表和电子表格是几维的?)(关系表和电子表格是几维的?)n多维数据模型为不同角度上的数据建模和观察提供了一个多维数据模型为不同角度上的数据建模和观察提供了一个良好的基础。良好的基础。示例示例AllElectronicsAllElectronics的销售数据按维的销售数据按维time,itemtime,item的的2-D2-D视图。视图。location“Vancouver“(温哥华温哥华)item(类型类型)time(季度季度)家庭娱乐家庭娱乐计算机电话安全计算机电话安全Q160582514400Q268095231512Q38121023 30 501Q49271038 38 580AllElectronicsAllElectronics的销售数据按维的销售数据按维time,itemtime,item和和locationlocation的的3-D3-D视图。视图。location“Chicage”itemtime 家庭娱乐家庭娱乐 计算机计算机 电话电话 安全安全Q1854 88289623Q2943 89064698Q31032924 59789Q41129992 63870location“New York”itemtime 家庭娱乐家庭娱乐 计算机计算机 电话电话 安全安全Q11087 96838623Q2943 89064698Q31032924 59789Q41129992 63870.AllElectronics AllElectronics的销售数据按维的销售数据按维timetime、item item和和locationlocation的的3-3-D D视图的视图的3-D3-D数据立方体表示。数据立方体表示。销售数据的销售数据的4-D4-D立方体表示。立方体表示。4 4维分别是维分别是timetime、itemitem、locationlocation和和suppliersupplier。n一个一个n n维的数据的立方体叫做维的数据的立方体叫做基本立方体基本立方体。给定一个维的集合,我们可以构造一个立方体的格,每个给定一个维的集合,我们可以构造一个立方体的格,每个都在不同的汇总级或不同的数据子集显示数据,立方体的都在不同的汇总级或不同的数据子集显示数据,立方体的格称为格称为数据立方体数据立方体。0 0维立方体存放最高层的汇总,称作顶维立方体存放最高层的汇总,称作顶点立方体;而存放最底层汇总的立方体则称为基本立方体。点立方体;而存放最底层汇总的立方体则称为基本立方体。数据立方体格数据立方体格alltimeitemlocationsuppliertime,itemtime,locationtime,supplieritem,locationitem,supplierlocation,suppliertime,item,locationtime,item,suppliertime,location,supplieritem,location,suppliertime,item,location,supplier0维顶点立方体维顶点立方体1维立方体维立方体2维立方体维立方体3维立方体维立方体4维基本立方体维基本立方体i-1维立方体维立方体i维立方体维立方体上卷上卷下钻下钻i越大,数据越细越大,数据越细2.2.3 数据仓库的概念模型数据仓库的概念模型最流行的数据仓库概念模型是多维数据模型。这种模型最流行的数据仓库概念模型是多维数据模型。这种模型可以以星型模式、雪花模式、或事实星座模式的形式存在。可以以星型模式、雪花模式、或事实星座模式的形式存在。l星型模式(星型模式(Star schema):事实表在中心,周围围绕事实表在中心,周围围绕地连接着维表(每维一个),事实表含有大量数据,地连接着维表(每维一个),事实表含有大量数据,没有冗余。没有冗余。1.星型模式星型模式星型模式实例星型模式实例 time_keydayday_of_the_weekmonthquarteryeartimelocation_keystreetcitystate_or_provincecountrylocationsales事实表事实表 time_key item_key branch_key location_key units_sold dollars_solditem_keyitem_namebrandtypesupplier_typeitembranch_keybranch_namebranch_typebranch维表维表度量度量维表维表维表维表维表维表l雪花模式(雪花模式(Snowflake schema):是星型模式的变种,其是星型模式的变种,其中某些维表是规范化的,因而把数据进一步分解到附加中某些维表是规范化的,因而把数据进一步分解到附加表中。结果,模式图形成类似于雪花的形状。表中。结果,模式图形成类似于雪花的形状。2.雪花模式雪花模式雪花模式实例雪花模式实例time_keydayday_of_the_weekmonthquarteryeartimelocation_keystreetcity_keylocationsales事实表事实表 time_key item_key branch_key location_key units_sold dollars_solditem_keyitem_namebrandtypesupplier_keyitembranch_keybranch_namebranch_typebranchsupplier_keysupplier_typesuppliercity_keycitystate_or_provincecountrycity星型模式星型模式雪花模式雪花模式维表规格化维表规格化维表维表度量度量维表维表维表维表维表维表维表维表维表维表l事实星座(事实星座(Fact constellations):多个事实表共享维表多个事实表共享维表,这这种模式可以看作星型模式集,因此称为星系模式(种模式可以看作星型模式集,因此称为星系模式(galaxy schema),或者事实星座(),或者事实星座(fact constellation)。2.事实星座模式事实星座模式事实星座模式实例事实星座模式实例time_keydayday_of_the_weekmonthquarteryeartimelocation_keystreetcityprovince_or_statecountrylocationsales事实表事实表time_key item_key branch_key location_key units_sold dollars_solditem_keyitem_namebrandtypesupplier_typeitembranch_keybranch_namebranch_typebranch航运事实表航运事实表time_key item_key shipper_key from_location to_location dollars_cost units_shippedshipper_keyshipper_namelocation_keyshipper_typeshipper星型星型/雪花雪花模式模式事实模式事实模式多个事实表共多个事实表共享维表享维表度量度量维表维表维表维表维表维表维表维表维表维表2.2.4 一种数据仓库查询语言一种数据仓库查询语言:DMQLnDMQLDMQL首先包括定义数据仓库和数据集市的语言原语,这首先包括定义数据仓库和数据集市的语言原语,这包括两种原语定义:一种是立方体定义,一种是维定义包括两种原语定义:一种是立方体定义,一种是维定义q立方体定义立方体定义 (事实表)(事实表)define cube :define cube :q维定义维定义 (维表)(维表)define dimension as define dimension as()实例:使用实例:使用DMQL定义星型模式定义星型模式define cube sales_star time,item,branch,location:dollars_sold=sum(sales_in_dollars),avg_sales=avg(sales_in_dollars),units_sold=count(*)define dimension time as(time_key,day,day_of_week,month,quarter,year)define dimension item as (item_key,item_name,brand,type,supplier_type)define dimension branch as(branch_key,branch_name,branch_type)define dimension location as (location_key,street,city,province_or_state,country)星型模式实例星型模式实例 time_keydayday_of_the_weekmonthquarteryeartimelocation_keystreetcitystate_or_provincecountrylocationsales事实表事实表 time_key item_key branch_key location_key units_sold dollars_solditem_keyitem_namebrandtypesupplier_typeitembranch_keybranch_namebranch_typebranch维表维表度量度量实例:使用实例:使用DMQLDMQL定义雪花模式定义雪花模式define cube sales_snowflake time,item,branch,location:dollars_sold=sum(sales_in_dollars),avg_sales=avg(sales_in_dollars),units_sold=count(*)define dimension time as(time_key,day,day_of_week,month,quarter,year)define dimension item as(item_key,item_name,brand,type,supplier(supplier_key,supplier_type)define dimension branch as(branch_key,branch_name,branch_type)define dimension location as(location_key,street,city(city_key,province_or_state,country)雪花模式实例雪花模式实例time_keydayday_of_the_weekmonthquarteryeartimelocation_keystreetcity_keylocationsales事实表事实表 time_key item_key branch_key location_key units_sold dollars_solditem_keyitem_namebrandtypesupplier_keyitembranch_keybranch_namebranch_typebranchsupplier_keysupplier_typesuppliercity_keycitystate_or_provincecountrycity星型模式星型模式雪花模式雪花模式维表规格化维表规格化维表维表度量度量实例:使用实例:使用DMQLDMQL定义事实星座模式定义事实星座模式define cube sales time,item,branch,location:dollars_sold=sum(sales_in_dollars),avg_sales=avg(sales_in_dollars),units_sold=count(*)define dimension time as(time_key,day,day_of_week,month,quarter,year)define dimension item as(item_key,item_name,brand,type,supplier_type)define dimension branch as(branch_key,branch_name,branch_type)define dimension location as(location_key,street,city,province_or_state,country)define cube shipping time,item,shipper,from_location,to_location:dollar_cost=sum(cost_in_dollars),unit_shipped=count(*)define dimension time as time in cube salesdefine dimension item as item in cube salesdefine dimension shipper as(shipper_key,shipper_name,location as location in cube sales,shipper_type)define dimension from_location as location in cube salesdefine dimension to_location as location in cube sales事实星座模式实例事实星座模式实例time_keydayday_of_the_weekmonthquarteryeartimelocation_keystreetcityprovince_or_statecountrylocationsales事实表事实表time_key item_key branch_key location_key units_sold dollars_solditem_keyitem_namebrandtypesupplier_typeitembranch_keybranch_namebranch_typebranch航运事实表航运事实表time_key item_key shipper_key from_loca