从数据民工到数据白领蜕变之旅(六)-将Python的能力嫁接到SSIS

前一篇推文中,给大家演示了在SSIS上使用dotNET脚本,实现一些原生SSIS难以实现的功能,并冠以无限可能的说法。

对部分非dotNET的人群来说,难以发挥到自身的知识储备能力,此篇郑重地为大家宣布,所有大家过去的知识,都能为SSIS所用。

此篇演示python脚本帮助数据清洗工作,成为SSIS流程中的一部分,同理其他语言其他工具亦可以完成,只要有最终输出即可供SSIS使用。

充分复用python的现有优势

python的确是一门非常优秀的编程语言,特别是在数据领域,网络爬虫、数据处理、分析等方面都是非常强劲。

估计现在许多做数据的朋友们,或多或少也会学习一下python,学深一门语言花费大,入门一门语言是容易的。

特别是已经掌握了一门现有语言的基础上,再学一门新语言,也是不难,熟悉语法、现有类库、包调用即可。

笔者因喜欢使用现成的微软的工具,在微软的生态里专研得深,产品间的交叉应用场景广,所以学习dotNET是非常不错的投资回报。

若其他朋友的学习路径是python为主,本文可以给python群体一个大大的精喜,在python上做好它最擅长的部分,其余流程交给SSIS现有成熟、简单易用的数据ETL框架来完成,双重优势发挥得淋漓尽致。

演示内容介绍

本文打算使用python进行数据的清洗部分,引用的案例是带笔者入门dotNET的我的师傅的出品案例:清洗一份课程表数据,将其转换为结构化的一维表结构。

我师傅精通dotNET、python等语言,专业程序员,写得代码很规范,很值得学习和关注。

详细文章出处:

https://mp.weixin.qq.com/s/EK63nax5JCur-G2o2QMJNw

数据源结构为:


从数据民工到数据白领蜕变之旅(六)-将Python的能力嫁接到SSIS


最终转换的结果:


从数据民工到数据白领蜕变之旅(六)-将Python的能力嫁接到SSIS


使用原理介绍

本次使用的是SSIS可以调用处部程序的功能,调用CMD,然后输入参数为 python main.py,启用python并运行main.py这个文件。

以上的前提条件是本机安装好python,并设置好环境变量让CMD可以直接通过敲打python即可启动python程序,根据不同脚本的要求,安装好相应的包,例如本篇是使用pandas作数据清洗,在python中需要安装好pandas包。

从实例数据.xlsx中,经过python脚本的运行,生成一个res.csv的文件。


从数据民工到数据白领蜕变之旅(六)-将Python的能力嫁接到SSIS


从数据民工到数据白领蜕变之旅(六)-将Python的能力嫁接到SSIS


在SSIS上使用python脚本

在控制流任务中,有【执行进程任务】,拉一个任务到右侧,并双击此任务进行详细配置。

在【处理】选项卡中,放入【Executable】参数为CMD路径,若运行其他程序同理。

在【Arguments】参数中,输入CMD调用的参数,此处输入绝对路径,并且在CMD参数中加上/C开关,表示运行完关闭CMD程序。

在python的路径识别中,需要转换为反斜杠,如:python F:/自媒体相关/其他文章分享/数据ETL/main.py


从数据民工到数据白领蜕变之旅(六)-将Python的能力嫁接到SSIS


运行后关闭程序很关键,若自己写出的程序,想直接在【Executable】里运行,最后一步需要将程序自关闭,例如使用dotNET写一些控制台程序。否则最好用CMD来运行所需的程序,再加上/C开关关闭它,让SSIS任务流可以流到下一个任务。

创建好任务后,可以单独执行一个任务,测试最终效果。


从数据民工到数据白领蜕变之旅(六)-将Python的能力嫁接到SSIS


此处给大家演示下控制流任务,可以将我们日常许多编程代码的任务,转换为控件拖拉的方式,例设上面py脚本未做防错处理,当已经有res.csv文件存在时,再生成res.csv会报错。此处使用SSIS的【文件系统任务】来完成文件先删除操作。


从数据民工到数据白领蜕变之旅(六)-将Python的能力嫁接到SSIS


接下来,我们回到常规任务,将新生成的res.csv文件进行数据抽取并加载到数据库中。

本篇的文件为csv文件,使用【平面文件源】来读取,具体配置自行琢磨下,比【Excel源】要复杂一些,但因其非常常用,很有必要熟悉掌握。


从数据民工到数据白领蜕变之旅(六)-将Python的能力嫁接到SSIS


目标我们存到关系数据库中,这样数据的二次利用才更方便,并且数据库的存储数据量也可以得到保障。


从数据民工到数据白领蜕变之旅(六)-将Python的能力嫁接到SSIS


最终我们的数据流任务如下图,增加加载时间,方便后期审核。


从数据民工到数据白领蜕变之旅(六)-将Python的能力嫁接到SSIS


最终我们的控制流任务如下,完成我们预期的效果,将python清洗好的数据,交给SSIS的后续步骤来调用。


从数据民工到数据白领蜕变之旅(六)-将Python的能力嫁接到SSIS


在SSMS上打开目标表,发现数据已经加载成功。


从数据民工到数据白领蜕变之旅(六)-将Python的能力嫁接到SSIS


为何不使用一步到位直接python完成或SSIS完成?

在python的群体中,的确熟练使用后,将数据再作一步,直接上传到数据库中,也并非难事。

但对于一个工具型的做事方式来说,为何有现成的工具不用,而转而自己从零开始写代码完成,况且自己写出来的代码,也不会像专业工具考虑得那么周到完善,例如数据上载过程中报错怎样处理?数据上载的性能怎样保证等等,没有足够的专业度是写不出很健壮的代码。

所以若我们可以充分利用好各个工具的最大的优势部分,组合起来使用,每个工具也无需学习太深入,即可完成手头的任务,何乐而不为。

同样的道理,如果用SSIS直接来处理脏乱的数据源,也是一个很痛苦的过程,在dotNET脚本中处理,也没有python现成的pandas这些专业库的数据清洗来得方便。

结语

本篇给大家再次开阔思路,使用现成的SSIS的ETL框架性功能,外加一些其他现成的好用的数据处理工具,强强联合,使我们的数据ETL过程更加容易,也有更大的能力处理更多的复杂场景。

在下一篇中,我们重新回到微软系中,使用SSIS和PowerQuery联合,将轻量化的ETL工具一些好用易用的能力同样嫁接到SSIS中,同时又可以避开此短板部分。敬请关注。

笔者未来聚焦在数据领域的分享,不限于Excel,会分享更多Sqlserver、dotNET、Azure、PowerBI等话题,升级数据分析的能力,欢迎继续关注。*

展开阅读全文

页面更新:2024-06-06

标签:能力   数据   微软   数据源   民工   脚本   路径   演示   笔者   白领   参数   语言   代码   文件   工具   程序   数码   专业

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top