前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >「数据ETL」从数据民工到数据白领蜕变之旅(六)-将Python的能力嫁接到SSIS中

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

作者头像
Excel催化剂
发布2021-08-20 15:14:10
3.1K0
发布2021-08-20 15:14:10
举报
文章被收录于专栏:Excel催化剂

前一篇推文中,给大家演示了在SSIS上使用dotNET脚本,实现一些原生SSIS难以实现的功能,并冠以无限可能的说法。 对部分非dotNET的人群来说,难以发挥到自身的知识储备能力,此篇郑重地为大家宣布,所有大家过去的知识,都能为SSIS所用。 此篇演示python脚本帮助数据清洗工作,成为SSIS流程中的一部分,同理其他语言其他工具亦可以完成,只要有最终输出即可供SSIS使用。

充分复用python的现有优势

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

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

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

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

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

演示内容介绍

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

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

详细文章出处:

"Python替代Excel Vba"系列(三):pandas处理不规范数据

数据源结构为:

最终转换的结果:

使用原理介绍

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

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

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

在SSIS上使用python脚本

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

结语

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

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

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

系列文章

从数据民工到数据白领蜕变之旅(一)-工具总览 https://www.jianshu.com/p/2bd3f90206ec 从数据民工到数据白领蜕变之旅(二)-重温Excel催化剂经典 https://www.jianshu.com/p/cb89929bb8ae 「数据ETL」从数据民工到数据白领蜕变之旅(三)-除了Excel催化剂之外PowerQuery值得期待 https://www.jianshu.com/p/d154b09c881d 「数据ETL」从数据民工到数据白领蜕变之旅(四)-有了PowerQuery还需要SSIS吗?https://www.jianshu.com/p/7ca5a3785bd0 「数据ETL」从数据民工到数据白领蜕变之旅(五)-使用dotNET脚本实现SSIS无限扩展 https://www.jianshu.com/p/8de014b1f957

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Excel催化剂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 充分复用python的现有优势
  • 演示内容介绍
  • "Python替代Excel Vba"系列(三):pandas处理不规范数据
    • 使用原理介绍
      • 在SSIS上使用python脚本
        • 为何不使用一步到位直接python完成或SSIS完成?
          • 结语
            • 系列文章
            相关产品与服务
            数据库
            云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档