当前位置:文档之家› 第2章 数据仓库概念

第2章 数据仓库概念

第2章 数据仓库概念2.1 信息集成问题 2.2 从数据库到数据仓库 2.3 数据仓库定义 2.4 数据仓库应用BI系统VS决策盲点某大型国有企业老总当他查看近十年企业的生产和运营数 据时,手边得到了各种各样不同的数据报表。

这些数据报 表大致可以分成两种类型:• 一种是两年前、即ERP上线之前的,这是一些简单、杂乱而又枯燥的数字;• 另一种是有了ERP以后的,数据变得清楚而有条理起来,同时还有来自ERP、CRM、SCM以及计费业务等不同应用的数据和各种分 析报告。

在仔细查看这些报表之后,这位国企老总惊讶地发现,不 同的系统可以得出截然相反的两种结论。

例如某一产品, 它的动态成本反映在ERP系统和CRM、SCM系统里面相差 很大,如果引用ERP和CRM里面的数据,它就是一款很成 功、销量很好的产品,但在SCM里面来看,它的采购和物 流成本过高,导致了这款看起来很成功的产品实际上是一 笔赔钱的买卖。

P2 《数据仓库与数据挖掘》 P3《数据仓库与数据挖掘》BI系统VS决策盲点(续)其实从这些来自不同系统的数据基础产生不同的判 断很正常,因为这些系统并不会去周密地“思考”在 自己“职责”之外的事情。

这样就给企业的领导提交 了相当多顾此失彼的分析报告,结果就是导致了许 多市场决策上的混乱和失误。

把企业的内部数据和外部数据进行有效的集成,形 成直观的、易于理解的信息,再进行分析和思考, 为企业的各层决策及分析人员使用。

• 企业内部数据就是指上述通过业务系统SCM、ERP、CRM等收集到的数据,这些数据可能在不同的硬件、数 据库、网络环境中,为不同的业务部门服务。

• 外部数据是市场信息和外部竞争对手的信息。

