商务智能方法与应用第一章实验手册
文章导航
【实验手册版本】
当前版本号v20200407
版本 | 修改说明 |
---|---|
v20200407 | 修改MySql 的版本为5.x,因为8.x的版本存在兼容问题 |
v20200325 | 修改步骤4的相关描述,去掉查看test库的要求 |
v20200318 | 修改了MySQL驱动的版本,避免出现驱动不兼容情况 |
v20200313 | 增加了 Kettle 网盘下载链接 |
v20200312 | 更新了 Kettle 下载链接 |
v20200210 | 初始化版本 |
实验1:销售数据预处理
【实验名称】
销售数据预处理
【实验目的】
- 熟悉 Linux、MySQL、Insight 等系统和软件的安装与使用。
- 了解大数据处理的基本流程。
- 熟悉数据抽取、转换、加载的方法。
- 熟悉在不同类型数据库之间进行数据的导入与导出。
【实验原理】
本实验将使用 MySQL Workbench (MySQL 连接客户端软件)以及 Pantaho Data Integration(也叫 Kettle,是一个ETL工具)。
首先将销售数据和员工数据导入 MySQL,通过 Kettle 和 MySQL Workbench 连接,将两个数据源利用员工信息号进行整合,最终将生成的一张新表格 写入数据库,达到可在一张表格中查看员工信息和对应销售情况的目的。
本实验将使用两个数据源:
- employee_info_table.sql 代表员工信息表、
- sales_info_table.sql 表示销售信息表。
【实验环境】
个人笔记本安装。 内存:至少4G 硬盘:至少空余40G 操作系统: 64位 Windows系统。
【实验资源】
以下非网盘实验资源推荐复制链接到迅雷下载。
MySQL Workbench
https://dev.mysql.com/get/Downloads/MySQLGUITools/mysql-workbench-community-8.0.19-winx64.msi
Pantaho Data Integration(Kettle) 9.0
- 官方下载,直接点绿色的按钮下载
https://sourceforge.net/projects/pentaho/files/
- 这是百度网盘下载地址
https://pan.baidu.com/s/1vYEVuG-LkAVJyRajW3_CbQ#提取码fb57
MySQL 5.x(如果已经安装可以不用下载)
https://dev.mysql.com/downloads/windows/installer/5.7.html
JDK8(如果已经安装可以不用下载) 需要打开以下页面,选择对应系统版本的JDK下载。
https://www.oracle.com/java/technologies/javase-jdk8-downloads.html
- MySQL JDBC 驱动
mysql-connector-java-5.1.48-bin.jar
(Kettle需要此驱动连接MySQL) - employee_info_table.sql 脚本文件
- sales_info_table.sql 脚本文件
https://pan.baidu.com/s/1nIE4q_4niPTp9V0G2f5kig#提取码:nea3
【实验步骤】
安装JDK8,如果已经安装可以不用重复安装。安装过程略。
安装MySQL,安装过程中把管理员账号密码设置如下。
用户名:root
密码:Mysql0668
安装 MySQL Workbench。测试是否能够连接数据库。
查看 MySQL Workbench 左边
SCHEMAS
面板是否有数据。在 MySQL Workbench 运行以下代码,创建两个数据库
etl_a
和etl_b
。
(1)复制以下代码到 MySQL Workbench 运行。
--创建etl_a数据库,同时创建该库的连接账号
--用户名密码:etl_a/etl_a
create user 'etl_a'@'localhost' identified by 'etl_a';
create user 'etl_a'@'%' identified by 'etl_a';
create database etl_a;
grant all on etl_a.* to 'etl_a'@'localhost';
grant all on etl_a.* to 'etl_a'@'%';
--创建etl_b数据库,同时创建该库的连接账号
--用户名密码:etl_b/etl_b
create user 'etl_b'@'localhost' identified by 'etl_b';
create user 'etl_b'@'%' identified by 'etl_b';
create database etl_b;
grant all on etl_b.* to 'etl_b'@'localhost';
grant all on etl_b.* to 'etl_b'@'%';
(2)点击闪电符号可以运行代码,或者按ctrl+enter
。
(3)Output 区域可以看到 SQL 语句是否运行成功。
(4)刷新左边Schema 区域,看是否能够看到etl_a
和etl_b
数据库。
- 修改SQL脚本。
(1)用文本编辑器(例如Notepad++)打开employee_info_table.sql
文件,查找到员工编号为0025603211
这一行,修改name对应的字段为你本人姓名。(关键步骤,这步缺失实验报告不得分)修改完成后,保存脚本。
在73行找到这一句
INSERT INTO employee_info_table(Employee_number,name,age,phone_number,department,area,other) VALUES (0025603211,'xiaoqian',22,13245206531,'sales','shenzhen',NULL);
把’xiaoqian’修改为你的中文名字
INSERT INTO employee_info_table(Employee_number,name,age,phone_number,department,area,other) VALUES (0025603211,'修改为本人姓名',22,13245206531,'sales','shenzhen',NULL);
(2)在MySQL Workbench 执行以下代码,在etl_a
库执行employee_info_table.sql,在etl_b
库执行sales_info_table.sql。
执行完语句以后,注意查看 Workbench 下面 Output 区域运行结果是否成功。
Kettle 安装包解压到一个文件夹。
把MySQL数据库的驱动
mysql-connector-java-5.1.41-bin.jar
拷贝到Kettle安装目录\data-integration\lib
下。在Kettle安装目录下找到
spoon.bat
文件,用文本编辑器打开。
(1)在125行找到这句。
if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xms1024m" "-Xmx2048m" "-XX:MaxPermSize=256m"
(2)在这句后面增加"-Dfile.encoding=UTF-8"
,注意有空格隔开。这句主要是让Kettle支持UTF-8编码,在数据转换过程中避免乱码的出现。
if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xms1024m" "-Xmx2048m" "-XX:MaxPermSize=256m" "-Dfile.encoding=UTF-8"
(3)保存以后,双击spoon.bat
启动Kettle。
- 新建一个转换(Transformations)
12.新建一个名字为MYSQL_ETL_A
的连向etl_a
库的连接。
测试数据库是否能够正常连接。
重复第12-13相同的操作,新建一个名字为
MYSQL_ETL_B
连向etl_b
库的连接。在
核心对象
选项卡下,选择输入
->表输入
,拖拽到右边“转换”面板内。双击
表输入
,获取etl_a
库下employee_info_table
表数据,配置如下,注意获取记录数量限制设置为1000。重复15-16步骤,获取
etl_b
库下sales_info_table
表数据,配置如下,注意获取记录数量限制设置为1000。在
核心对象
选项卡下,搜索“排序”,把排序记录
拖拽到右边面板内。点击
employee_info_table
,按住键盘的Shift
键,拖拽箭头指向排序记录
。双击
排序记录
,选择按employee_number
排序,升序
选择“是”。在
核心对象
选项卡下,搜索“选择”,把字段选择
拖拽到右边面板内。选择"Employee_number",“sales”,“profits"这三个字段,其他字段可以右键点击选择删除。在“字段选择”步骤后面增加一个“排序记录”步骤,选择
Employee_number
升序。在
核心对象
选项卡下,搜索“merge”,把Multiway merge join
拖拽到右边面板内,并把排序记录
和排序记录2
步骤都指向Multiway merge join
。这一步是对2个表格做一个内连接操作,使用Employee_number
作为连接的列。
注意在选择连接的列时,两个 Join Keys 都只保留Employee_number
,把其他列删除。
新增一个
字段选择
步骤,只保留下图的字段,其他字段可以右键点击选择删除。在
核心对象
选项卡下,搜索“表输出”,把表输出
拖拽到右边面板内,并连接字段选择2
步骤。编辑表输出
步骤,数据库连接选择“MYSQL_ETL_B”,目标表输入“employee_sales”。点击SQL按钮,执行创建“employee_sales”表格的SQL语句。
这一步主要是把employee_info_table
和sales_info_table
连接的表格导出到employee_sales
。
点击执行。
查看执行日志是否转换成功
在MySQL Workbench 查看
etl_b
数据库下的employee_sales
表格是否存在数据。(此为关键步骤,无截图实验报告不得分)在MySQL Workbench 编写 SQL 语句,把
employee_info_table
和sales_info_table
进行连接,得到和employee_sales
一样的结果,可以参考以下提示。
提示:以下[]内容需要你补充完整。
select a.Employee_number,a.name,a.age,a.phone_number,a.department,a.area,b.sales,b.profits from [] a inner join [] b on [] order by [] asc