2015-10-26 84 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