P42.1 信息集成信息集成的定义 • information integration • 把存储在两个或多个信息源中的数据提取出来,建立一个包含所有这些信息源的信息的大数 据库(该数据库可以是虚拟的)信息集成的方式 • 联邦数据库(federal database) • 协调器(mediator) • 数据仓库(data warehouse)《数据仓库与数据挖掘》 P5《数据仓库与数据挖掘》信息集成中的问题汽车企业有1000位代理商,想创建一个集成 数据库,各个代理商使用不同的数据库模式代理商1:Cars(serialNo, model, color, autotrans, cdPlayer,…) 代理商2:Autos(serial, model, color), Options(serial, option)一、联邦数据库DB1 DB2问题 • 数据类型不同 • 取值不同 • 语义不同 • 数据丢失《数据仓库与数据挖掘》 P6DB3DB4问题:编写n(n-1)个组件来相互翻译查询 问题:编写n(n-1)个组件来相互翻译查询《数据仓库与数据挖掘》 P7联邦数据库NeededCars(model, color, autoTrans) NeededCars(model, autoTrans)for (each tuple(:m, :c, :a) in NeededCars{ tuple(:m, NeededCars{ if(:a = true) select serial from Autos, Options where Autos.serial = Options.serial and Autos.model = :m and Autos.color = :c else select serial from Autos where Autos.model = :m and Autos.color = :c not exists( select * from Options where serial = Autos.serial and option = ‘autoTrans’) autoTrans’《数据仓库与数据挖掘》 P8二、协调器查询 结果代理商1询问代理商2是否有自己所需要的汽 车查询协调器结果 查询 结果包装器查询 结果 查询包装器结果数据源1数据源2《数据仓库与数据挖掘》P9协调器协调器:AutosMed(serialNo, model, color, autotrans, dealer) :AutosMed(serialNo, autotrans, 询问协调器关于红色汽车的信息 select serialNo, model serialNo, from autosMed where color = ‘red’ red’ 代理商1的包装器 select serialNo, model serialNo, from Cars where color = ‘red’ red’《数据仓库与数据挖掘》协调器询问协调器是否存在Gobi型号的蓝色汽车 询问代理商1是否存在Gobi型号的蓝色汽车是 否代理商2的包装器 select serialNo, model serialNo, from Autos where color = ‘red’ red’P10返回询问代理商2是否存在Gobi型号的蓝色汽车《数据仓库与数据挖掘》P11包装器包装器从协调器接受各种查询,然后将查询 翻译成数据源的术语,并将结果传送给协调 器 如何设计包装器? • 将协调器可能使用的查询进行分类,成为模板 • 模板是带有代表常数的参数的查询 • 协调器提供常数,包装器执行给定好常数的查询 • 用T=>S表示包装器将查询模板T变成对数据源 的查询S《数据仓库与数据挖掘》包装器生成器来自协调器的查询 结果 将翻译好之后 的查询模板和 对应的源查询 存储到表中. 模板包装器 生成器表 驱动器1. 2.接受来自协调器的查询 在表中查找与查询匹配的模板 的模板 在表中查找与查询① ②查询结果找到,则传递查询中参数,实例化模板 没找到,拒绝协调器3. 4.源查询发送到数据源 将数据源的答复返回给协调器《数据仓库与数据挖掘》 P13P12包装器模板协调器:AutosMed(serialNo, model, color, autotrans, dealer) :AutosMed(serialNo, autotrans, 代理商1:Cars(serialNo, model, color, autotrans, cdPlayer,…) 1 Cars(serialNo, autotrans, cdPlayer,包装器模板查询给定颜色和型号的汽车 给定颜色和型号的汽车select * from AutosMed where color = ‘$c’ $c’ and model = ‘$m’ $m’查询给定颜色的汽车select * from AutosMed where color = ‘$c’ $c’ => select serialNo, model, color, autotrans, ‘dealer1’ serialNo, autotrans, dealer1’ from Cars where color =‘$c’ =‘ $c’《数据仓库与数据挖掘》 P14模 板2模 板=> select serialNo, model, color, autotrans, ‘dealer1’ serialNo, autotrans, dealer1’ from Cars where color =‘$c’ =‘ $c’ and model = ‘$m’ $m’1问题:查询n个属性需要2n个模板! 问题:查询n 个属性需要2《数据仓库与数据挖掘》 P15过滤器为避免太多的查询模板,只给包装器指定少量模板 ,它返回查询所需结果的超集,然后再由包装器过 滤向数据源所提供的结果询问协调器关于红色’BMW’汽车的信息 select serialNo, model from autosMed where color = ‘red’ and model = ‘BMW’ 执行模板1,令’$c’=‘red’ 将结果保存在临时表TempAutos中(实际中,可以是流水方式) 执行查询select * from TempAutos where model = ‘BMW’过滤器查询代理商和型号,代理商有两辆同型号的红色汽车, 一辆是自动的,另一辆不是针对协调器的查询 select A1.model, A1.dealer from autosMed A1, autosMed A2 where A1.model = A2.model and A1.color = ‘red’ and A2.color = ‘red’ and A1.autoTrans = ‘no’ and A2.autoTrans = ‘yes’《数据仓库与数据挖掘》 P16 《数据仓库与数据挖掘》 P17过滤器执行模板1,令’$c’=‘red’ 将结果保存在临时表RedAutos中 接着执行: select A1.model, A1.dealer from RedAutos A1, RedAutos A2 where A1.model = A2.model and A1.autoTrans = ‘no’ and A2.autoTrans = ‘yes’《数据仓库与数据挖掘》 P18三、数据仓库查询 结果数据仓库合成器 抽取器 抽取器数据源1数据源2《数据仓库与数据挖掘》P19数据仓库代理商1:Cars(serialNo, model, color, autotrans, cdPlayer,…) 代理商2:Autos(serial, model, color), Options(serial, option) 数据仓库:AutosWhse(serialNo, model, color, autotrans, dealer) dealer指拥有该车的代理商insert into AutosWhse(serialNo, model, color, autotrans, dealer) select serialNo, model, color, autotrans, ‘dealer1’ from Cars 导入代理商1数据仓库insert into AutosWhse(serialNo, model, color, autotrans, dealer) select serialNo, model, color, ‘yes’, ‘dealer2’ from Autos, Options where Autos.serial = Options.serial and option = ‘autoTrans’ 导入代理商2insert into AutosWhse(serialNo, model, color, autotrans, dealer) select serialNo, model, color, ‘no’, ‘dealer2’ from Autos where not exists (select * from Options where Autos.serial = Options.serial and option = ‘autoTrans’)《数据仓库与数据挖掘》P20《数据仓库与数据挖掘》P212.2 从数据库到数据仓库事务型处理 • 即操作型处理,是指对数据库的联机操作处理OLTP。

相关主题