FocusBI: SSIS体系结构(原创)
关注微信公众号:FocusBI 查看更多文章;加QQ群:808774277 获取学习资料和一起探讨问题。
《商业智能教程》pdf下载地址
链接:https://pan.baidu.com/s/1f9VdZUXztwylkOdFLbcmWw 密码:2r4v
打开SQL Server Data Tools 2015它比2012版增加了不少大数据相关的数据处理组件,SSIS是微软BI的ETL(抽取、转换、加载)工具,SSIS 是 购买安装SQL Server时附加的一个免费工具;它的性能不比第三方收费工具差,在SSIS发布的时候,它保持了一项世界速度记录:在一小时内加载2TB数据,这是十年前的记录。
体系结构(一)
SSIS体系结构由包、控制流、数据流、变量、参数等组成,它非常有特色的地方就是处理数据时在数据流管道中实现,也就是说SSIS从数据库中能更快的提取数据已管道流的形式清洗数据。
SSIS中的数据流被实现为一种逻辑管道,数据从一个或多个源流出,然后经过必要的转换对数据进行清洗和调整,最后进入一个或多个目标。因为数据流主要在内存中工作(这给予了SSIS更强大的力量),所以相比于其他ETL类型的环境(在这些环境中,数据首先被加载到临时环境中,然后在通过SQL语句进行清洗),SSIS允许数据流更快的执行。
如何确认SSIS处理数据时使用的是管道,
- 打开一个SSIS项目,
- 右击一个包,
- 选择 查看代码
- 看到xml 格式的内容
- 按Ctrl + F 查找 PipelineComponentMetadata
- PipelineComponentMetadata 是 已管道的形式构建元数据源
- 你会发现每一个包内的数据源和目标都被PipelineComponentMetadata包裹
体系结构(二)
SSIS的核心部分就是包(package)的概念。包是一个可用来编写工作流和业务逻辑的可执行程序。从本质上讲,包是一个以循序渐进的方式执行的任务集、同时包还是一个执行和开发单元。
包的核心就是控制流(Control Flow), 它协调包中所有组件的执行顺序;控制流由任务、优先约束、容器组成。任务可以被描述为一个独立的工作单元,可以是一条SQL语句、一个存储过程等。优先约束是用来指示任务按照给定顺序执行的包组件,约束状态有:成功、完成、失败。容器主要用来将任务集合在一起执行,容器就像一个盒子。
控制流就是SSIS的大脑,数据流就是SSIS的心脏。数据流将数据提取到服务器内存中,转换数据并将数据写入到另一个目标。数据流由源、转换、目标组成;源是数据流设计界面的第一个组件,它会向下游组件发送数据。转换是数据流中的关键组件,容许它对数据管道中的数据进行修改。目标在数据流离开最后一个转换组件后数据流就开始流入目标数据库中。
SSIS体系结构中还提供了变量、参数、错误处理、日志记录
了解了SSIS体系结构那具体任务包含哪些任务、哪些容器、能连接哪些源、能做哪些数据转换、转换完成的数据能保存到哪些目标中;(下图是更加细化的SSIS体系结构)
开发流程
SSIS开发流程
1.配置数据源 :创建接数据源和目标源的连接管理器。
2.新建包:根据业务划分和数据处理,创建相应的管理包。
3.选择控制流:根据数据处理选择能使用的任务组件。
4.处理数据流:根据数据清洗选择能使用的清洗转换组件。
5.部署:把完成的解决方案部署到SSIS服务器上。
6.执行计划:通过作业让SSIS 包自动按时执行。
7.邮件监控:邮件预警通知,任务计划执行结果步骤。
命名规范
SSIS命名规范
1.连接管理器:数据源(S_服务器IP_数据库),目标源(T_服务器IP_数据库)
2.包:已数字 开头 ODS_01_业务处理名、 DW_01_业务处理名 通常情况按照业务的先后顺序创建包
3.控制流:根据业务处理步骤命名 通常已 表名_中文名(Dim_Fund_款项类型),尽量简短表明这个组件做的事情
4.数据流:已数据源开始,目标源结束,中间可以通过数据清洗组件转换数据,命名一般都使用默认名
5.作业计划:作业步骤名与SSIS包名一样命名
开发规范
SSIS开发规范根据应该企业内部开发习惯进行管理,这里列几个常用的规范:
1.数据类型:整数(int) ,金额、面积(numeric(18, 2)), 字符串(长度超过20的使用 nvarchar(32)/nvarchar(64/128)),日期((20180101)int)
2.串行并行:并行:当SSIS包中各个控制流数据没有相互依赖,可以进行并行加快数据处理速度;串行:当SSIS包中各个控制流数据相互依赖,必须进行串行处理数据
3.业务难度:在处理复杂业务数据清洗转换时,普通的SQL语句已经支撑不了这个业务的处理,可以使用存储过程分段处理;如:地产进度管理、库存周转率。
历史文章:
FocusBI: 使用Python爬虫为BI准备数据源(原创)