etl教程
2024年0基础学习ETL入门指南

评估团队技能和资源情况,选择易于 学习和使用的ETL工具。
2024/2/28
数据量和性能要求
考虑数据量大小以及处理性能要求, 选择适合的ETL工具。
成本和预算
考虑工具的成本和预算限制,选择性 价比高的ETL工具。
14
使用技巧与注意事项
了解数据源和目标特性
在使用ETL工具前,先了解数据源和目标的特性 ,以便更好地进行数据抽取、转换和加载。
2024/2/28
了解并掌握了如 Apache NiFi、Talend 、Informatica等常用 ETL工具的使用方法和 特点。
数据清洗与转换 技术
学习了数据清洗的原则 和方法,如去重、填充 缺失值、异常值处理等 ,以及数据转换的常见 操作,如数据类型转换 、数据标准化等。
ETL优化技巧
掌握了提高ETL效率的 优化技巧,如并行处理 、增量加载、索引优化 等。
定期审查和优化
定期审查ETL过程,发现潜在问题并进行优化,提高ETL效率和质量。
2024/2/28
24
06
总结回顾与未来展望
2024/2/28
25
关键知识点总结回顾
ETL概念及作用
常用ETL工具
ETL是Extract, Transform, Load的缩 写,指将数据从来源端 抽取(Extract),进行 清洗、转换等处理( Transform),最终加 载到目标数据库或数据 仓库的过程(Load)。
2024/2/28
实现业务逻辑
根据业务需求,编写相应的转换逻辑,如计算字段、数据分组等 。
19
加载目标表并验证结果
创建目标表
在目标数据库中创建与源数据 对应的目标表。
etl的方法

etl的方法ETL的方法ETL(Extract-Transform-Load)是一种常用的数据处理方法,它用于从源系统中提取数据,经过转换处理后,加载到目标系统中。
在数据仓库和数据集成中,ETL起着至关重要的作用。
本文将介绍ETL 的方法,并重点讨论其三个步骤:数据提取、数据转换和数据加载。
一、数据提取数据提取是ETL的第一步,目的是从源系统中获取所需的数据。
在数据提取过程中,需要考虑以下几个方面:1. 数据源:数据源可以是各种类型的数据库、文件、API等,根据实际情况选择合适的数据源。
在选择数据源时,要考虑数据的可靠性、完整性和实时性。
2. 提取方法:根据数据源的类型和结构,选择合适的提取方法。
常用的提取方法包括全量提取和增量提取。
全量提取是指每次都提取全部数据,适用于数据量较小或者需要全量数据的情况;增量提取是指只提取更新的数据,适用于数据量较大或者需要实时数据的情况。
3. 数据抽取:根据需求,选择合适的数据抽取方式。
常见的数据抽取方式包括批量抽取和实时抽取。
批量抽取是指按照一定的时间间隔或者触发条件,批量提取数据;实时抽取是指在数据发生变化时立即提取数据。
根据实际情况选择合适的数据抽取方式。
二、数据转换数据转换是ETL的第二步,目的是对提取的数据进行清洗、整合和转换,以满足目标系统的需求。
在数据转换过程中,需要考虑以下几个方面:1. 数据清洗:对提取的数据进行清洗,去除重复数据、空值和错误数据,保证数据的质量和准确性。
2. 数据整合:对多个数据源提取的数据进行整合,统一数据格式和结构,方便后续的处理和分析。
3. 数据转换:根据目标系统的需求,对数据进行转换。
常见的数据转换操作包括数据格式转换、数据字段映射、数据计算和数据合并等。
三、数据加载数据加载是ETL的最后一步,目的是将经过转换处理后的数据加载到目标系统中。
在数据加载过程中,需要考虑以下几个方面:1. 目标系统:选择合适的目标系统,将数据加载到目标系统中。
ETL基础及常用技术培训

