ETL的主要步骤.docx
《ETL的主要步骤.docx》由会员分享,可在线阅读,更多相关《ETL的主要步骤.docx(9页珍藏版)》请在冰点文库上搜索。
ETL的主要步骤
ETL的主要步骤
Normal
07.8磅
0
2false
false
falseMicrosoftInternetExplorer4
--
/*FontDefinitions*/
@font-face
{font-family:
宋体;
panose-1:
2160311111;
mso-font-alt:
SimSun;
mso-font-charset:
134;
mso-generic-font-family:
auto;
mso-font-pitch:
variable;
mso-font-signature:
31351352321602621450;}
@font-face
{font-family:
"\@宋体";
panose-1:
2160311111;
mso-font-charset:
134;
mso-generic-font-family:
auto;
mso-font-pitch:
variable;
mso-font-signature:
31351352321602621450;}
/*StyleDefinitions*/
p.MsoNormal,li.MsoNormal,div.MsoNormal
{mso-style-parent:
"";
margin:
0cm;
margin-bottom:
.0001pt;
text-align:
justify;
text-justify:
inter-ideograph;
mso-pagination:
none;
font-size:
10.5pt;
mso-bidi-font-size:
12.0pt;
font-family:
"TimesNewRoman";
mso-fareast-font-family:
宋体;
mso-font-kerning:
1.0pt;}
/*PageDefinitions*/
@page
{mso-page-border-surround-header:
no;
mso-page-border-surround-footer:
no;}
@pageSection1
{size:
612.0pt792.0pt;
margin:
72.0pt90.0pt72.0pt90.0pt;
mso-header-margin:
36.0pt;
mso-footer-margin:
36.0pt;
mso-paper-source:
0;}
div.Section1
{page:
Section1;}
-->/*StyleDefinitions*/
table.MsoNormalTable
{mso-style-name:
普通表格;
mso-tstyle-rowband-size:
0;
mso-tstyle-colband-size:
0;
mso-style-noshow:
yes;
mso-style-parent:
"";
mso-padding-alt:
0cm5.4pt0cm5.4pt;
mso-para-margin:
0cm;
mso-para-margin-bottom:
.0001pt;
mso-pagination:
widow-orphan;
font-size:
10.0pt;
font-family:
"TimesNewRoman";
mso-fareast-font-family:
"TimesNewRoman";
mso-ansi-language:
#0400;
mso-fareast-language:
#0400;
mso-bidi-language:
#0400;}Normal
07.8磅
0
2false
false
falseMicrosoftInternetExplorer4
--
/*FontDefinitions*/
@font-face
{font-family:
宋体;
panose-1:
2160311111;
mso-font-alt:
SimSun;
mso-font-charset:
134;
mso-generic-font-family:
auto;
mso-font-pitch:
variable;
mso-font-signature:
31351352321602621450;}
@font-face
{font-family:
"\@宋体";
panose-1:
2160311111;
mso-font-charset:
134;
mso-generic-font-family:
auto;
mso-font-pitch:
variable;
mso-font-signature:
31351352321602621450;}
/*StyleDefinitions*/
p.MsoNormal,li.MsoNormal,div.MsoNormal
{mso-style-parent:
"";
margin:
0cm;
margin-bottom:
.0001pt;
text-align:
justify;
text-justify:
inter-ideograph;
mso-pagination:
none;
font-size:
10.5pt;
mso-bidi-font-size:
12.0pt;
font-family:
"TimesNewRoman";
mso-fareast-font-family:
宋体;
mso-font-kerning:
1.0pt;}
/*PageDefinitions*/
@page
{mso-page-border-surround-header:
no;
mso-page-border-surround-footer:
no;}
@pageSection1
{size:
595.3pt841.9pt;
margin:
72.0pt90.0pt72.0pt90.0pt;
mso-header-margin:
42.55pt;
mso-footer-margin:
49.6pt;
mso-paper-source:
0;
layout-grid:
15.6pt;}
div.Section1
{page:
Section1;}
-->/*StyleDefinitions*/
table.MsoNormalTable
{mso-style-name:
普通表格;
mso-tstyle-rowband-size:
0;
mso-tstyle-colband-size:
0;
mso-style-noshow:
yes;
mso-style-parent:
"";
mso-padding-alt:
0cm5.4pt0cm5.4pt;
mso-para-margin:
0cm;
mso-para-margin-bottom:
.0001pt;
mso-pagination:
widow-orphan;
font-size:
10.0pt;
font-family:
"TimesNewRoman";
mso-fareast-font-family:
"TimesNewRoman";
mso-ansi-language:
#0400;
mso-fareast-language:
#0400;
mso-bidi-language:
#0400;}ETL的主要步骤
ETL(ExtractTransformLoading,数据抽取转化装载规则)是负责完成是数据源数据向数据仓库数据的转化的过程。
是实施数据仓库中最重要的步骤。
可以形象的说,ETL的角色相当于砖石修葺成房子的过程。
在数据仓库系统设计中最难的部分是用户需求分析和模型设计,那么工作量最大的就是ETL规则的设计和实施了,它要占到整个数据仓库设计工作量的60%-70%,甚至更多。
下面是本人对ETL的几个重要步骤理解,和大家分享!
一、ODS区的数据采集:
最主要作用为了尽量减少对业务系统的影响。
表结构可以不必和DW一致。
根据具体业务需求和数据量情况,将数据源的数据放入ODS有各种不同的方法,比如Oracle的数据库链路,表复制,SQL*LOADER,Teradata的Fastload,Sysbase的BCP等等。
需要解决的问题包括:
a、数据的时间差异性问题
在抽取旧有数据时,要将不同时期的数据定义统一,较早的数据不够完整或不符合新系统的数据规范,一般可以根据规则,在存入中转区的过程中予以更新或补充。
b、数据的平台多样性问题
在抽取旧有数据时,大部分数据都可采用表复制方式直接导入数据中转区集中,再做处理,但有部分数据可能需要转换成文本文件或使用第三方工具如Informatica等装载入数据中转区。
这部分数据主要是与数据中转区数据库平台不一致的数据库数据,或非存储于数据库内的文本、excel等数据。
c、数据的不稳定性问题
对于重要信息的完整历史变更记录,在抽取时可以根据各时期的历史信息,在抽取需要信息等基本属性的旧有数据时,要与相应时段的信息关联得到真实的历史属性。
d、数据的依赖性问题
旧有业务系统的数据关联一般已有约束保证,代码表和参照表等数据也比较准确,但仍有少量数据不完整,对这部分数据,需根据地税的需求采取清洗策略,保证数据仓库各事实表和维表之间的关联完整有效。
数据仓库各事实表和维表的初始装载顺序有先后关系,要有一个集中的数据装载任务顺序方案,确保初始数据装载的准确。
这可以通过操作系统或第三方工具的任务调度机制来保证。
二、数据转换、清洗:
将ODS中的数据,按照数据仓库中数据存储结构进行合理的转换,转换步骤一般还要包含数据清洗的过程。
数据清洗主要是针对源数据库中出现二义性、重
复、不完整、违反业务或逻辑规则等问题的数据数据进行统一的处理,一般包括如:
NULL值处理,日期格式转换,数据类型转换等等。
在清洗之前需要进行数据
质量分析,以找出存在问题的数据,否则数据清洗将无从谈起。
数据装载是通过装载工具或自行编写的SQL程序将抽取、转换后的结果数据加载到目标数据库中。
数据质量问题具体表现在以下几个方面:
a、正确性(Accuracy):
数据是否正确的表示了现实或可证实的来源?
b、完整性(Integrity):
数据之间的参照完整性是否存在或一致?
c、一致性(Consistency):
数据是否被一致的定义或理解?
d、完备性(Completeness):
所有需要的数据都存在吗?
e、有效性(Validity):
数据是否在企业定义的可接受的范围之内?
f、时效性(Timeliness):
数据在需要的时侯是有效的吗?
g、可获取性(Accessibility):
数据是否易于获取、易于理解和易于使用?
以下综合说明数据仓库中数据质量要求,包括格式、完整性要求。
a、业务描述统一,对数据模型的不同版本融合、映射为唯一版本。
包括:
1、在业务逻辑没有变化的前提下,旧的业务数据映射在新模型上。
2、遗留系统的人事信息、考核相关信息与业务系统、行政其他模块要一致。
b、信息描述规范、完整。
1、不存在格式违规
数据类型不存在潜在错误。
2、参照完整性未被破坏
数据不会找不到参照。
3、不存在交叉系统匹配违规,数据被很好集成
相同的数据存在于多个系统中,数据之间要匹配。
4、数据在内部一致
同样的纪录字段在同一个表中重复出现,不能有差别。
以下是对主要数据质量问题的清洗策略:
主要问题
表现形式
产生原因
清洗策略数据完整性问题
大量的空值字段的出现
原OLTP系统中对很多字段没有做非空限制
1.
交由OLTP系统重新录入,补齐
2.
在数据仓库对应的维表中建立一个新的字段,将这些空值字段的值统一的赋值超出字典表范围
填写这些值的时候是直接让用户填写而非下拉框选择
1.交由OLTP系统重新录入,补齐
2.在数据仓库对应的维表中建立一个新的字段,将这些空值字段的值统一的赋值数据一致性问题
一个特定的字段在不同的表中内容不同
录入,同步的问题
1.选取最可靠的表中的字段为确定值应该成为主键的值不唯一
原OLTP系统中未建立有效的主键关系
1.消除错误,重复的主键