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,
DP,Disk Promotion,
MS,Month Special,
MS,Monitor Promotion,
BS,Back to School,
要注意的是源数据表示了几个促销时期,而不是单独的促销日期。这里假设你的客户需要载入的仅仅是将来新的促销数据,他们不需要在数据仓库中存储以往的促销历史记录。
首先你需要在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)