1、 本 科 毕 业 论 文 基于 JAVA 开源工具 KETTLE 的 ETL 研究和实现 Research and Realization of ETL based on Java Open Source Tool KETTLE 姓 名: 学 号: 学 院:软件学院 系:软件工程 专 业:软件工程 年 级: 校外指导教师: 校内指导教师: 年 月摘 要 ETL( Extract-Transform-Load) 用来描述将数据从来源端经过萃取( extract)、转置( transform)、加载( load)至目的端的过程。 ETL 作为 BI/DW( Business Intelligenc
2、e/ Data Warehousing)的核心和灵魂,能够按照统一的规则集成并提高数据的价值,是负责完成数据从数据源向目标数据仓库转化的过程,是实施数据仓库的重要步骤。 目前 ETL 过程中 经常采 用三种方法 : 第一种是借助专业的 ETL 工具实现;第二种是 SQL 编程方式实现;第三种是 ETL 工具和 SQL 相结合 实现 。前两种方法各有优缺点, 第一种 可以快速的建立起 ETL 工程,屏蔽复杂的编码任务,提高速度,降低难度,但缺少灵活性。 第二种的 优点是灵活,提高 ETL 运行效率,但是编码复杂,对技术要求比较高。第三种综合了前两种的优点, 可以 极大 地 提高 ETL 的开发速
3、度和效率。 目前在市面上存在着很多种 ETL 工具,其中不乏开源的精品, KETTLE 就是一款以 JAVA 为开发语言的 ETL 开源工具。 本文以金融银行的数据仓库为研究背景, 分析其 ETL 架构,继而以 KETTLE为工具、以 Teradata 为数据库,借助 ETL 工具的方便性和 SQL 语句的灵活性来构造一个数据仓库的 ETL 流程。主要内容如下: (1) 分析了当前数据仓库的研究现状 、 数据仓库的概念和 ETL 本质及 ETL在数据仓库过程中的作用,阐述了 ETL 的体系结构、元数据和数据仓库的关系。 (2) 通过金融银行数据仓库的 ETL 架构实例,阐述了 ETL 流程中的
4、各个过程,分析其实现方法及出现的问题, 并 在此基础上提出 ETL 的体系结构。 (3) 研究了 Java 开源 ETL 工具 KETTLE 的源码, 编写 插件来增加 KETTLE的功能 , 使其 配合 Teradata 数据库的使用。 (4) 最后运用工具与 SQL 语句相结合 的方式 ,尝试以元数据为驱动,利用Teradata 数据库和 KETTLE 工具来 完整的 实现一个 ETL 的架构。 本文研究和实现的 ETL 架构,适合于多种不同的数据源,经测试可以方便、快捷的实现数据仓库的 ETL 过程。 关键词 :数据仓库 ; ETL; KETTLE Abstract ETL stands
5、 for extract, transform and load, the processes that enable companies to move data from multiple sources, reformat and cleanse it, and load it into another database, a data mart or a data warehouse for analysis, or on another operational system to support a business process. ETL for the heart and so
6、ul of BI / DW (Business Intelligence), can be integrated in accordance with uniform rules and to increase the value of data, is an important step in data warehouse. There are three common methods of ETL process frequently used: the first one is using the professional ETL tools, the second one is usi
7、ng SQL programming. And the third one is the combination of SQL programming and ETL tools. The first two methods have both advantages and disadvantages: with ETL tools, we can set up ETL project quickly, shield the complexity of the encoding task, increase the speed and reduce the difficulty, but la
8、ck flexibility. The SQL programming has advantages in flexibility and improves the efficiency of ETL. However, it increases the complexity and requires relatively high coding skill. The third one combines the advantages of the first two, which greatly improves the speed and the efficiency of ETL dev
9、elopment. Focusing on financial and banking data warehouse, the ETL architecture based on the database of Teradata is analyzed in this paper. Then a data warehouse ETL process tool which joins Teradata and KETTLE, ETL tool with the convenience and flexibility of SQL statements is constructed. The ma
10、in contents are as follows: (1) Review the current researches on data warehouse, and then describe the concepts of data warehouse and ETL process. Finally, it elucidates the relationship between ETL architecture, metadata and the data warehouse. (2) Through the example of the banking data warehouse
11、ETL architecture, this paper illustrates the process of ETL, analyzes its implementations and problems during the implementations. Finally, it concludes the concept of the ETL architecture. (3) Do some researches on the source code of KETTLE, an open sourced tool that is developed by Java. Then crea
12、te plug-ins to improve the cooperation between KETTLE and Teradata database. (4) Finally, a framework of ETL is implemented, which is combined with SQL programming and the ETL tools. It is based on metadata-driven approach by using Teradata database and KETTLE tool. The ETL framework that implemente
13、d in this paper, can adapt to various of databases. As the test result shows, this framework can realize the ETL process conveniently and efficiently. Key words: Data Warehouse; Extract-Transform-Load; KETTLE 目录 第一章 引言 . 1 1.1 课题研究的背景 . 1 1.2 国内外研究现状 . 2 1.3 论文的主要内容 . 3 第二章 数据仓库和 ETL 介绍 . 4 2.1 数据仓库
14、介绍 . 4 2.1.1 数据仓库的定义 . 4 2.1.2 为什么需要数据仓库 . 5 2.1.3 数据仓库的体系结构 . 6 2.2 ETL 介绍 . 7 2.2.1 数据提取 . 8 2.2.2 数据清洗 . 9 2.2.3 数据转换 . 9 2.2.4 数据加载 . 10 2.2.5 元数据对 ETL 的作用 . 10 2.3 本章小结 . 11 第三章 某商业银行 ETL 框架实例分析 . 12 3.1 项目背景 . 12 3.2 总体设计方案 . 12 3.2.1 基本设计思想 . 12 3.2.2 系统逻辑架构 . 13 3.2.3 网络拓扑与物理架构 . 14 3.2.4 ET
15、L 服务器环境 . 15 3.3 数据装载 . 16 3.4 ETL 任务和调度 . 19 3.4.1 任务 触发 . 19 3.4.2 日切 /翻牌 . 22 3.5 本章小结 . 23 第四章 基于 KETTLE 的 ETL 系统架构 . 24 4.1 系统基础工具分析 . 24 4.1.1 Java 开源 ETL 工具 KETTLE 及其插件 . 24 4.1.2 Teradata 数据库介绍 . 28 4.1.3 Perl 脚本 . 29 4.2 ETL 整体架构 . 29 4.2.1 总体设计思想 . 29 4.2.2 系统逻辑结构图 . 30 4.2.3 源系统导出 . 31 4.
16、2.4 文本文件加载到 SDATA 临时库 . 33 4.2.5 SDATA 层到 PDATA 层的转换 . 34 4.2.6 整体框架的自动化运行 . 34 4.2.7 元数据设计 . 35 4.3 ETL 详细设计 . 36 4.3.1 ETL 目录结构 . 36 4.3.2 Teradata 数据库结构 . 37 4.3.3 元数据设计 . 38 4.3.4 KETTLE 工作流设计 . 44 4.3.5 元数据生成任务 XML. 53 4.4 ETL 框架实例测试 . 53 4.4.1 测试案例背景 . 53 4.4.2 插件和 KETTLE 源码测试 . 54 4.4.3 ETL 作
17、业生成测试 . 54 4.4.4 ETL 作业运行测试 . 55 4.5 ETL 架构性能分析 . 56 4.6 本章小结 . 56 第五章 总结与展望 . 58 5.1 本课题研究工作的总结 . 58 5.2 进一步工作的建议 . 58 致谢 . 59 参考文献 . 60 Contents Chapter 1 Introduction . 1 1.1 Research background . 1 1.2 Recent Development . 2 1.3 Contents . 3 Chapter 2 Data Warehouse and ETL . 4 2.1 Introduction
18、to Data Warehouse . 4 2.1.1 Definition of Data Warehouse. 4 2.1.2 Why Do We Need Data Warehouse . 5 2.1.3 Architecture of Data Warehouse . 6 2.2 Introduction to ETL. 7 2.2.1 Data Extraction . 8 2.2.2 Data Cleaning. 9 2.2.3 Data Transformation . 9 2.2.4 Data Loading. 10 2.2.5 Metadata. 10 2.3 Summary
19、. 11 Chapter 3 ETL Case . 12 3.1 Project Background . 12 3.2 Overall Design Architecture . 13 3.2.1 Basic Design Idea. 13 3.2.2 Logic Structure. 13 3.2.3 Network Topology and Physical Structure . 14 3.2.4 ETL Server Environment . 15 3.3 Data Loading . 16 3.4 ETL Tasks and Scheduling . 19 3.4.1 Task
20、trigger . 20 3.4.2 Flop . 22 3.5 Summary. 23 Chapter 4 ETL System Architecture . 24 4.1 Systems Tools . 24 4.1.1 KETTLE and Plug-ins . 24 4.1.2 Teradata . 27 4.1.3 Perl . 28 4.2 ETL Architecture . 29 4.2.1 Design Thinking. 29 4.2.2 Logical Structure . 29 4.2.3 Export The Source System. 30 4.2.4 Loadeding. 33 4.2.5 Transform . 33 4.2.6 Auto Running . 34 4.2.7 Metadata. 34 4.3 ETL Detailed Design . 36 4.3.1 ETL Directory Structure. 36 4.3.2 Teradata Database Structure. 37 4.3.3 Metadata Design . 38 4.3.4 KETTLE Workflow . 44 4.3.5 Metadata Generation Task XML. 53 4.4 ETL Case Test.