「数据ETL」从数据民工到数据白领蜕变之旅(五)-使用dotNET脚本实现SSIS无限扩展...
在前面一文中,正式引出了SSIS專(zhuān)業(yè)數(shù)據(jù)ETL工具,筆者僅能作引路作用,未能使用文章的方式給大家寫(xiě)出更多的入門(mén)級(jí)的文章,希望讀者們可以自行根據(jù)分享的學(xué)習(xí)資源自行完成入門(mén)及進(jìn)階的學(xué)習(xí)。
同時(shí)也想給大家分享到SSIS的能力邊界性,讓大家可以先打開(kāi)思路,見(jiàn)識(shí)到其能力的所在,日后在學(xué)習(xí)過(guò)程中,可以有更清晰的進(jìn)步方向。
dotNET遇上SSIS
在筆者過(guò)往的文章里已經(jīng)反復(fù)提到過(guò),學(xué)習(xí)dotNET的性?xún)r(jià)比是比較高的,不止于可以做任何專(zhuān)業(yè)程序員做的領(lǐng)域,更是可以讓我們這些業(yè)余的人員大有作為,例如可以開(kāi)發(fā)OFFICE插件,可以使用PowerShell來(lái)做運(yùn)維(會(huì)dotNET的很快上手,都是廣義的dotNET體系),同時(shí)在微軟的產(chǎn)品系里開(kāi)放了各產(chǎn)品的對(duì)象模型,使我們可以輕松地和各大產(chǎn)品作交互如Windows的WMI模型,Sqlserver的SMO、AMO模型,當(dāng)然還有我們熟悉的OFFICE對(duì)象模型等。
今天來(lái)到SSIS中,我們可以有另外一層能力,讓dotNET和SSIS集成,在SSIS中,提供了VSTA的開(kāi)放接口(Visual Studio Tools For Application),相對(duì)于VSTO(Visual Studio Tools For Office)來(lái)說(shuō),一個(gè)是對(duì)OFFICE產(chǎn)品,一個(gè)是對(duì)程序,這里的程序就是SSIS。
所以我們可以在SSIS環(huán)境下使用dotNET語(yǔ)言,這個(gè)極大地增強(qiáng)了我們的數(shù)據(jù)ETL能力,大凡dotNET能夠做的部分,SSIS也可以加上這些能力,并且起點(diǎn)是SSIS給我們做好了模板,自動(dòng)化寫(xiě)了許多設(shè)計(jì)代碼,就如Winform開(kāi)發(fā)拖拉控件一樣的體驗(yàn),我們?cè)赟SIS中,VSTA已經(jīng)為我們做了非常棒的框架,可以讓我們?cè)跀?shù)據(jù)流中輕松訪(fǎng)問(wèn)我們的數(shù)據(jù)對(duì)象。
實(shí)際演示
本篇只是導(dǎo)讀類(lèi),并非要手把手教會(huì)大家,讀者們僅需了解下SSIS的功能擴(kuò)展邊界,評(píng)估此工具能夠給自己的數(shù)據(jù)方案做到何種程度,真正要學(xué)習(xí)時(shí),建議仍然需要按步就班,從低到高地不斷地進(jìn)步。
在dotNET的自帶的類(lèi)庫(kù)中,已經(jīng)提供了非常強(qiáng)大的數(shù)據(jù)處理能力,特別是linq查詢(xún)和我們很常用到的文件類(lèi)操作,字符串處理特別是正則處理等,這里不展開(kāi),此篇給大家一個(gè)開(kāi)放的思路,怎樣從外界尋獲更多的資源來(lái)武裝自己的數(shù)據(jù)處理方案,給大家?guī)?lái)在SSIS環(huán)境下調(diào)用百度AI接口,讓非結(jié)構(gòu)化的數(shù)據(jù)轉(zhuǎn)換為可分析的結(jié)構(gòu)化數(shù)據(jù)供下游Excel、PowerBI等分析工具使用。
在Excel催化劑上同樣實(shí)現(xiàn)了此功能,詳見(jiàn)以下文章。
第15波-接入AI人工智能NLP自然語(yǔ)言處理
準(zhǔn)備工作
獲取百度AI的SDK,可以在百度AI后臺(tái)有跳轉(zhuǎn)鏈接到github,下載整個(gè)項(xiàng)目再編譯。
因SSIS需要簽名的dll類(lèi)庫(kù),在Nuget上的百度AI類(lèi)庫(kù),沒(méi)有進(jìn)行簽名操作,故不能直接在Nuget上下載。
同樣地SSIS對(duì)外部dll引用的要求是需要注冊(cè)到GAC容器中。所以需要對(duì)下載編譯好的dll使用gacutil工具注冊(cè)到GAC中,具體自行查閱相關(guān)文檔。
使用腳本組件實(shí)現(xiàn)百度AI的調(diào)用
在本篇的SSIS包任務(wù)中,加上了一個(gè)腳本組件,從源Excel文件中抽取數(shù)據(jù),經(jīng)過(guò)腳本組件的轉(zhuǎn)換,將內(nèi)容發(fā)送到百度AI上,讓其幫忙返回結(jié)果,最終轉(zhuǎn)換后的結(jié)果寫(xiě)入到目標(biāo)表中。
腳本組件中,我們通過(guò)評(píng)論內(nèi)容,經(jīng)過(guò)百度AI的接口調(diào)用后,返回多列結(jié)構(gòu)化定量的數(shù)據(jù)。
使用的百度AI接口如下:
經(jīng)過(guò)簡(jiǎn)單幾句代碼的調(diào)用,即可完成了我們所需的功能,能夠有這樣的能力,是基于百度已經(jīng)給我們做好了SDK,直接調(diào)用即可,同時(shí)SSIS也根據(jù)我們需要的功能幫我們自動(dòng)生成了強(qiáng)類(lèi)型的類(lèi)庫(kù)供簡(jiǎn)單調(diào)用。
SSIS中的VSTA框架已經(jīng)幫我們做了大量的工作,根據(jù)我們界面的配置信息自動(dòng)生成了代碼Wrapper包裝器。
最后我們回到數(shù)據(jù)庫(kù)中可發(fā)現(xiàn),已經(jīng)從我們Excel的兩列數(shù)據(jù),經(jīng)過(guò)轉(zhuǎn)換后,生成了其他四列的數(shù)據(jù)。此時(shí)我們已經(jīng)完成了從非結(jié)構(gòu)化的文本評(píng)論數(shù)據(jù),轉(zhuǎn)變?yōu)榭煞治龅那楦袃A向的分析。整個(gè)過(guò)程無(wú)需我們懂什么高深的人工智能、機(jī)器學(xué)習(xí)之類(lèi)的算法,只需懂自己想要什么,讓BAT們幫我們做成即中。
看到上圖中有許多默認(rèn)的0和結(jié)果為空的記錄行,相信已經(jīng)開(kāi)始有讀者想表達(dá)下意見(jiàn),SSIS生成的數(shù)據(jù)不靠譜,調(diào)用20條,只有7條數(shù)據(jù)返回。
本次的測(cè)試恰恰讓大家可以見(jiàn)識(shí)到企業(yè)級(jí)ETL的工具之威力,筆者完全不需懂多線(xiàn)程、并發(fā)性之類(lèi)的高深知識(shí),簡(jiǎn)單幾句的業(yè)務(wù)轉(zhuǎn)換代碼,SSIS已經(jīng)幫我們完成了并發(fā)性調(diào)用,并且調(diào)用的速度實(shí)在太快,連百度AI都不接受,直接返回錯(cuò)誤告訴并發(fā)量超標(biāo)了。
當(dāng)然此僅演示示例,實(shí)際中因?yàn)橥獠拷涌诘牟l(fā)性限制等原因,需要限制速度等操作,需要根據(jù)實(shí)際情況再對(duì)代碼進(jìn)行優(yōu)化,使其真正能夠滿(mǎn)足我們預(yù)期的需求。
結(jié)語(yǔ)
本篇帶領(lǐng)讀者們一窺SSIS的能力邊界,讓我們心中有數(shù),具體使用SSIS有何不能做到的事情。
在我們中小企業(yè)的數(shù)據(jù)場(chǎng)景里,筆者這里可以很有把握地告之,實(shí)在沒(méi)有什么是不能做到的,若有恐怕也僅僅是我們對(duì)其的認(rèn)知水平和掌握水平的高低差異而已。
將程序員的廣闊輪子世界接入SSIS中,并將各大廠商提供的SAAS消費(fèi)級(jí)服務(wù)一并接入,恐怕只差我們的想像力而已,在SSIS的世界中,數(shù)據(jù)將如期地按我們想要的形式完成ETL的過(guò)程。
筆者未來(lái)聚焦在數(shù)據(jù)領(lǐng)域的分享,不限于Excel,會(huì)分享更多Sqlserver、dotNET、Azure、PowerBI等話(huà)題,升級(jí)數(shù)據(jù)分析的能力,歡迎繼續(xù)關(guān)注。*
系列文章
從數(shù)據(jù)民工到數(shù)據(jù)白領(lǐng)蛻變之旅(一)-工具總覽 https://www.jianshu.com/p/2bd3f90206ec
從數(shù)據(jù)民工到數(shù)據(jù)白領(lǐng)蛻變之旅(二)-重溫Excel催化劑經(jīng)典 https://www.jianshu.com/p/cb89929bb8ae
「數(shù)據(jù)ETL」從數(shù)據(jù)民工到數(shù)據(jù)白領(lǐng)蛻變之旅(三)-除了Excel催化劑之外PowerQuery值得期待 https://www.jianshu.com/p/d154b09c881d
「數(shù)據(jù)ETL」從數(shù)據(jù)民工到數(shù)據(jù)白領(lǐng)蛻變之旅(四)-有了PowerQuery還需要SSIS嗎?https://www.jianshu.com/p/7ca5a3785bd0
關(guān)于Excel催化劑
Excel催化劑先是一微信公眾號(hào)的名稱(chēng),后來(lái)順其名稱(chēng),正式推出了Excel插件,插件將持續(xù)性地更新,更新的周期視本人的時(shí)間而定爭(zhēng)取一周能夠上線(xiàn)一個(gè)大功能模塊。Excel催化劑插件承諾個(gè)人用戶(hù)永久性免費(fèi)使用!
Excel催化劑插件使用最新的布署技術(shù),實(shí)現(xiàn)一次安裝,日后所有更新自動(dòng)更新完成,無(wú)需重復(fù)關(guān)注更新動(dòng)態(tài),手動(dòng)下載安裝包重新安裝,只需一次安裝即可隨時(shí)保持最新版本!
Excel催化劑插件下載鏈接:https://pan.baidu.com/s/1Iz2_NZJ8v7C9eqhNjdnP3Q
聯(lián)系作者公眾號(hào)取名催化劑,因Excel本身的強(qiáng)大,并非所有人能夠立馬享受到,大部分人還是在被Excel軟件所虐的階段,就是頭腦里很清晰想達(dá)到的效果,而且高手們也已經(jīng)實(shí)現(xiàn)出來(lái),就是自己怎么弄都弄不出來(lái),或者更糟的是還不知道Excel能夠做什么而停留在不斷地重復(fù)、機(jī)械、手工地在做著數(shù)據(jù),耗費(fèi)著無(wú)數(shù)的青春年華歲月。所以催生了是否可以作為一種媒介,讓廣大的Excel用戶(hù)們可以瞬間點(diǎn)燃Excel的爆點(diǎn),無(wú)需苦苦地掙扎地沒(méi)日沒(méi)夜的技巧學(xué)習(xí)、高級(jí)復(fù)雜函數(shù)的燒腦,最終走向了從入門(mén)到放棄的道路。
最后Excel功能強(qiáng)大,其實(shí)還需樹(shù)立一個(gè)觀點(diǎn),不是所有事情都要交給Excel去完成,也不是所有事情Excel都是十分勝任的,外面的世界仍然是一個(gè)廣闊的世界,Excel只是其中一枚耀眼的明星,還有其他更多同樣精彩強(qiáng)大的技術(shù)、工具等。*Excel催化劑也將借力這些其他技術(shù),讓Excel能夠發(fā)揮更強(qiáng)大的爆發(fā)!
關(guān)于Excel催化劑作者
姓名:李偉堅(jiān),從事數(shù)據(jù)分析工作多年(BI方向),一名同樣在路上的學(xué)習(xí)者。
服務(wù)過(guò)行業(yè):零售特別是鞋服類(lèi)的零售行業(yè),電商(淘寶、天貓、京東、唯品會(huì))
技術(shù)路線(xiàn)從一名普通用戶(hù),通過(guò)Excel軟件的學(xué)習(xí),從此走向數(shù)據(jù)世界,非科班IT專(zhuān)業(yè)人士。
歷經(jīng)重重難關(guān),終于在數(shù)據(jù)的道路上達(dá)到技術(shù)平原期,學(xué)習(xí)眾多的知識(shí)不再太吃力,同時(shí)也形成了自己的一套數(shù)據(jù)解決方案(數(shù)據(jù)采集、數(shù)據(jù)加工清洗、數(shù)據(jù)多維建模、數(shù)據(jù)報(bào)表展示等)。
擅長(zhǎng)技術(shù)領(lǐng)域:Excel等Office家族軟件、VBA&VSTO的二次開(kāi)發(fā)、Sqlserver數(shù)據(jù)庫(kù)技術(shù)、Sqlserver的商業(yè)智能BI技術(shù)、Powerbi技術(shù)、云服務(wù)器布署技術(shù)等等。
2018年開(kāi)始職業(yè)生涯作了重大調(diào)整,從原來(lái)的正職工作,轉(zhuǎn)為自由職業(yè)者,暫無(wú)固定收入,暫對(duì)前面道路不太明朗,苦重新回到正職工作,對(duì)Excel催化劑的運(yùn)營(yíng)和開(kāi)發(fā)必定受到很大的影響(正職工作時(shí)間內(nèi)不可能維護(hù)也不可能隨便把工作時(shí)間內(nèi)的成果公布于外,工作外的時(shí)間也十分有限,因已而立之年,家庭責(zé)任重大)。
和廣大擁護(hù)者一同期盼:Excel催化劑一直能運(yùn)行下去,我所惠及的群體們能夠給予支持(多留言鼓勵(lì)下、轉(zhuǎn)發(fā)下朋友圈推薦、小額打賞下和最重點(diǎn)的可以和所在公司及同行推薦推薦,讓我的技術(shù)可以在貴司發(fā)揮價(jià)值,實(shí)現(xiàn)雙贏(初步設(shè)想可以數(shù)據(jù)顧問(wèn)的方式或一些小型項(xiàng)目開(kāi)發(fā)的方式合作)。
總結(jié)
以上是生活随笔為你收集整理的「数据ETL」从数据民工到数据白领蜕变之旅(五)-使用dotNET脚本实现SSIS无限扩展...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: .NET Core 编写 Azure F
- 下一篇: 数据结构为什么那么难?