Chinaunix首页 | 论坛 | 博客
  • 博客访问: 223650
  • 博文数量: 31
  • 博客积分: 1427
  • 博客等级: 上尉
  • 技术积分: 409
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-04 15:21
文章分类

全部博文(31)

文章存档

2008年(31)

我的朋友

分类: Mysql/postgreSQL

2008-07-15 16:19:41

11:按需装载

       你已经在第7章学习了初始化装载以及在第8章学习了定期装载。这里还有另外一种装载类型,按需装载,是你必须熟悉的。当你需要在计划之外装载源数据,你将应用按需装载。例如,只有当有促销安排时,促销销售源数据才可用,而其他情况则是不可用的。

       关于日期的预装载在第6章已经讨论过,“装载日期维”可以认为是按需装载的一种类型。你用日期数据预装载了你的数据仓库,当这些日期数据不够用时,你必须再次执行预装载。

 

增强模式

       在本节,我将用一个促销销售情景来解释按需装载。定期导入在这里是不合适的,因为这些数据的装载计划是无法预计的。下面是需要被载入的一个csv平面文件的内容:

PROMOTION CODE,PROMOTION NAME,START DATE,LAST DATE

SO,Special Offer,2007-04-01,2007-04-10

DP,Disk Promotion,2007-05-05,2007-05-20

MS,Month Special,2007-06-01,2007-06-30

MS,Monitor Promotion,2007-07-10,2007-07-15

BS,Back to School,2007-08-10,2007-08-30

要注意的是源数据表示了几个促销时期,而不是单独的促销日期。这里假设你的客户需要载入的仅仅是将来新的促销数据,他们不需要在数据仓库中存储以往的促销历史记录。

首先你需要在date_dim表中增加一个新的字段,promo_ind(作为促销指示)。增加字段后的新的模式如图11.1所示。

 

11-1:在date_dim表中新增promo_ind字段

你可以用类表11-1所示的的promotion_indicator.sql脚本,date_dim表中新增promo_ind字段。

列表11-1:促销指示

/*****************************************************************/
/*                                                               */
/* promotion_indicator.sql                                       */
/*                                                               */
/*****************************************************************/
 
USE dw;
 
ALTER TABLE date_dim
Performing On-Demand Population
ADD promo_ind CHAR (1) AFTER year
;
 
/* end of script                                                 */

 

       你可以用以下命令运行该脚本:

mysql> \. c:\mysql\scripts\promotion_indicator.sql

       在你运行该脚本后,你的控制台会出现:

Database changed
Query OK, 2132 rows affected (0.45 sec)
Records: 2132  Duplicates: 0  Warnings: 0

用如下sql语句查询日期维表以,确定在新增的promo_ind字段中无数据。

mysql> select * from date_dim where promo_ind IS NOT NULL;

该字段的所有数据值都是空,如这里所示:

Empty set (0.01 sec)
阅读(1418) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~