oracle基础—数据库安装
Windows环境下: 网上下载安装包 点击安装 全选默认配置即可。 其它机器上已有server端,可只安client端。 PLSQL软件是一个优秀的oracle工具,建议安装
LOGO
ETL基础及 常用技术
主要内容
ETL基本概念 ETL常用逻辑架构 ETL实施过程 ETL常用技术(shell,oracle,datastage)
ETL基本概念
ET L(Extract-Transform-Load)即数据的抽取、转换与加载。ETL是从各 种原始的业务系统(异构多源)中提取数据,按照预先设计好的规则将抽取到的 数据进行转换,最后将转换完的数据按计划增量或全部导人到目标数据库,成 为联机分析处理、数据挖掘的基础。
.
shell基础—流程控制命令(if)
字符串比较: string1 = string2 如果相等则为真 string1 != string2 如果不等则为真 -n string 如果不空则为真 -z string 如果为空则为真 算术比较: expression1 -eq expression2 如果相等则为真 expression1 -ne expression2 如果不等则为真 expression1 -gt expression2 如果大于则为真 expression1 -ge expression2 大于等于则为真 expression1 -lt expression2 如果小于则为真 expression1 -le expression2 小于等于则为真
ETL常用技术
SHELL(unix基本操作) SQL PL/SQL PROC DATASTAGE
shell基础
Linux中有好多种不同的shell,如bsh,csh ,同其他语言一样,可以通过我们 使用任意一种文字编辑器,比如vi等来编写我们的shell程序。 程序必须以下面的行开始(必须放在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个程序中我们 使用/bin/sh来执行程序。 当编辑好脚本时,如果要执行该脚本,还必须使其可执行。 要使脚本可执行: chmod +x filename 然后,可以通过输入: ./filename 来执行脚本。
etl流程

etl流程ETL(Extract-Transform-Load)是一种数据处理过程,用于将不同格式的数据从源系统中抽取,经过转换处理后加载到目标系统中。
这种流程是数据仓库和商业智能系统中最常用的一种方法,用于保证数据的质量和一致性。
本文将详细介绍一个典型的ETL流程。
首先,ETL流程的第一步是数据的抽取。
数据源可以是各种各样的系统,比如关系数据库、ERP系统、CRM系统、网站日志等。
ETL工具通过连接到数据源,使用SQL查询或者API调用等方式,将需要的数据从源系统中抽取出来。
抽取的数据可以是全量数据,也可以是增量数据,具体根据需求而定。
接下来,抽取的数据需要进行转换处理。
这包括数据清洗、数据整合、数据变换等步骤。
数据清洗主要是处理一些脏数据,比如缺失值、重复值、不一致的格式等等,以确保数据的正确性和一致性。
数据整合是将不同数据源的数据进行合并,比如将客户信息和订单信息进行关联,以便分析客户的购买行为。
数据变换是将数据从源系统的格式转换成目标系统的格式,比如将日期格式转换成统一的标准格式。
在数据转换处理完成后,接下来是将数据加载到目标系统中。
目标系统可以是数据仓库、数据湖、数据集市等,它们用于存储和管理ETL流程中的处理结果。
数据加载有两种方式,一种是全量加载,即将整个数据集一次性加载到目标系统中;另一种是增量加载,即将新抽取的数据与目标系统中已存在的数据进行合并,更新或追加。
在数据加载完成后,还需要进行数据质量的检查。
这包括数据的完整性、准确性、一致性等方面的检查。
数据完整性主要是检查数据是否有缺失或空值;数据准确性是检查数据是否与源系统的数据保持一致;数据一致性是检查数据是否符合事先定义的规则和约束。
如果发现数据质量问题,需要及时处理,以确保数据的可靠性和可用性。
最后,ETL流程还需要进行监控和维护。
监控是实时监测ETL流程的执行情况,比如数据抽取的速度、数据转换的效率、数据加载的成功率等,以便及时发现和解决问题。
ETL测试基础教程:数据提取、转换和加载说明书

About the T utorialAn ETL tool extracts the data from all these heterogeneous data sources, transforms the data (like applying calculations, joining fields, keys, removing incorrect data fields, etc.), and loads it into a Data Warehouse. This is an introductory tutorial that explains all the fundamentals of ETL testing.AudienceThis tutorial has been designed for all those readers who want to learn the basics of ETL testing. It is especially going to be useful for all those software testing professionals who are required to perform data analysis to extract relevant information from a database. PrerequisitesWe assume the readers of this tutorial have hands-on experience of handling a database using SQL queries. In addition, it is going to help if the readers have an elementary knowledge of data warehousing concepts.Disclaimer & CopyrightCopyright 2015 by Tutorials Point (I) Pvt. Ltd.All the content and graphics published in this e-book are the property of Tutorials Point (I) Pvt. Ltd. The user of this e-book is prohibited to reuse, retain, copy, distribute or republish any contents or a part of contents of this e-book in any manner without written consent of the publisher.We strive to update the contents of our website and tutorials as timely and as precisely as possible, however, the contents may contain inaccuracies or errors. Tutorials Point (I) Pvt. Ltd. provides no guarantee regarding the accuracy, timeliness or completeness of our website or its contents including this tutorial. If you discover any errors on our websiteorinthistutorial,******************************************iT able of ContentsAbout the Tutorial (i)Audience (i)Prerequisites (i)Disclaimer & Copyright (i)Table of Contents .................................................................................................................................... i i 1.ETL – INTRODUCTION . (1)Difference between ETL and BI Tools (1)ETL Process (2)ETL Tool Function (3)2.ETL TESTING – TASKS (4)3.ETL VS DATABASE TESTING (5)4.ETL TESTING – CATEGORIES (7)5.ETL TESTING – CHALLENGES (9)6.ETL – TESTER'S ROLES (10)7.ETL TESTING – TECHNIQUES (12)8.ETL TESTING – PROCESS (15)9.ETL TESTING – SCENARIOS (TEST CASES) (16)10.ETL TESTING – PERFORMANCE (19)11.ETL TESTING – SCALABILITY (20)12.ETL TESTING – DATA ACCURACY (21)13.ETL TESTING – METADATA (22)ii14.ETL TESTING – DATA TRANSFORMATIONS (23)15.ETL TESTING – DATA QUALITY (24)16.ETL TESTING – DATA COMPLETENESS (25)17.ETL TESTING – BACKUP RECOVERY (26)18.ETL TESTING – AUTOMATION (27)19.ETL TESTING – BEST PRACTICES (28)20.ETL TESTING – INTERVIEW QUESTIONS (30)iiiETL Testing 1The data in a Data Warehouse system is loaded with an ETL (Extract, Transform, Load) tool. As the name suggests, it performs the following three operations: ∙Extracts the data from your transactional system which can be an Oracle, Microsoft, or any other relational database, ∙Transforms the data by performing data cleansing operations, and then ∙ Loads the data into the OLAP data Warehouse.You can also extract data from flat files like spreadsheets and CSV files using an ETL tool and load it into an OLAP data warehouse for data analysis and reporting. Let us take an example to understand it better.ExampleLet us assume there is a manufacturing company having multiple departments such as sales, HR, Material Management, EWM, etc. All these departments have separate databases which they use to maintain information w.r.t. their work and each database has a different technology, landscape, table names, columns, etc. Now, if the company wants to analyze historical data and generate reports, all the data from these data sources should be extracted and loaded into a Data Warehouse to save it for analytical work.An ETL tool extracts the data from all these heterogeneous data sources, transforms the data (like applying calculations, joining fields, keys, removing incorrect data fields, etc.), and loads it into a Data Warehouse. Later, you can use various Business Intelligence (BI) tools to generate meaningful reports, dashboards, and visualizations using this data. Difference between ETL and BI T oolsAn ETL tool is used to extract data from different data sources, transform the data, and load it into a DW system; however a BI tool is used to generate interactive and ad-hoc reports for end-users, dashboard for senior management, data visualizations for monthly, quarterly, and annual board meetings.The most common ETL tools include: SAP BO Data Services (BODS), Informatica – Power Center, Microsoft – SSIS, Oracle Data Integrator ODI, Talend Open Studio, Clover ETL Open source, etc.Some popular BI tools include: SAP Business Objects, SAP Lumira, IBM Cognos, JasperSoft, Microsoft BI Platform, Tableau, Oracle Business Intelligence Enterprise Edition, etc.1. ETL – IntroductionETL ProcessLet us now discuss in a little more detail the key steps involved in an ETL procedure –Extracting the DataIt involves extracting the data from different heterogeneous data sources. Data extraction from a transactional system varies as per the requirement and the ETL tool in use. It is normally done by running scheduled jobs in off-business hours like running jobs at night or over the weekend.Transforming the DataIt involves transforming the data into a suitable format that can be easily loaded into a DW system. Data transformation involves applying calculations, joins, and defining primary and foreign keys on the data. For example, if you want % of total revenue which is not in database, you will apply % formula in transformation and load the data. Similarly, if you have the first name and the last name of users in different columns, then you can apply a concatenate operation before loading the data. Some data do esn’t require any transformation; such data is known as direct move or pass through data. Data transformation also involves data correction and cleansing of data, removing incorrect data, incomplete data formation, and fixing data errors. It also includes data integrity and formatting incompatible data before loading it into a DW system. Loading the Data into a DW SystemIt involves loading the data into a DW system for analytical reporting and information. The target system can be a simple delimited flat file or a data warehouse.2ETL T ool FunctionA typical ETL tool-based data warehouse uses staging area, data integration, and access layers to perform its functions. It’s normally a 3-layer architecture.∙Staging Layer– The staging layer or staging database is used to store the data extracted from different source data systems.∙Data Integration Layer–The integration layer transforms the data from the staging layer and moves the data to a database, where the data is arranged into hierarchical groups, often called dimensions, and into facts and aggregate facts. The combination of facts and dimensions tables in a DW system is called a schema.∙Access Layer–The access layer is used by end-users to retrieve the data for analytical reporting and information.The following illustration shows how the three layers interact with each other.3ETL Testing4ETL testing is done before data is moved into a production data warehouse system. It is sometimes also called as table balancing or production reconciliation . It is different from database testing in terms of its scope and the steps to be taken to complete this. The main objective of ETL testing is to identify and mitigate data defects and general errors that occur prior to processing of data for analytical reporting. ETL Testing – Tasks to be PerformedHere is a list of the common tasks involved in ETL Testing –1. Understand the data to be used for reporting2. Review the Data Model3. Source to target mapping4. Data checks on source data5. Packages and schema validation6. Data verification in the target system7. Verification of data transformation calculations and aggregation rules8. Sample data comparison between the source and the target system9. Data integrity and quality checks in the target system10. Performance testing on data2. ETL Testing – TasksETL Testing 5Both ETL testing and database testing involve data validation, but they are not the same. ETL testing is normally performed on data in a data warehouse system, whereas database testing is commonly performed on transactional systems where the data comes from different applications into the transactional database.Here, we have highlighted the major differences between ETL testing and Database testing.ETL TestingETL testing involves the following operations:1. Validation of data movement from the source to the target system.2. Verification of data count in the source and the target system.3. Verifying data extraction, transformation as per requirement and expectation.4. Verifying if table relations – joins and keys – are preserved during the transformation.Common ETL testing tools include QuerySurge , Informatica , etc. Database TestingDatabase testing stresses more on data accuracy, correctness of data and valid values. It involves the following operations:1. Verifying if primary and foreign keys are maintained.2. Verifying if the columns in a table have valid data values.3. Verifying data accuracy in columns. Example : Number of months column shouldn’t have a value greater than 12.4. Verifying missing data in columns. Check if there are null columns which actually should have a valid value.Common database testing tools include Selenium , QTP , etc.3. ETL vs Database TestingETL TestingEnd of ebook previewIf you liked what you saw…Buy it from our store @ https://6。
etl开发流程

etl开发流程ETL开发流程。
ETL(Extract, Transform, Load)是指从数据源中抽取数据,然后对数据进行转换,最终加载到目标数据库中的一种数据处理过程。
在现代数据分析和商业智能领域,ETL流程扮演着至关重要的角色。
本文将介绍ETL开发的流程,帮助读者更好地理解和应用ETL技术。
1. 需求分析。
ETL开发的第一步是需求分析。
在这个阶段,我们需要与业务部门和数据分析师沟通,了解他们的需求和期望。
通过与业务人员深入交流,我们可以明确数据的来源、格式、质量要求,以及最终数据处理后的展现形式。
需求分析阶段的重要性不言而喻,它直接影响后续的数据抽取、转换和加载工作。
2. 数据抽取。
一旦需求分析完成,接下来就是数据抽取阶段。
在这个阶段,我们需要从各种数据源中抽取数据,这可能涉及到关系型数据库、非关系型数据库、日志文件、API接口等。
数据抽取的方式多种多样,可以通过SQL查询、调用API接口、文件传输等方式来实现。
在数据抽取过程中,我们需要考虑数据的完整性、一致性和性能等方面的问题。
3. 数据转换。
数据抽取后,接下来是数据转换阶段。
在这个阶段,我们需要对抽取的数据进行清洗、处理、合并等操作,以满足最终的数据分析和报表展现需求。
数据转换可能涉及到数据清洗、数据格式转换、数据合并、计算衍生指标等工作。
数据转换的质量直接影响到最终数据的可用性和准确性。
4. 数据加载。
最后一个阶段是数据加载。
在这个阶段,我们需要将经过抽取和转换的数据加载到目标数据库中,以供后续的数据分析和报表展现。
数据加载可能涉及到全量加载、增量加载、定时加载等不同方式。
在数据加载过程中,我们需要注意数据的完整性、一致性和性能等方面的问题。
5. 测试和维护。
除了上述的ETL开发流程,测试和维护也是非常重要的环节。
在ETL开发完成后,我们需要进行各种测试,包括单元测试、集成测试、性能测试等,以确保ETL流程的稳定性和可靠性。
同时,我们还需要建立监控和报警机制,及时发现和解决ETL流程中的问题,保证数据的及时性和准确性。
数据仓库设计与ETL流程实操教程

数据仓库设计与ETL流程实操教程数据仓库(Data Warehouse)是一个专门用来存储和管理数据的系统,主要用于支持决策分析和业务报告。
在企业中,数据仓库的设计和ETL(抽取、转换、加载)流程是非常重要的环节。
本文将详细介绍数据仓库的设计步骤和ETL流程的实操教程。
一、数据仓库设计步骤1.确定业务需求:在进行数据仓库设计之前,首先需要明确业务需求。
与业务相关的问题是什么?需要哪些数据来解决这些问题?这些问题对应的维度和指标是什么?明确业务需求是数据仓库设计的基础。
2.数据源分析:分析企业的各个数据源,确定需要从哪些数据源进行数据抽取。
了解数据源的结构、规模和质量,为后续的ETL流程做好准备。
3.数据建模:在数据仓库设计中,数据建模是一个关键的环节。
可以采用维度建模或者企业级建模的方法。
维度建模按照事实和维度进行建模,可以支持灵活的查询和分析;而企业级建模更加注重数据的整合和一致性。
根据具体的业务需求,确定合适的数据建模方法。
4.抽取规则定义:在设计ETL流程之前,需要定义数据抽取的规则。
数据抽取规则包括数据抽取的频率、抽取的条件和抽取的方式等。
根据业务需求和数据源的特点,制定合理的抽取规则。
5.数据清洗和转换:在ETL流程中,数据清洗和转换是非常重要的环节。
在数据抽取后,对数据进行清洗和转换,包括去除重复数据、处理缺失值、处理异常值以及数据格式转换等。
通过数据清洗和转换,可以保证数据的质量和一致性。
6.数据加载:数据加载是将经过处理的数据加载到数据仓库中的过程。
在数据加载时,可以根据需要选择全量加载或者增量加载的方式。
全量加载会将整个数据源的数据加载到数据仓库中;而增量加载只会加载新增或者变更的数据。
7.数据质量检查:在完成数据加载之后,需要对数据进行质量检查。
通过数据质量检查,可以发现数据仓库中可能存在的问题,如数据不一致、数据丢失等。
根据数据质量检查的结果,及时进行修复和调整。
二、ETL流程实操教程1.数据抽取:根据已定义的抽取规则,从数据源中抽取数据。
etl开发流程和规范 (3)

etl开发流程和规范ETL(Extract, Transform, Load)是一种常见的数据处理方式,用于将数据从原始数据源提取、转换和加载到目标数据仓库或目标系统中。
下面是一般的ETL开发流程和规范:1. 需求分析阶段:- 确定数据源:确定原始数据的来源和格式,包括数据库、文件、API等。
- 确定需求:明确提取、转换和加载的具体需求,包括数据清洗、数据转换和数据加载的步骤。
2. 数据提取阶段:- 选择合适的提取工具:例如使用SQL语句、使用ETL工具(如Informatica、SSIS等)或使用编程语言(如Python、Java等)来提取数据。
- 提取数据:根据需求从数据源中提取数据,并进行必要的数据过滤和排序。
3. 数据转换阶段:- 数据清洗和预处理:清洗和处理数据中的异常值、缺失值、重复值等。
- 数据转换:将数据进行必要的转换和映射,包括数据类型转换、数据格式转换和数据字段补充等。
- 属性计算和聚合:根据需求进行属性计算和数据聚合,生成目标数据。
4. 数据加载阶段:- 目标表设计和创建:根据需求设计目标表结构,并在数据库中创建目标表。
- 数据加载:将转换后的数据加载到目标表中,可以使用插入语句、更新语句或者使用ETL工具来加载数据。
5. 数据验证和测试阶段:- 运行数据验证脚本:编写数据验证脚本,检查目标表中的数据是否符合预期。
- 进行测试:对ETL流程进行测试,包括单元测试、集成测试和性能测试等。
6. 调度和监控阶段:- 调度ETL作业:使用调度工具(如Control-M、rflow 等)配置ETL作业的调度时间和频率。
- 监控ETL作业:监控ETL作业的运行情况,包括运行状态、运行时间和错误日志等。
7. 文档和维护阶段:- 编写文档:记录ETL开发的流程、规范和配置信息,并编写相关的用户手册。
- 维护ETL作业:定期检查和维护ETL作业,包括数据字典的更新、作业调度的调整和性能的优化等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ETL本质做数据仓库系统,ETL是关键的一环。
说大了,ETL是数据整合解决方案,说小了,就是倒数据的工具。
回忆一下工作这么些年来,处理数据迁移、转换的工作倒还真的不少。
但是那些工作基本上是一次性工作或者很小数据量,使用access、DTS或是自己编个小程序搞定。
可是在数据仓库系统中,ETL上升到了一定的理论高度,和原来小打小闹的工具使用不同了。
究竟什么不同,从名字上就可以看到,人家已经将倒数据的过程分成3个步骤,E、T、L分别代表抽取、转换和装载。
其实ETL过程就是数据流动的过程,从不同的数据源流向不同的目标数据。
但在数据仓库中,ETL 有几个特点,一是数据同步,它不是一次性倒完数据就拉到,它是经常性的活动,按照固定周期运行的,甚至现在还有人提出了实时ETL的概念。
二是数据量,一般都是巨大的,值得你将数据流动的过程拆分成E、T和L。
现在有很多成熟的工具提供ETL功能,例如datastage、powermart等,且不说他们的好坏。
从应用角度来说,ETL的过程其实不是非常复杂,这些工具给数据仓库工程带来和很大的便利性,特别是开发的便利和维护的便利。
但另一方面,开发人员容易迷失在这些工具中。
举个例子,VB是一种非常简单的语言并且也是非常易用的编程工具,上手特别快,但是真正VB的高手有多少?微软设计的产品通常有个原则是“将使用者当作傻瓜”,在这个原则下,微软的东西确实非常好用,但是对于开发者,如果你自己也将自己当作傻瓜,那就真的傻了。
ETL工具也是一样,这些工具为我们提供图形化界面,让我们将主要的精力放在规则上,以期提高开发效率。
从使用效果来说,确实使用这些工具能够非常快速地构建一个job来处理某个数据,不过从整体来看,并不见得他的整体效率会高多少。
问题主要不是出在工具上,而是在设计、开发人员上。
他们迷失在工具中,没有去探求ETL的本质。
可以说这些工具应用了这么长时间,在这么多项目、环境中应用,它必然有它成功之处,它必定体现了ETL的本质。
如果我们不透过表面这些工具的简单使用去看它背后蕴涵的思想,最终我们作出来的东西也就是一个个独立的job,将他们整合起来仍然有巨大的工作量。
大家都知道“理论与实践相结合”,如果在一个领域有所超越,必须要在理论水平上达到一定的高度探求ETL本质之一ETL的过程就是数据流动的过程,从不同异构数据源流向统一的目标数据。
其间,数据的抽取、清洗、转换和装载形成串行或并行的过程。
ETL的核心还是在于T这个过程,也就是转换,而抽取和装载一般可以作为转换的输入和输出,或者,它们作为一个单独的部件,其复杂度没有转换部件高。
和OLTP系统中不同,那里充满这单条记录的insert、update和select等操作,ETL过程一般都是批量操作,例如它的装载多采用批量装载工具,一般都是DBMS系统自身附带的工具,例如Oracle SQLLoader和DB2的autoloader 等。
ETL本身有一些特点,在一些工具中都有体现,下面以datastage和powermart举例来说。
1、静态的ETL单元和动态的ETL单元实例;一次转换指明了某种格式的数据如何格式化成另一种格式的数据,对于数据源的物理形式在设计时可以不用指定,它可以在运行时,当这个ETL单元创建一个实例时才指定。
对于静态和动态的ETL单元,Datastage没有严格区分,它的一个Job就是实现这个功能,在早期版本,一个Job同时不能运行两次,所以一个Job相当于一个实例,在后期版本,它支持multiple instances,而且还不是默认选项。
Powermart中将这两个概念加以区分,静态的叫做Mapping,动态运行时叫做Session。
2、ETL元数据;元数据是描述数据的数据,他的含义非常广泛,这里仅指ETL的元数据。
主要包括每次转换前后的数据结构和转换的规则。
ETL元数据还包括形式参数的管理,形式参数的ETL单元定义的参数,相对还有实参,它是运行时指定的参数,实参不在元数据管理范围之内。
3、数据流程的控制;要有可视化的流程编辑工具,提供流程定义和流程监控功能。
流程调度的最小单位是ETL 单元实例,ETL单元是不能在细分的ETL过程,当然这由开发者来控制,例如可以将抽取、转换放在一个ETL单元中,那样这个抽取和转换只能同时运行,而如果将他们分作两个单元,可以分别运行,这有利于错误恢复操作。
当然,ETL单元究竟应该细分到什么程度应该依据具体应用来看,目前还没有找到很好的细分策略。
比如,我们可以规定将装载一个表的功能作为一个ETL单元,但是不可否认,这样的ETL单元之间会有很多共同的操作,例如两个单元共用一个Hash 表,要将这个Hash表装入内存两次。
4、转换规则的定义方法;提供函数集提供常用规则方法,提供规则定义语言描述规则。
5、对数据的快速索引;一般都是利用Hash技术,将参照关系表提前装入内存,在转换时查找这个hash 表。
Datastage中有Hash文件技术,Powermart也有类似的Lookup功能。
探求ETL本质之二(分类)昨在IT-Director上阅读一篇报告,关于ETL产品分类的。
一般来说,我们眼中的ETL工具都是价格昂贵,能够处理海量数据的家伙,但是这是其中的一种。
它可以分成4种,针对不同的需求,主要是从转换规则的复杂度和数据量大小来看。
它们包括1、交互式运行环境,你可以指定数据源、目标数据,指定规则,立马ETL。
这种交互式的操作无疑非常方便,但是只能适合小数据量和复杂度不高的ETL过程,因为一旦规则复杂了,可能需要语言级的描述,不能简简单单拖拖拽拽就可以的。
还有数据量的问题,这种交互式必然建立在解释型语言基础上,另外他的灵活性必然要牺牲一定的性能为代价。
所以如果要处理海量数据的话,每次读取一条记录,每次对规则进行解释执行,每次在写入一条记录,这对性能影响是非常大的。
2、专门编码型的,它提供了一个基于某种语言的程序框架,你可以不必将编程精力放在一些周边的功能上,例如读文件功能、写数据库的功能,而将精力主要放在规则的实现上面。
这种近似手工代码的性能肯定是没话说,除非你的编程技巧不过关(这也是不可忽视的因素之一)。
对于处理大数据量,处理复杂转换逻辑,这种方式的ETL实现是非常直观的。
3、代码生成器型的,它就像是一个ETL代码生成器,提供简单的图形化界面操作,让你拖拖拽拽将转换规则都设定好,其实他的后台都是生成基于某种语言的程序,要运行这个ETL过程,必须要编译才行。
Datastage就是类似这样的产品,设计好的job必须要编译,这避免了每次转换的解释执行,但是不知道它生成的中间语言是什么。
以前我设计的ETL工具大挪移其实也是归属于这一类,它提供了界面让用户编写规则,最后生成C++语言,编译后即可运行。
这类工具的特点就是要在界面上下狠功夫,必须让用户轻松定义一个ETL过程,提供丰富的插件来完成读、写和转换函数。
大挪移在这方面就太弱了,规则必须手写,而且要写成标准c++语法,这未免还是有点难为最终用户了,还不如做成一个专业编码型的产品呢。
另外一点,这类工具必须提供面向专家应用的功能,因为它不可能考虑到所有的转换规则和所有的读写,一方面提供插件接口来让第三方编写特定的插件,另一方面还有提供特定语言来实现高级功能。
例如Datastage 提供一种类Basic的语言,不过他的Job的脚本化实现好像就做的不太好,只能手工绘制job,而不能编程实现Job。
4、最后还有一种类型叫做数据集线器,顾名思义,他就是像Hub一样地工作。
将这种类型分出来和上面几种分类在标准上有所差异,上面三种更多指ETL实现的方法,此类主要从数据处理角度。
目前有一些产品属于EAI(Enterprise Application Integration),它的数据集成主要是一种准实时性。
所以这类产品就像Hub一样,不断接收各种异构数据源来的数据,经过处理,在实施发送到不同的目标数据中去。
虽然,这些类看似各又千秋,特别在BI项目中,面对海量数据的ETL时,中间两种的选择就开始了,在选择过程中,必须要考虑到开发效率、维护方面、性能、学习曲线、人员技能等各方面因素,当然还有最重要也是最现实的因素就是客户的意象。
探求ETL本质之三(转换)ETL探求之一中提到,ETL过程最复杂的部分就是T,这个转换过程,T过程究竟有哪些类型呢?一、宏观输入输出从对数据源的整个宏观处理分,看看一个ETL过程的输入输出,可以分成下面几类:1、大小交,这种处理在数据清洗过程是常见了,例如从数据源到ODS阶段,如果数据仓库采用维度建模,而且维度基本采用代理键的话,必然存在代码到此键值的转换。
如果用SQL实现,必然需要将一个大表和一堆小表都Join起来,当然如果使用ETL工具的话,一般都是先将小表读入内存中再处理。
这种情况,输出数据的粒度和大表一样。
2、大大交,大表和大表之间关联也是一个重要的课题,当然其中要有一个主表,在逻辑上,应当是主表Left Join辅表。
大表之间的关联存在最大的问题就是性能和稳定性,对于海量数据来说,必须有优化的方法来处理他们的关联,另外,对于大数据的处理无疑会占用太多的系统资源,出错的几率非常大,如何做到有效错误恢复也是个问题。
对于这种情况,我们建议还是尽量将大表拆分成适度的稍小一点的表,形成大小交的类型。
这类情况的输出数据粒度和主表一样。
3、站着进来,躺着出去。
事务系统中为了提高系统灵活性和扩展性,很多信息放在代码表中维护,所以它的“事实表”就是一种窄表,而在数据仓库中,通常要进行宽化,从行变成列,所以称这种处理情况叫做“站着进来,躺着出去”。
大家对Decode肯定不陌生,这是进行宽表化常见的手段之一。
窄表变宽表的过程主要体现在对窄表中那个代码字段的操作。
这种情况,窄表是输入,宽表是输出,宽表的粒度必定要比窄表粗一些,就粗在那个代码字段上。
4、聚集。
数据仓库中重要的任务就是沉淀数据,聚集是必不可少的操作,它是粗化数据粒度的过程。
聚集本身其实很简单,就是类似SQL中Group by的操作,选取特定字段(维度),对度量字段再使用某种聚集函数。
但是对于大数据量情况下,聚集算法的优化仍是探究的一个课题。
例如是直接使用SQL的Group by,还是先排序,在处理。
二、微观规则从数据的转换的微观细节分,可以分成下面的几个基本类型,当然还有一些复杂的组合情况,例如先运算,在参照转换的规则,这种基于基本类型组合的情况就不在此列了。
ETL的规则是依赖目标数据的,目标数据有多少字段,就有多少条规则。
1、直接映射,原来是什么就是什么,原封不动照搬过来,对这样的规则,如果数据源字段和目标字段长度或精度不符,需要特别注意看是否真的可以直接映射还是需要做一些简单运算。