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