《FOCUS数据管理》:ETL监控

浏览: 2205

       在过年前我写过一篇《FOCUS数据管理》年终总结,收到很多同行和外行的咨询,有收到数据库、CUBE逆向工程如何实现、有收到直接问系统多少钱如何授权、有收到是否有课程培训、有收到是否开源;千言万语表示感谢,系统才萌芽不到半年,不够完善还在我的训练加强中,《FOCUS数据管理》确实帮我减少了百分之六七十的工作量,这远远没有达到我的目标。

       在《FOCUS数据管理》年终总结 中有SSIS监控 没有写,这里我用ETL监控来填补它的空缺。

01.png

ETL系统

       DW/BI系统(决策支持系统)耗时最长最复杂的环节的就是数据清洗、转换、装载过程,这个过程也称作为ETL(Extract-Transform-Load),这个环节会消耗掉整个BI项目的百分七十左右的时间,而且BI系统后期需求增加修改维护也主要是对ETL系统进行修改,从系统架构的角度来看DW/BI系统很尴尬,某种水的广告: 我们不生产水,我们只是大自然的搬运工;而DW/BI系统的广告:我们不生产数据,我们只是数据源的搬运工;哈哈哈。生产水的企业会有一套专业的水处理系统流程:抽大自然的水、过滤杂质加点矿物质、装瓶;所以DW/BI系统也会有一套数据处理系统流程:抽取各个业务系统的数据、清洗和修补不规范数据、加载到数据仓库中。看上去这个过程挺简单的,当然如果有人帮你把前期的需求调研、数据仓库设计、业务源接口给你完成了,这个过程就比较简单,但是百分九十五的情况下是你想太多。从下图 中小企业BI系统架构(一)中出现两次ETL系统,前面一个ETL系统是从源抽数处理后加载到信息工厂,后面一个ETL是从信息工厂抽数到主题数据集。而真实的BI系统场景可能并不会出现两台ETL系统服务器(看图中小企业BI系统架构(二)),这里可能我们并不关心有几个ETL系统而关心的是ETL运行速度、管理便捷。在《FOCUS数据管理》内部数据管理 模块 的子模块 SSIS监控 对 ETL 运行速度、管理便捷进行了很好的应用。图中描述的中小企业BI系统架构 指的是数据量在5~10T左右的企业而不是企业规模的大小,因为有很多企业规模大但是数据量都不到100G,如果这个架构把高可用和容灾方案做进去基本能适应百分之七八十的企业。

 02.png

03.png

FOCUS数据管理

       在FOCUS数据管理系统中我开发了四个子模块分别是:服务器参数、错误警告信息、SSIS包管理、SSIS执行管理。 这四个子模块基本能满足 对ETL的监控。

 04.png

服务器参数

       为什么会有服务器参数子模块,在ETL系统段落中有讲到DW/BI从各个业务系统中抽取数据,所以必须要对服务器参数信息进行记录和保存。以帮助后面进入各个系统数据获取ETL执行SQL的情况。

05.png

错误警告信息

       在开发SSIS包的过程中,不可能把所有的陷阱都考虑到,特别是当业务系统中的表修改后如果没有人通知你,你是不可能知道这个某个包中的数据流SQL语句要同步修改的,也有可能你一开始做完这个工作流业务逻辑没有出现任何警告或错误,但是不能保证你后面的时间不会出现,所以错误警告信息 子模块提供了实时的信息查询,这个实时是ETL系统会每隔一个时间段会扫描识别各个数据流是否有警告或错误。在DW/BI项目进行的越来越接近尾声可能SSIS包开了几十个或上百个,这时你不可能每天打开包一个一个的去查看是否有警告或错误。所以有一个统一的警告错误信息查看界面是非常必要的。

 06.png

SSIS包管理

       我用之前我发表的《SSIS体系结构》文章段落来重新认识包:SSIS的核心部分就是包(package)的概念。包是一个可用来编写工作流和业务逻辑的可执行程序。从本质上讲,包是一个以循序渐进的方式执行的任务集、同时包还是一个执行和开发单元。包的核心就是控制流(Control Flow),  它协调包中所有组件的执行顺序;控制流由任务、优先约束、容器组成。任务可以被描述为一个独立的工作单元,可以是一条SQL语句、一个存储过程等。优先约束是用来指示任务按照给定顺序执行的包组件,约束状态有:成功、完成、失败。容器主要用来将任务集合在一起执行,容器就像一个盒子。控制流就是SSIS的大脑,数据流就是SSIS的心脏。数据流将数据提取到服务器内存中,转换数据并将数据写入到另一个目标。数据流由源、转换、目标组成;源是数据流设计界面的第一个组件,它会向下游组件发送数据。转换是数据流中的关键组件,容许它对数据管道中的数据进行修改。目标在数据流离开最后一个转换组件后数据流就开始流入目标数据库中。

07.png

       从段落中可以知道SSIS包包含数据工作流和业务逻辑,如果数据源没有平面文件需要处理,那么SSIS包基本都是SQL 语句就能完成业务逻辑。那么每日跑数的时候包运行的状态是怎样的,我们需要知道它的开始时间、结束时间、时长、影响的行数、是包还是数据流等,《FOCUS数据管理》SSIS包管理模块方便的提供了这样的数据。  

       1. 选择执行日期可以查看任何时候的执行情况。

08.png

2.类型是用来区分是包还是数据流,类型=0是包、类型=1是数据流,这个倒三角就是过滤器,你可以自由的过滤包、数据流、执行时长、行数等。

 09.png

SSIS执行管理

       每一个SSIS包可能只处理一个业务逻辑有一条SQL语句、可能会处理多个业务逻辑有多条SQL,不管有几条SQL语句都会一一对应一个数据流控件。这里不关心数据流控件怎么实现它只是一个工具我们应该关心这条SQL语句的性能和数据流管理便捷性。

       1.选择服务器,在服务器参数子模块中把我们需要取数的服务器信息已经保存起来而且可以随时修改,数据流承载着SQL语句的执行,可能同一个包包含两个数据流控件指向不同的业务系统服务器,这种业务场景非常常见,如果在SSIS包管理模块中发现某个包的执行时长比较久,我们就需要考虑它的各种性能参数、执行计划是否不正常。

10.png

       2.选择好服务器后,点击旁边的查询按钮;就查询出哪些数据流在这个服务器上执行了,会现在数据流名、执行的SQL、各种性能参数以及执行计划。各种性能的参数根据个人的能力水平来判断和调试SQL。

11.png

       3.根据服务器获取到数据中包含有执行计划,这个执行计划是根据每一条执行的SQL语句生成出来的。如果某条执行的SQL语句比较慢,你就可以直接复制对应的执行计划放到数据库中执行就会出现执行计划;执行计划会自动帮你分析一部分非常差的性能,但是真正的性能优化还得靠自己。

 12.png

13.png

14.png

商业智能课件下载

15.png

                                                                                          16.jpg

商业智能教程课件下关注微信公众号:FocusBI,下载教程PDF,已关注回复课件获取下载地址。


历史文章

《FOCUS数据管理》年终总结

总线矩阵

SQL Server内核

数据仓库

商业智能场景

SSIS体系结构

使用Python爬虫为BI准备数据源

SSIS 开发案例

SSAS体系结构

租房分析&星型模型

地产分析&雪花模型

租房分析可视化(网址体验)

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

0 个评论

要回复文章请先登录注册