2015-10-26 236 views
5

我想從SSIS包執行R代碼。我如何添加執行R代碼的數據控制步驟? SSIS僅支持vb.net和asp.net。從SSIS包執行R腳本

SSIS有許多可用的數據轉換,但R對數據操作非常友好。

我想從SSIS腳本或其他方式運行R代碼。基本上,我試圖將R集成到ETL過程中。

我想從CSV文件中提取數據(E)。

在R中轉換(T)並將其加載(L)到Microsoft數據庫中。 是否有可能通過使用SSIS數據控件項目執行R腳本來在SSIS包中完成此工作流?謝謝!

+1

歡迎來到stackoverflow(SO)!如果你製作一個可重複的例子來解決你的問題,我們更有可能幫助你。我們可以從中學習並使用它來向您展示如何解決您的問題。你可以看看[這個SO帖子如何在R中創建一個很好的重現示例](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) 。此外,如果你概述你已經嘗試過的東西,這也會有所幫助。 –

+0

截至目前,SSIS將只接受VB腳本和C#語言。如果要將csv加載到數據庫,則可以直接使用數據流任務,並且連接管理器應該是動態而不是靜態的 –

回答

5

這裏有幾種方法可以將R集成到ETL過程中。

  1. 原油,快速和髒 - 在控制流執行進程任務。這與從命令行調用RScript類似。您可能會進行轉換,將其保存到磁盤上的文件中,並從Execute Process Task中獲取該文件名,以便將其提供給數據流任務。上行是你保持你的R清潔,並從你的C#/ VB分開。

  2. 通過Rdotnet集成 - 您可以使用RDotNet library(我相信,還沒有試圖將其集成)。您需要在GAC中註冊DLL,然後您可以使用SSIS腳本中的.NET對象或call R scripts directly

  3. 在SQL Server 2016中集成 - Microsoft已通過擴展存儲過程添加了R支持。您可以通過存儲過程調用R腳本,並使用sql查詢輸入數據並存儲輸出。見more detail here。這意味着在SSIS中使用執行SQL任務。

0

我希望它可以幫助你或其他人,因爲你想要的數據處理,你可能把你的數據集中到一個CSV文件(throught數據流任務),執行使用文件:「RSCRIPT」(這可能是作爲執行過程任務的命令執行),在文件內部,您必須將數據集上傳到數據框(使用readLines()函數調用它),然後執行您請求的所有數學/計算,將數據或計算結果寫入一個CSV文件再次從SSIS讀取它。

這不是一個優雅的解決方案,但它的工作:),至少直到微軟集成R作爲控制/數據流程。

CYA

PS。在這裏你去如何從命令行執行文件:Run R script from command line