通常一个 ETL Package 是由多个控制流和数据流共同组成,有的时候 ETL 的步骤可能会比较多,整 个流程执行下来的时间可能比较长。假设在 ETL Package 中包含5个Task,前3个Task执行超过1个小时 ,到了第4个Task的时候发生失败。如果下次执行的时候重新从第1个任务开始执行,那么又要花费1个小 时等待 1-3 任务执行,无疑在效率上讲是非常低的。特别是在数据仓库的应用上,往往从数据源到 Staging的过程中有千万级甚至亿级的数据要加载,加载完毕之后再进入到维度和事实表。如果在进入维 度和事实表的过程中发生失败,就意味着下次需要重新加载数据到Staging表。而通过检查点CheckPoint 的设置可以解决这个问题,通过合理的设置可以跳过上一次已经成功执行过一些步骤而直接从失败的地 方重新开始执行,这样大大的提高了包的执行效率。
下面这个 ETL 示例简单的模拟了从一个数据源抽取数据然后输出到一个数据表和一个平面文件的过 程,之后再看 CheckPoint 的使用。
USE BIWORK_SSIS GO IF OBJECT_ID('CK_Address') IS NOT NULL DROP TABLE CK_Address GO IF OBJECT_ID('CK_AddressAudit') IS NOT NULL DROP TABLE CK_AddressAudit GO CREATE TABLE CK_Address ( AddressID INT, AddressLine1 NVARCHAR(60), AddressLine2 NVARCHAR(60), City NVARCHAR(30) ) CREATE TABLE CK_AddressAudit ( ID INT PRIMARY KEY IDENTITY(1,1), CityName NVARCHAR(60), Counts INT )
ETL 过程 -
EST_TruncateAddress - TRUNCATE TABLE dbo.CK_Address TRUNCATE TABLE dbo.CK_AddressAudit
DFT_LoadAddress - 从 AdventureWorks2012.People.Address 中抽取数据到 dbo.CK_Address 中
DFT_SaveAddressAudit - 对 CK_Address 表中的数据做出一些统计然后写入到 dbo.CK_AddressAudit 中
DFT_OutputAddressAudit - 将 dbo.CK_AddressAudit 中的数据输出到一个文本文件中
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据
, table
, ssis
, 数据源
, dft
, 一个
, nvarchar
检查点
ssis package、checkpoints、ssis 教程、ssis包、sql server ssis 教程,以便于您获取更多的相关知识。