精华内容
下载资源
问答
  • ETL过程

    2020-11-02 20:50:28
  • 测试环境:SQL SERVER 2012 ...1.全量ETL过程 示例: (1)项目创建完成后,创建一个新的SSIS包 我这里就叫ODSCustomer2.dtsx好了 (2)创建数据连接 ①在下方的连接管理器里面点击右键,新建O...

    测试环境:SQL SERVER 2012

    Microsoft Visual Studio 2012版本

    本教程为记录本人的学习关键部分,故如果看不懂可以联系博主,只讲关键ETL操作部分

     

    1.全量ETL过程

    示例:

    (1)项目创建完成后,创建一个新的SSIS包

    我这里就叫ODSCustomer2.dtsx好了

    (2)创建数据连接

    ①在下方的连接管理器里面点击右键,新建OLE DB连接

    ②我这里是已经建好了,如果没有的话就点击新建,如果有的话直接点选-->确定

    ③连接管理器里面确保是连接的SQL Server Native Client 11.0,服务器名设置“.”,选择数据库,我这里是ADM_BF,选了之后下一步确定

    ④同样的方法创建目标ADM_ODS_BF

    (3)使用到的控件有执行SQL任务,数据流任务

    (4)整个过程分为3个步骤

    ①初始化数据表  Truncate table ODSCustomer

    ②创建数据流任务  Sourcedata to DW

    ③写入/更新操作时间日志 INSERT INTO ETLRunLog

    第一个和第三个为   执行SQL任务 控件,第二个为数据流任务控件,下图是我对控件更名了的

    tips:ETLRunLog是记录每次操作时的时间以及上一次操作的时间,方便做增量数据,表结构如下图

    接下来是上面三步骤的详细描述:

    ①初始化数据表:

    双击第一个控件(执行SQL任务)

    在图中,1的地方选择OLE DB ,2的地方选择目标数据库,3的地方填写SQL   TRUNCATE TABLE ODSCustomer

    ②双击第二个控件数据流任务

    1)此处进入第二个界面,该界面的控件与控制流里面的控件不一样,本次将会使用的控件有2个,一个是OLEDB源,一个是OLEDB目标

    2)将两个控件拖动到数据流里面去,然后连接起来

    3)双击OLE DB 源,连接管理器选择LocalHost.ADM_BF,表或视图的名称选择 [dbo].[Customer] ,点击确定

    4)双击目标,连接管理器选择LocalHost.ADM_ODS_BF,表或视图的名称选择 [dbo].[ODSCustomer] ,然后将下面的勾上的表锁和检查约束去掉,然后点击映射

    映射界面观察字段是否全部映射正确

    点击确定,数据流任务配置完成

    (5)返回到控制流,双击第三个控件  执行SQL任务,我这里改名叫 INSERT INTO ETLRunLog

    前面两个的选择如上一个,sql参照下面

    if exists(select * from ETLRunLog where packageName='ODSCustomer') 
      update ETLRunLog set PreSuccessTime = LastSuccessTime,LastSuccessTime = getdate() 
      where packageName = 'ODSCustomer'
    else 
    insert into ETLRunLog select 'ODSCustomer',null,getdate()

    然后点击确定即可

    大功告成!

     

     

     

    2.增量ETL过程

    先看个流程图

    增量ETL过程分为2种情况,其一是直接全量导入,其二是增量导入,描述下上面的流程图;

    第一种情况是全量导入,第一步获得当前的时间,第二步Truncate Table ODSADLog,第三步将所有数据导过去(参考全量导入的数据流任务)第四步记入日志

    第二种情况是增量导入,第一步是获得当前时间,第二步是获得上次执行时间(从ETLRunLog)里面获取,第三步增量加载到临时表,第四步Merge到ODSADLog表里面去,最后记入日志,第一种和第二种的分叉使用流程线的条件,看我的图里面有个函数,具体配置可以双击绿色的线条,如下图,求值运算选项选择    表达式和约束,表达式这里调用了变量,如果不懂变量去百度一下吧,或者加我QQ(在我的个人资料里面),我这里走哪个分支采用的变量取值,变量为1则全量导入,变量为0则增量导入

    (1)我们只讲第二种情况(第一种就是全量导入),拖5个控件进去,其中第三个为数据流任务,其他的为 执行SQL任务控件,我这里给他们都命名了,添加数据源同全量导入的添加方式

    接下来分别取编码操作

    (2)

    ①创建变量,点击图中所示位置,选择变量

    ②点击左上角的新建按钮创建如下图所示的几个变量,数据类型已经列出来

    (3)获取当前时间

    双击第一个控件,里面的参数分别是 OLE DB,LocalHost.ADM_ODS_BF,直接输入,select getdate()(这个就是查询数据库的当前时间),下面的结果集的ResultSet字段选择单行,然后点击左侧菜单的结果集

    然后在结果集里面,添加一个结果集接收,结果名称填0,变量名选择CurrentTime

    (4)获取上一次操作的时间

    ①双击第二个控件,在画框的地方,第一个选择OLE DB,第二个选择LocalHost.ADM_ODS_BF,第三个的SQL填写查询ETLRunLog表中的对应ODSADLog数据的LastCurrentTime的值,sql如下,第四个结果集同上面一步,选择单行,然后切换到左侧的菜单里面的结果集页面

    select LastCurrentTime from ETLRunLog where packageName='ODSADLog'

     

     

    ②按照如下图的数据进行操作,点击确定完成

    (5)双击第三个控件(数据流任务)

    ①进入数据流页面,控件选择OLE DB源和OLE DB目标,然后将他们连接起来

    ②双击OLE DB源

    此处不同于全量操作,这里是采用SQL命令来获取数据

    sql如下,此处使用了2个问号,在右边的参数,可以点击进去对参数进行赋值

    select * from ADLog where createtime >= ? and createtime < ?

    点击参数按钮,进入对参数赋值的页面,在变量的地方选择参数0为LastSuccessTime,参数1为CurrentTime,点击确定,对数据源完成处理

    ③对OLE DB目标处理,双击OLE DB目标,然后按照如下图的进行选择,然后点击映射进入映射页面观察字段是否映射正确,注意表锁和表结构的复选去掉

    点击确定即可

    (6)返回控制流页面,双击第四个控件

    进入之后,按照如图所示的进行填写,sql的地方填写如下的sql

    merge into ODSADLog a
    using TempODSADLog t on a.SourceAdLogID = t.SourceAdLogID 
    and a.SourceADMLOGIP = t.SourceADMLOGIP 
    when matched then
    update set
         a.[UID] = t.[UID]
          ,a.[SourceADTagID] = t.[SourceADTagID]
          ,a.[SourceADID] = t.[SourceADID]
          ,a.[Referer] = t.[Referer]
          ,a.[Type] = t.[Type]
          ,a.[IP] = t.[IP]
    when not matched then
    insert (
    	[SourceAdLogID]
          ,[SourceADMLOGIP]
          ,[UID]
          ,[SourceADTagID]
          ,[SourceADID]
          ,[Referer]
          ,[Type]
          ,[IP]
          ,[CreationTime]
    ) values(
    	t.[SourceAdLogID]
          ,t.[SourceADMLOGIP]
          ,t.[UID]
          ,t.[SourceADTagID]
          ,t.[SourceADID]
          ,t.[Referer]
          ,t.[Type]
          ,t.[IP]
          ,t.[CreationTime]
    );

    (7)最后双击最后一个控件,对操作进行日志写入

    按照如下图进行操作,sql如下

    if exists(select * from ETLRunLog where packageName='ODSADLog') 
      update ETLRunLog set PreSuccessTime = LastSuccessTime,LastSuccessTime = @curr
      where packageName = 'ODSADLog'
    else 
    insert into ETLRunLog select 'ODSADLog',null,getdate()

    展开全文
  • ETL流程、数据流图及ETL过程解决方案 ETL实施解决方案 ETL流程设计
  • 基于结构图的ETL过程建模方法基于结构图的ETL过程建模方法基于结构图的ETL过程建模方法基于结构图的ETL过程建模方法基于结构图的ETL过程建模方法
  • 针对建立数据仓库时数据源存在结构多样性和语义异质性的问题,提出了本体驱动ETL过程的设计方法。通过元数据抽象以及语义建立本体,并运用OWL实现本体;再根据局部本体与全局本体之间的关系建立本体映射;最后运用...
  • 目录ETL定义模式及比较ETL过程问题分析 现状分析ETL定义ETL定义涉及以下内容ETL定义ETL前提ETL原则ETL定义定义数据的抽取(Extract)转换(Transform)装载(Load)的过程目标数据优化以最小代价(包括对日常操作的影响和对...
  • ETL流程、数据流图及ETL过程解决方案 ETL流程、数据流图及ETL过程解决方案
  • 在维度建模中我们已经了解数据仓库中的维度建模方法以及基本要素,在这篇文章中我们将学习了解数据仓库的ETL过程以及实用的ETL工具。 一、什么是ETL? 构建数据仓库的核心是建模,在数据仓库的构建中,ETL贯穿于...

    上周因为在处理很多数据源集成的事情一直没有更新系列文章,在这周后开始规律更新。在维度建模中我们已经了解数据仓库中的维度建模方法以及基本要素,在这篇文章中我们将学习了解数据仓库的ETL过程以及实用的ETL工具。

    一、什么是ETL?

         构建数据仓库的核心是建模,在数据仓库的构建中,ETL贯穿于项目始终,它是整个数据仓库的生命线。从数据源中抽取数据,然后对这些数据进行转化,最终加载到目标数据库或者数据仓库中去,这也就是我们通常所说的 ETL 过程(Extract,Transform,Load)。

           通常数据抽取工作分抽取、清洗、转换、装载几个步骤:

     

           抽取主要是针对各个业务系统及不同服务器的分散数据,充分理解数据定义后,规划需要的数据源及数据定义,制定可操作的数据源,制定增量抽取和缓慢渐变的规则。

        清洗主要是针对系统的各个环节可能出现的数据二义性、重复、不完整、违反业务规则等数据质量问题,允许通过数据抽取设定的数据质量规则,将有问题的记录先剔除出来,根据实际情况调整相应的清洗操作。

        转换主要是针对数据仓库建立的模型,通过一系列的转换来实现将数据从业务模型到分析模型,通过ETL工具可视化拖拽操作可以直接使用标准的内置代码片段功能、自定义脚本、函数、存储过程以及其他的扩展方式,实现了各种复杂的转换,并且支持自动分析日志,清楚的监控数据转换的状态并优化分析模型。

    装载主要是将经过转换的数据装载到数据仓库里面,可以通过直连数据库的方式来进行数据装载,可以充分体现高效性。在应用的时候可以随时调整数据抽取工作的运行方式,可以灵活的集成到其他管理系统中。

    • 主流的数据仓库有哪些?

    ETL过程我们简单介绍了一下,接下来我们来了解市面上常用的数据仓库解决方案。以下是个人根据产品对应官网以及提供的资料总结,对比的五种ETL工具的比较,排名不分先后。技术没有绝对的好坏,关键是看大家使用的场景。

     

         好了,有关于ETL过程和ETL工具就介绍到这里。下一篇我们开始来了解数据仓库的架构(数据仓库建设的总体规划)。本文中如有错误或误导的地方欢迎大家指出纠正。 希望这篇文章能够给大家带来帮助,最后感谢大家的阅读。欢迎大家一起加入高效数据处理ETL交流群,一起讨论数据分析ETL过程的问题,一起学习一起成长。

     扫码加群:

     

    展开全文
  • 结合通信顺序进程理论研究了增量ETL过程模型, 形式化分析了增量ETL过程事件在并行环境下执行状态的变换过程, 提出了增量ETL过程并行调度算法, 解决了增量ETL过程在并行环境下调度策略的问题。应用及实践表明, 模型及...
  • 火花ETL过程中的动态模式创建
  • 基于web页面数据源的ETL过程研究,孙秀宝,,数据仓库系统的价值在它能为用户及时地提供所需关键数据信息,所以数据仓库系统源数据的ETL过程也就显得极其重要。基于web页面数据
  • 通过图形化ETL过程中的元素和关联,该模型清晰直观地反映了数据的来源和流向、源数据与目标数据之间的映射和转换关系,辅助设计人员更好地进行ETL过程的设计和ETL过程的编码实现,使整个ETL设计过程更加方便、灵活。
  • ETL过程中转换功能的设计与实现,车燕京,,通过对现有ETL(Extract、Transformation、Loading)工具的分析与研究,本文提出了一种实现ETL过程中转换功能的解决方案,并对该解决方案进行测
  • (1)一种ETL过程概念建模方法 A Methodology for the Conceptual Modeling of ETL Processes.pdf (2)基于UML的ETL过程概念建模 A UML Based Approach for Modeling ETL Processes in Data Warehouses.pdf (3)中文文章...
  • A UML Based Approach for Modeling ETL Processes in Data Warehouses 基于UML的ETL过程建模方法 是一篇关于ETL过程建模的好文章, 这篇文章网上需要付费,我翻译了一遍。
  • ETL过程详解

    2019-04-12 11:01:32
    ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。 ETL是BI项目重要的一个环节。 通常情况下,在BI项目中...

    ETL讲解(很详细!!!)

    ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。 ETL是BI项目重要的一个环节。 通常情况下,在BI项目中ETL会花掉整个项目至少1/3的时间,ETL设计的好坏直接关接到BI项目的成败。

    ETL的设计分三部分:数据抽取、数据的清洗转换、数据的加载。在设计ETL的时候我们也是从这三部分出发。数据的抽取是从各个不同的数据源抽取到ODS(Operational Data Store,操作型数据存储)中——这个过程也可以做一些数据的清洗和转换),在抽取的过程中需要挑选不同的抽取方法,尽可能的提高ETL的运行效率。ETL三个部分中,花费时间最长的是“T”(Transform,清洗、转换)的部分,一般情况下这部分工作量是整个ETL的2/3。数据的加载一般在数据清洗完了之后直接写入DW(Data Warehousing,数据仓库)中去。

    ETL的实现有多种方法,常用的有三种。一种是借助ETL工具(如Oracle的OWB、SQL Server 2000的DTS、SQL Server2005的SSIS服务、Informatic等)实现,一种是SQL方式实现,另外一种是ETL工具和SQL相结合。前两种方法各有各的优缺点,借助工具可以快速的建立起ETL工程,屏蔽了复杂的编码任务,提高了速度,降低了难度,但是缺少灵活性。SQL的方法优点是灵活,提高ETL运行效率,但是编码复杂,对技术要求比较高。第三种是综合了前面二种的优点,会极大地提高ETL的开发速度和效率。

    一、 数据的抽取(Extract)

    这一部分需要在调研阶段做大量的工作,首先要搞清楚数据是从几个业务系统中来,各个业务系统的数据库服务器运行什么DBMS,是否存在手工数据,手工数据量有多大,是否存在非结构化的数据等等,当收集完这些信息之后才可以进行数据抽取的设计。

    1、对于与存放DW的数据库系统相同的数据源处理方法

    这一类数据源在设计上比较容易。一般情况下,DBMS(SQLServer、Oracle)都会提供数据库链接功能,在DW数据库服务器和原业务系统之间建立直接的链接关系就可以写Select 语句直接访问。

    2、对于与DW数据库系统不同的数据源的处理方法

    对于这一类数据源,一般情况下也可以通过ODBC的方式建立数据库链接——如SQL Server和Oracle之间。如果不能建立数据库链接,可以有两种方式完成,一种是通过工具将源数据导出成.txt或者是.xls文件,然后再将这些源系统文件导入到ODS中。另外一种方法是通过程序接口来完成。

    3、对于文件类型数据源(.txt,.xls),可以培训业务人员利用数据库工具将这些数据导入到指定的数据库,然后从指定的数据库中抽取。或者还可以借助工具实现。

    4、增量更新的问题

    对于数据量大的系统,必须考虑增量抽取。一般情况下,业务系统会记录业务发生的时间,我们可以用来做增量的标志,每次抽取之前首先判断ODS中记录最大的时间,然后根据这个时间去业务系统取大于这个时间所有的记录。利用业务系统的时间戳,一般情况下,业务系统没有或者部分有时间戳。

    二、数据的清洗转换(Cleaning、Transform)

    一般情况下,数据仓库分为ODS、DW两部分。通常的做法是从业务系统到ODS做清洗,将脏数据和不完整数据过滤掉,在从ODS到DW的过程中转换,进行一些业务规则的计算和聚合。

    1、 数据清洗

    数据清洗的任务是过滤那些不符合要求的数据,将过滤的结果交给业务主管部门,确认是否过滤掉还是由业务单位修正之后再进行抽取。

    不符合要求的数据主要是有不完整的数据、错误的数据、重复的数据三大类。

    (1)不完整的数据:这一类数据主要是一些应该有的信息缺失,如供应商的名称、分公司的名称、客户的区域信息缺失、业务系统中主表与明细表不能匹配等。对于这一类数据过滤出来,按缺失的内容分别写入不同Excel文件向客户提交,要求在规定的时间内补全。补全后才写入数据仓库。

    (2)错误的数据:这一类错误产生的原因是业务系统不够健全,在接收输入后没有进行判断直接写入后台数据库造成的,比如数值数据输成全角数字字符、字符串数据后面有一个回车操作、日期格式不正确、日期越界等。这一类数据也要分类,对于类似于全角字符、数据前后有不可见字符的问题,只能通过写SQL语句的方式找出来,然后要求客户在业务系统修正之后抽取。日期格式不正确的或者是日期越界的这一类错误会导致ETL运行失败,这一类错误需要去业务系统数据库用SQL的方式挑出来,交给业务主管部门要求限期修正,修正之后再抽取。

    (3)重复的数据:对于这一类数据——特别是维表中会出现这种情况——将重复数据记录的所有字段导出来,让客户确认并整理。

    数据清洗是一个反复的过程,不可能在几天内完成,只有不断的发现问题,解决问题。对于是否过滤,是否修正一般要求客户确认,对于过滤掉的数据,写入Excel文件或者将过滤数据写入数据表,在ETL开发的初期可以每天向业务单位发送过滤数据的邮件,促使他们尽快地修正错误,同时也可以做为将来验证数据的依据。数据清洗需要注意的是不要将有用的数据过滤掉,对于每个过滤规则认真进行验证,并要用户确认。

    2、 数据转换

    数据转换的任务主要进行不一致的数据转换、数据粒度的转换,以及一些商务规则的计算。

    (1)不一致数据转换:这个过程是一个整合的过程,将不同业务系统的相同类型的数据统一,比如同一个供应商在结算系统的编码是XX0001,而在CRM中编码是YY0001,这样在抽取过来之后统一转换成一个编码。

    (2)数据粒度的转换:业务系统一般存储非常明细的数据,而数据仓库中数据是用来分析的,不需要非常明细的数据。一般情况下,会将业务系统数据按照数据仓库粒度进行聚合。

    (3)商务规则的计算:不同的企业有不同的业务规则、不同的数据指标,这些指标有的时候不是简单的加加减减就能完成,这个时候需要在ETL中将这些数据指标计算好了之后存储在数据仓库中,以供分析使用。

    三、ETL日志、警告发送

    1、 ETL日志

    ETL日志分为三类。

    一类是执行过程日志,这一部分日志是在ETL执行过程中每执行一步的记录,记录每次运行每一步骤的起始时间,影响了多少行数据,流水账形式。

    一类是错误日志,当某个模块出错的时候写错误日志,记录每次出错的时间、出错的模块以及出错的信息等。

    第三类日志是总体日志,只记录ETL开始时间、结束时间是否成功信息。如果使用ETL工具,ETL工具会自动产生一些日志,这一类日志也可以作为ETL日志的一部分。

    记录日志的目的是随时可以知道ETL运行情况,如果出错了,可以知道哪里出错。

    2、 警告发送

    如果ETL出错了,不仅要形成ETL出错日志,而且要向系统管理员发送警告。发送警告的方式多种,一般常用的就是给系统管理员发送邮件,并附上出错的信息,方便管理员排查错误。

    ETL是BI项目的关键部分,也是一个长期的过程,只有不断的发现问题并解决问题,才能使ETL运行效率更高,为BI项目后期开发提供准确与高效的数据。

    后记

     做数据仓库系统,ETL是关键的一环。说大了,ETL是数据整合解决方案,说小了,就是倒数据的工具。回忆一下工作这么长时间以来,处理数据迁移、转换的工作倒还真的不少。但是那些工作基本上是一次性工作或者很小数据量。可是在数据仓库系统中,ETL上升到了一定的理论高度,和原来小打小闹的工具使用不同了。究竟什么不同,从名字上就可以看到,人家已经将倒数据的过程分成3个步骤,E、T、L分别代表抽取、转换和装载。
    

    其实ETL过程就是数据流动的过程,从不同的数据源流向不同的目标数据。但在数据仓库中,

    ETL有几个特点,

    一是数据同步,它不是一次性倒完数据就拉到,它是经常性的活动,按照固定周期运行的,甚至现在还有人提出了实时ETL的概念。

    二是数据量,一般都是巨大的,值得你将数据流动的过程拆分成E、T和L。

    现在有很多成熟的工具提供ETL功能,且不说他们的好坏。从应用角度来说,ETL的过程其实不是非常复杂,这些工具给数据仓库工程带来和很大的便利性,特别是开发的便利和维护的便利。但另一方面,开发人员容易迷失在这些工具中。举个例子,VB是一种非常简单的语言并且也是非常易用的编程工具,上手特别快,但是真正VB的高手有多少?微软设计的产品通常有个原则是“将使用者当作傻瓜”,在这个原则下,微软的东西确实非常好用,但是对于开发者,如果你自己也将自己当作傻瓜,那就真的傻了。ETL工具也是一样,这些工具为我们提供图形化界面,让我们将主要的精力放在规则上,以期提高开发效率。从使用效果来说,确实使用这些工具能够非常快速地构建一个job来处理某个数据,不过从整体来看,并不见得他的整体效率会高多少。问题主要不是出在工具上,而是在设计、开发人员上。他们迷失在工具中,没有去探求ETL的本质。可以说这些工具应用了这么长时间,在这么多项目、环境中应用,它必然有它成功之处,它必定体现了ETL的本质。如果我们不透过表面这些工具的简单使用去看它背后蕴涵的思想,最终我们作出来的东西也就是一个个独立的job,将他们整合起来仍然有巨大的工作量。大家都知道“理论与实践相结合”,如果在一个领域有所超越,必须要在理论水平上达到一定的高度.
    

    来源: https://www.cnblogs.com/yjd_hycf_space/p/7772722.html

    展开全文
  • ####从Parse到BaasBox的ETL过程的配置文件 请按照此 [链接] 获取安装和使用指南 目前,用户从 Parse 到 BaasBox 的 ETL 过程仅部分可用,请在此文件的末尾检查问题 首先,将 Parse 用户的备份保存在一个 JSON 中(即...
  • 由于业务逻辑的复杂性,在使用SSIS进行ETL过程时,SQL command允许的SQL语句行数在630行左右,远远小于业务逻辑的SQL,这时将业务逻辑的SQL转换为存储过程。 新建存储过程需要做的准备: 在对应的数据库下新建一张...
  • 利用kettle运行transformation,完成数据库表到数据库表的ETL过程.mp4ETL工具Kettle研究-1-ETL认识与Kettle研读 ETL工具Kettle研究-2-Kettle安装部署 ETL工具Kettle研究-3-MySQL数据导入HIVE ETL工具Kettle研究-4-...
  • etl过程介绍

    2020-01-17 11:34:43
    ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。 ETL是BI项目重要的一个环节。 通常情况下,在BI项目中...
  • 设计并实现数据仓库ETL过程(IBM讲座)
  • 利用kettle运行transformation,完成从Excel表到数据库表的ETL过程ETL工具Kettle研究-1-ETL认识与Kettle研读 ETL工具Kettle研究-2-Kettle安装部署 ETL工具Kettle研究-3-MySQL数据导入HIVE ETL工具Kettle研究-4-...
  • Features:该软件包具有完整的ETL过程- 使用元数据,转换和数据模型信息来设计ETL管道 建立目标转换SparkSQL和Spark Dataframes 构建源和目标Hive DDL 验证DataFrames,扩展核心类,定义DataFrame转换并提供UDF ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,896
精华内容 12,758
关键字:

etl的过程