商务智能方法与应用第三章实验手册

2020-02-10
7分钟阅读时长

«返回课程汇总页面

【实验手册版本】

当前版本号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. 数据库准备。

(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.bakmy-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
  1. 使用 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销售时间表(维度表)
  1. 安装JDK8,如果安装过可跳过此步。

  2. 解压 schema-workbench 压缩包,把MySQL 驱动包mysql-connector-java-5.1.48-bin.jar拷贝到lib目录下,运行workbench.bat,启动 Schema Workbench。

  3. 点击菜单"Options" -> “Connections…”

  4. 配置连接数据库的主机名称,数据库名称,端口号,账号和密码(见第一步)等,连接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

  1. 选择“File→New→Schema”命令新建一个 Schema 文件,命名为fm你学号最后3位,输入回车键。右键点击Schema,新建Cube。

  1. 右键点击新建的 Cube,选择"Add Table"新建一个表。

  2. 表格选择sales_fact_1997

  3. 右键点击Cube,选择"Add Dimension"以增加维度,命名为DimCustomer,并选择外键(Foreign Key)为 customer_id。

  1. 右键点击DimCustomer,新增一个层次(Hierarchy),命名为"customer"。并在层次下再新增一个名为"Customer" 的Table。

  2. 右键点击 customer 层次(Hierarchy),依次新增"level",并命名为"country",“State Province”,“City”,“Customer Id”,以上顺序不能错。

  3. 接下来建立 product 表的维度。右键点击Cube,选择"Add Dimension"以增加维度,命名为DimProduct,并选择外键(Foreign Key)为 product。

  1. DimProduct下新建一个名为product的层次(Hierarchy)。

  2. product的层次(Hierarchy)下新建一个JOIN,使用 product_class_id 作为连接键连接 product 表和 product_class 表。

  3. 右键点击 product 层次(Hierarchy),依次新增级别(level),Product FamilyProduct DepartmentProduct CategoryProduct SubcategoryBrand NameProduct Id,以上顺序不能错,见下图。

  1. 接下来建立 promotion 表的维度,层次和依次新增级别(level),media_typepromotion_id。步骤和建立Customer 维度差不多,所以这里省略步骤,只给出关键截图。

  2. 接下来建立 store 表的维度,层次和依次新增级别(level),store_countrystore_statestore_citystore_id

  3. 接下来建立 time_by_day 表的维度,层次和依次新增级别(level),quarterthe_monththe_daytime_id

注意:这里配置的是时间级别,所以 level type 与上面配置稍有不同。

  1. 右键点击Cube建立三个度量(Measure),分别是"store_sales”,“store_cost”,“unit_sales”。

  2. 修改 Cube 名称为Cube你学号后3位

  3. 保存Cube 为"Cube你学号后3位.xml" 文件,并附在你的实验报告内。

  4. 使用文本编辑器如Notepad++ 打开xml文件,查看内容,对比Schema Workbench 层次结构和xml 的层次结构。