商务智能方法与应用第三章实验手册
文章导航
【实验手册版本】
当前版本号v20200331
版本 | 修改说明 |
---|---|
v20200331 | 修正关于my-huge.ini步骤的说明 |
v20200315 | 修正了度量的 aggregator 为 sum |
v20200314 | 增加了MySQL相关配置,提高数据库查询性能;同时增加了foodmart表格说明; |
v20200304 | 初始化版本 |
实验3.1:使用 Schema Workbench 创建 Cube
【实验名称】
使用 Schema Workbench 创建 Cube
【实验目的】
- 1.熟悉 Schema Workbench 并学会使用;
- 2.学会创建 Cube。
【实验原理】
数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策。
Hive 是一个构建于 Hadoop 顶层的数据仓库工具,支持大规模数据存储、分析,具有良好的可扩展性。某种程度上可以将 Hive 看作是用户编程接口。Hive 本身不存储和处理数据,依赖分布式文件系统 HDFS 存储数据,依赖分布式并行计算模型MapReduce 处理数据。Hive 定义了简单的类似 SQL 的查询语言——HiveQL。用户可以通过编写的 HiveQL 语句运行 MapReduce 任务,可以很容易把原来构建在关系数据库上的数据仓库应用程序移植到 Hadoop 平台上。Hive 是一个可以有效、合理、直观的数据分析工具。
【实验环境】
Windows 操作系统。
Schema Workbench:Schema 定义了一个多维数据库,包含一个逻辑模型,而这个逻辑模型的目的是书写 MDX 语言的查询语句。逻辑模型包括几个概念:Cubes(立方体)、维度(Dimensions)、层次(Hierarchies)、级别(Levels)、和成员(Members)。而一个 Schema 文件就是编辑这个 Schema 的一个 XML 文件。在这个文件中形成逻辑模型和数据库物理模型的对应。使用 Schema workbench 工具创建 XML 文件非常简单。一个 Cube 是一系列维度(Dimension)和度量(Measure)的集合区域。在 Cube 中,Dimension 和 Measure 的共同点就是共用一个事实表。
MySQL:数据库管理系统。 实验前需要将数据库环境准备好:将 footmart2008.sql 导入所使用环境的 MySQL 数据库中。
【实验资源】
实验报告模板下载
https://pan.baidu.com/s/1qqhcPcQotylS3PNP4f-edg#提取码vidt
实验数据和软件下载
https://pan.baidu.com/s/1Lm4jG1h0lNVPeLLQxNzkig#提取码5c5f
【实验步骤】
- 数据库准备。
(1)启动第一章我们安装的 MySQL 客户端 MySQL Workbench。创建数据库foodmart
和相关用户和权限,运行以下SQL语句。
create database foodmart;
-- 创建用户名密码为foodmart/foodmart的用户
create user 'foodmart'@'localhost' identified by 'foodmart';
create user 'foodmart'@'%' identified by 'foodmart';
grant all on foodmart.* to 'foodmart'@'localhost';
grant all on foodmart.* to 'foodmart'@'%';
(2)打开控制面板\所有控制面板项\管理工具
,双击服务
。
(3)找到名字为 MYSQL 或 MYSQLD 的服务,查看属性->可执行文件的路径下,有一个my.ini的文件的路径。
(4)找到my.ini
的路径,如果在在MySQL的安装目录下找到my-huge.ini
。可以把my.ini
文件重命名为my.ini.bak
,my-huge.ini
重命名为my.ini
。这一步主要是使用更大容量的配置去替换 MySQL 的默认配置,让 MySQL 可以使用更大的磁盘和内存空间,提高 MySQL 的性能。但是如果找不到my-huge.ini
,可以忽略此步,使用默认的my.ini
。
(5)编辑my.ini
,修改以下两项配置的值。这里主要目的是配置更大的临时表空间和最大表堆内存,可以让 MySQL 内存表装载更多的行,提升查询的性能。
tmp_table_size = 256M
max_heap_table_size = 256M
- 使用 MySQL Workbench 打开
foodmart-optimized.sql
文件并运行。运行以后刷新左边面板,会看到foodmart数据库下出现了表格。
表格说明: 这是一个食品公司销售数据库。
表名 | 说明 |
---|---|
sales_fact_1997 | 销售事实表,1997年的所有销售记录。store_sales - 销售额;store_cost - 销售成本;unit_sales - 销售量 |
sales_fact_1998 | 销售事实表,1998年所有销售记录。 |
sales_fact_dec_1998 | 销售事实表,1998年12月的所有销售记录。 |
customer | 客户表(维度表),可以展开到国家,省(州),市 |
product | 销售产品表(维度表),可以展开到产品家族(family),部门(department),目录(category),子目录(subcategory),品牌(brand) |
promotion | 促销活动表(维度表) |
store | 销售商店表(维度表) |
time_by_day | 销售时间表(维度表) |
安装JDK8,如果安装过可跳过此步。
解压 schema-workbench 压缩包,把MySQL 驱动包
mysql-connector-java-5.1.48-bin.jar
拷贝到lib目录下,运行workbench.bat
,启动 Schema Workbench。点击菜单"Options" -> “Connections…”
配置连接数据库的主机名称,数据库名称,端口号,账号和密码(见第一步)等,连接
foodmart
数据库。
注意事项:有部分同学安装的MySQL版本比较高,按上面配置会提示驱动错误“Error connecting to database:(using class org.gjt.mm.mysql.Driver)”。可以尝试选择连接类型为“Generic database”模式来配置
自定义链接URL:jdbc:mysql://localhost:3306/foodmart
自定义驱动类名称:com.mysql.jdbc.Driver
- 选择“File→New→Schema”命令新建一个 Schema 文件,命名为
fm你学号最后3位
,输入回车键。右键点击Schema,新建Cube。
右键点击新建的 Cube,选择"Add Table"新建一个表。
表格选择
sales_fact_1997
。右键点击Cube,选择"Add Dimension"以增加维度,命名为
DimCustomer
,并选择外键(Foreign Key)为 customer_id。
右键点击
DimCustomer
,新增一个层次(Hierarchy),命名为"customer"。并在层次下再新增一个名为"Customer" 的Table。右键点击 customer 层次(Hierarchy),依次新增"level",并命名为"country",“State Province”,“City”,“Customer Id”,以上顺序不能错。
接下来建立 product 表的维度。右键点击Cube,选择"Add Dimension"以增加维度,命名为
DimProduct
,并选择外键(Foreign Key)为 product。
在
DimProduct
下新建一个名为product
的层次(Hierarchy)。在
product
的层次(Hierarchy)下新建一个JOIN
,使用 product_class_id 作为连接键连接 product 表和 product_class 表。右键点击 product 层次(Hierarchy),依次新增级别(level),
Product Family
→Product Department
→Product Category
→Product Subcategory
→Brand Name
→Product Id
,以上顺序不能错,见下图。
接下来建立 promotion 表的维度,层次和依次新增级别(level),
media_type
→promotion_id
。步骤和建立Customer 维度差不多,所以这里省略步骤,只给出关键截图。接下来建立 store 表的维度,层次和依次新增级别(level),
store_country
→store_state
→store_city
→store_id
。接下来建立 time_by_day 表的维度,层次和依次新增级别(level),
quarter
→the_month
→the_day
→time_id
。
注意:这里配置的是时间级别,所以 level type 与上面配置稍有不同。
右键点击Cube建立三个度量(Measure),分别是"store_sales”,“store_cost”,“unit_sales”。
修改 Cube 名称为
Cube你学号后3位
。保存Cube 为"Cube你学号后3位.xml" 文件,并附在你的实验报告内。
使用文本编辑器如Notepad++ 打开xml文件,查看内容,对比Schema Workbench 层次结构和xml 的层次结构。