2008年(31)
分类: Mysql/postgreSQL
2008-04-22 10:57:34
执行初始化载入脚本
在你运行列表7-1所示的初始化载入脚本之前,你需要完成下面的几个步骤:
u 清空所有的表,包括中间过程表。
u 预装载日期维
u 准备客户和产品测试数据
u 在源数据库中产生测试数据
这些步骤将在下面的子节中讨论。
清空表
用列表7-2的脚本清空所有的表。
列表7-2:截去所有表的脚本
/*****************************************************************/
/* */
/* truncate_tables.sql */
/* */
/*****************************************************************/
USE dw;
TRUNCATE customer_dim;
TRUNCATE product_dim;
TRUNCATE order_dim;
TRUNCATE date_dim;
TRUNCATE sales_order_fact;
TRUNCATE customer_stg;
TRUNCATE product_stg;
USE source;
TRUNCATE sales_order;
/* end of script
你可以调用以下命令运行列表7-2的脚本。
mysql> \. c:\mysql\scripts\truncate_tables.sql
mysql数据库将回应你每个表各有多少记录被删除。
Database changed
Query OK, 7 rows affected (0.17 sec)
Query OK, 4 rows affected (0.05 sec)
Query OK, 20 rows affected (0.06 sec)
Query OK, 5 rows affected (0.06 sec)
Query OK, 20 rows affected (0.05 sec)
Query OK, 7 rows affected (0.06 sec)
Query OK, 3 rows affected (0.06 sec)
Database changed
Query OK, 8 rows affected (0.07 sec)
预装载日期维
一旦表清空了,你可以通过运行我们曾在第6章“装载日期维”中讨论过的pre_populate_date存储过程,向日期维预装载从
mysql> use dw;
然后调用存储过程,传入开始日期和结束日期作为参数。
mysql> call pre_populate_date ('
准备客户和产品测试数据
在装载date_dim表后的第二个步骤是准备客户和产品的测试数据。我已经用一个csv格式的文件准备了客户数据,在一个固定宽度格式的文件中准备产品数据。
下面是客户资料源数据:
CUSTOMER NO,CUSTOMER NAME,STREET ADDRESS,ZIP CODE,CITY,STATE
1,Really Large Customers,
2,Small Stores,
3,Medium Retailers,
4,Good Companies,
5,Wonderful Shops,
6,Loyal Clients,
7,Distinguished Partners,
下面是产品数据
PRODUCT CODE,PRODUCT NAME,PRODUCT GROUP
1 Hard Disk Drive Storage
2 Floppy Drive Storage
3 LCD Panel Monitor
准备销售订单数据
你所需要的最后一组测试数据是销售订单。列表7-3的脚本能够被用来向source数据库中的sales_order表插入21条销售订单。
列表7-3:测试初始化装载的销售订单
/*****************************************************************/
/* */
/* sales_order_initial.sql */
/* */
/*****************************************************************/
USE source;
INSERT INTO sales_order VALUES
(1, 1, 1, '
, (2, 2, 2, '
, (3, 3, 3, '
, (4, 4/ 1, '
, (5, 5, 2, '
, (6, 6, 3, '
, (7, 7, 1, '
, (8, 1, 2, '
, (9, 2, 3, '
, (10, 3, 1, '
, (11, 4, 2, '
, (12, 5, 3, '
, (13, 6, 1, '
, (14, 7, 2, '
, (15, 1, 3, '
, (16, 2, 1, '
, (17, 3, 2, '
, (18, 4, 3, '
, (19, 5, 1, '
, (20, 6, 2, '
, (21, 7, 3, '
;
/* end of script */
现在用下面的命令方式运行sales_order_initial.sql脚本
mysql> \. c:\mysql\scripts\sales_order_initial.sql
你将看到21条新的记录被插入到数据库中
Database changed
Query OK, 21 rows affected (0.05 sec)
Records: 21 Duplicates: 0 Warnings: 0
注意历史数据从
运行和确认初始化装载
现在测试数据已经准备好,是时候执行初始化装载了。但是,首先要作的是设置你的mysql数据库时间是
你现在已经准备好测试初始化装载了。用下面的命令方式运行列表7-1所示的装载脚本dw_initial.sql。
mysql> \. c:\mysql\scripts\dw_initial.sql
在你的控制台上,将看到下面的信息:
Database changed
Query OK, 7 rows affected (0.06 sec)
Records: 7 Deleted: 0 Skipped: 0 Warnings: 0
Query OK, 7 rows affected (0.06 sec)
Records: 7 Duplicates: 0 Warnings: 0
Query OK, 3 rows affected (0.06 sec)
Records: 3 Deleted: 0 Skipped: 0 Warnings: 0
Query OK, 3 rows affected (0.07 sec)
Records: 3 Duplicates: 0 Warnings: 0
Query OK, 19 rows affected (0.06 sec)
Records: 19 Duplicates: 0 Warnings: 0
Query OK, 19 rows affected (0.10 sec)
Records: 19 Duplicates: 0 Warnings: 0
你可以用列表7-4所示的查询语句来检查19条销售订单记录被正确的载入。
列表7-4 通过查询确认销售订单被准确的载入
/*****************************************************************/
/* */
/* confirm_initial_population.sql */
/* */
/*****************************************************************/
USE dw;
SELECT
order_number on
, customer_name
, product_name
, date
, order_amount amount
FROM
sales_order_fact a
, customer_dim b
, product_dim c
, order_dim d
, date_dim e
WHERE
a.customer_sk = b.customer_sk
AND a.product_sk = c.product_sk
AND a.order_sk = d.order_sk
AND a.order date sk = e.date_sk
;
/* end of script */
用下面的命令方式运行列表7-4脚本。
mysql> \. c:\mysql\scripts\confirm_initial_population.sql
结果如下所示
Database changed
+--+------------------------+-----------------+-----------+---------+
|no| customer_name | product _name | date | amount |
+--+------------------------+-----------------+-----------+---------+
| 3| Medium Retailers | LCD Panel | 2005-03-01 | 4000.00 |
| 4| Good Companies | Hard Disk Drive | 2005-04-15 | 4000.00 |
| 5| Wonderful Shops | Floppy Drive | 2005-05-20 | 6000.00 |
| 6| Loyal Clients LCD | Panel | 2005-07-30 | 6000.00 |
| 7| Distinguished Partners | Hard Disk Drive | 2005-09-01 | 8000.00 |
| 8| Really Large Customers | Floppy Drive | 2005-11-10 | 8000.00 |
| 9| Small Stores | LCD Panel | 2006-01-05 | 1000.00 |
|10| Medium Retailers | Hard Disk Drive | 2006-02-10 | 1000.00 |
|11| Good Companies | Floppy Drive | 2006-03-15 | 2000.00 |
|12| Wonderful Shops | LCD Panel | 2006-04-20 | 2500.00 |
|13| Loyal Clients | Hard Disk Drive | 2006-05-30 | 3000.00 |
|14| Distinguished Partners | Floppy Drive | 2006-06-01 | 3500.00 |
|15| Really Large Customers | LCD Panel | 2006-07-15 | 4000.00 |
|16| Small Stores | Hard Disk Drive | 2006-08-30 | 4500.00 |
|17| Medium Retailers | Floppy Drive | 2006-09-05 | 1000.00 |
|18| Good Companies | LCD Panel | 2006-10-05 | 1000.00 |
|19| Wonderful Shops | Hard Disk Drive | 2007-01-10 | 4000.00 |
|20| Loyal Clients | Floppy Drive | 2007-02-20 | 4000.00 |
|21| Distinguished Partners | LCD Panel | 2007-02-28 | 4000.00 |
+--+------------------------+-----------------+-----------+---------+
19 rows in set (0.00 sec)
小结
本章你将学习到源数据映射以及被称为初始化装载的过程,来根据你的用户要求载入历史数据。下一章,你将学习到你运作数据仓库所必须的定期装载。