从SSIS包执行R脚本

时间:2015-10-26 18:43:06

标签: r ssis

我想从SSIS包中执行R代码。如何添加执行R代码的数据控制步骤? SSIS仅支持vb.net和asp.net。

SSIS有许多可用的数据转换,但R在数据处理方面非常友好。

我想从SSIS脚本或其他方式运行R代码。基本上,我试图将R集成到ETL过程中。

我想从CSV文件中提取数据(E)。

在R中转换(T)它并在Microsoft数据库中加载(L)它。 是否可以通过使用SSIS数据控制项执行R脚本来在SSIS包中完成此工作流程?谢谢!

2 个答案:

答案 0 :(得分:5)

以下是将R集成到ETL过程中的几种方法。

  1. 粗略,快速和脏 - 在控制流中执行流程任务。这类似于从命令行调用RScript。您可能会进行转换,将其保存到磁盘上的文件中,然后从执行流程任务中获取该文件名,以便将其提供给数据流任务。好处是你保持你的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任务。

答案 1 :(得分:0)

我希望它可以帮助您或其他人,因为您需要数据处理,您可以将数据集带入CSV文件(通过数据流任务),使用“Rscript”执行文件(它可能作为命令执行使用执行流程任务),在文件内部,您必须将数据集上传到数据框(使用readLines()函数调用它),然后执行您请求的所有数学/计算,将数据或计算结果写入CSV文件从SSIS再次阅读。

这不是一个优雅的解决方案,但它可以工作:),至少在Microsoft将R集成为控制/数据流程之前。

CYA

PS。在这里,您将了解如何从命令行执行文件:Run R script from command line