SSIS体系结构

浏览: 2361

       打开SQL Server DataTools 2015它比2012版增加了不少大数据相关的数据处理组件,SSIS是微软BI的ETL(抽取、转换、加载)工具,SSIS 是 购买安装SQLServer时附加的一个免费工具;它的性能不比第三方收费工具差,在SSIS发布的时候,它保持了一项世界速度记录:在一小时内加载2TB数据,这是十年前的记录。

体系结构(一)

       SSIS体系结构由包、控制流、数据流、变量、参数等组成,它非常有特色的地方就是处理数据时在数据流管道中实现,也就是说SSIS从数据库中能更快的提取数据已管道流的形式清洗数据。

01.png

  SSIS中的数据流被实现为一种逻辑管道,数据从一个或多个源流出,然后经过必要的转换对数据进行清洗和调整,最后进入一个或多个目标。因为数据流主要在内存中工作(这给予了SSIS更强大的力量),所以相比于其他ETL类型的环境(在这些环境中,数据首先被加载到临时环境中,然后在通过SQL语句进行清洗),SSIS允许数据流更快的执行。

       如何确认SSIS处理数据时使用的是管道,

1.    打开一个SSIS项目,

2.    右击一个包,

3.    选择 查看代码

4.    看到xml 格式的内容

5.    按Ctrl + F 查找 PipelineComponentMetadata

6.    PipelineComponentMetadata 是已管道的形式构建元数据源

7.    你会发现每一个包内的数据源和目标都被PipelineComponentMetadata包裹

      02.png

      03.png

体系结构(二)

       SSIS的核心部分就是包(package)的概念。包是一个可用来编写工作流和业务逻辑的可执行程序。从本质上讲,包是一个以循序渐进的方式执行的任务集、同时包还是一个执行和开发单元。

       包的核心就是控制流(Control Flow),  它协调包中所有组件的执行顺序;控制流由任务、优先约束、容器组成。任务可以被描述为一个独立的工作单元,可以是一条SQL语句、一个存储过程等。优先约束是用来指示任务按照给定顺序执行的包组件,约束状态有:成功、完成、失败。容器主要用来将任务集合在一起执行,容器就像一个盒子。

       控制流就是SSIS的大脑,数据流就是SSIS的心脏。数据流将数据提取到服务器内存中,转换数据并将数据写入到另一个目标。数据流由源、转换、目标组成;源是数据流设计界面的第一个组件,它会向下游组件发送数据。转换是数据流中的关键组件,容许它对数据管道中的数据进行修改。目标在数据流离开最后一个转换组件后数据流就开始流入目标数据库中。

       SSIS体系结构中还提供了变量、参数、错误处理、日志记录

      04.png

       了解了SSIS体系结构那具体任务包含哪些任务、哪些容器、能连接哪些源、能做哪些数据转换、转换完成的数据能保存到哪些目标中;(下图是更加细化的SSIS体系结构)

05.png

开发流程

       SSIS开发流程

       1.配置数据源:创建接数据源和目标源的连接管理器。

       2.新建包:根据业务划分和数据处理,创建相应的管理包。

       3.选择控制流:根据数据处理选择能使用的任务组件。

       4.处理数据流:根据数据清洗选择能使用的清洗转换组件。

       5.部署:把完成的解决方案部署到SSIS服务器上。

       6.执行计划:通过作业让SSIS 包自动按时执行。

       7.邮件监控:邮件预警通知,任务计划执行结果步骤。

 06.png

命名规范

       SSIS命名规范

       1.连接管理器:数据源(S_服务器IP_数据库),目标源(T_服务器IP_数据库)

       2.包:已数字开头   ODS_01_业务处理名、 DW_01_业务处理名   通常情况按照业务的先后顺序创建包

       3.控制流:根据业务处理步骤命名通常已  表名_中文名(Dim_Fund_款项类型),尽量简短表明这个组件做的事情

       4.数据流:已数据源开始,目标源结束,中间可以通过数据清洗组件转换数据,命名一般都使用默认名

       5.作业计划:作业步骤名与SSIS包名一样命名

07.png

开发规范

       SSIS开发规范根据应该企业内部开发习惯进行管理,这里列几个常用的规范:

       1.数据类型:整数(int) ,金额、面积(numeric(18,2)),  字符串(长度超过20的使用 nvarchar(32)/nvarchar(64/128)),日期((20180101)int)

       2.串行并行:并行:当SSIS包中各个控制流数据没有相互依赖,可以进行并行加快数据处理速度;串行:当SSIS包中各个控制流数据相互依赖,必须进行串行处理数据

       3.业务难度:在处理复杂业务数据清洗转换时,普通的SQL语句已经支撑不了这个业务的处理,可以使用存储过程分段处理;如:地产进度管理、库存周转率。

08.png

推荐 3
本文由 FocusBI 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

3 个评论

好好好,dei佬
郑总带我斯帕克
你好,这边有一个问题想请教以下,困扰了我很久。
在你的SSIS开发流程一栏中,部署这一步骤(把完成的解决方案部署到SSIS服务器上)我这边实现起来总是报错。从错误内容上来看我需要使用Windows用户连接到服务器,可是我的工作电脑的用户怎么能连到服务器上呢?
评论中不能贴图,烦请移步:https://ask.hellobi.com/question/27587
还请指教,万谢。

要回复文章请先登录注册