【问题标题】:Execute R script from SSIS Package从 SSIS 包执行 R 脚本
【发布时间】:2016-01-25 23:55:21
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 欢迎来到 stackoverflow (SO)!如果您制作一个可重复的示例来解决您的问题,我们更有可能为您提供帮助。我们可以使用的东西向您展示如何解决您的问题。你可以看看this SO post on how to make a great reproducible example in R。此外,如果您概述您已经尝试过的内容也会很有帮助。
  • 目前,SSIS 将只接受 VB 脚本和 C# 语言。如果要将 csv 加载到数据库,则可以直接使用数据流任务,并且连接管理器应该是动态的而不是静态的

标签: r ssis


【解决方案1】:

您可以通过以下几种方式将 R 集成到您的 ETL 流程中。

  1. 粗鲁、快速和肮脏 - 在控制流中执行流程任务。这类似于从命令行调用 RScript。您可能会进行转换,将其保存到磁盘上的文件中,然后从执行流程任务中获取该文件名,以便将其输入数据流任务。好处是你保持你的 R 干净并且与你的 C#/VB 分开。

  2. 通过 Rdotnet 集成 - 您可以使用 RDotNet library(我相信,还没有尝试集成它)。您需要在 GAC 中注册 DLL,然后您可以在 SSIS 脚本或 call R scripts directly 中使用 .NET 对象。

  3. 集成在 SQL Server 2016 中 - Microsoft 通过扩展存储过程添加了 R 支持。您通过存储过程调用 R 脚本并使用 sql 查询输入数据并可以存储输出。见more detail here。这意味着在 SSIS 中使用执行 SQL 任务。

【讨论】:

  • 我遵循了粗鲁、快速和肮脏的方法。现在我有一个运行 R 脚本并将输出加载到 Visual Studio 中的数据库表的 SSIS 包。我需要在 SQL Server 上安排和部署它。我主要关心的是在哪里放置 R 脚本。对于在我的计算机上运行的包,从我的本地文件中提取 R 脚本。但我想知道将文件存储在哪里,以便在我的系统之外的 SQL Server 上运行包。请有任何想法。
  • 一个选项,将脚本文本存储在 db 表中,添加一个步骤来查询并将结果存储到文件中。 google.com/amp/s/blog.sqlauthority.com/2013/09/12/…
  • 正如我提到的在 SQL Server 上安排和部署,这意味着我正在安排包每天自动运行而无需我的干预。您建议的选项需要手动输入命令来运行文件。我研究了 sqlrutils 包,它需要重新编写我的 R 代码以适应存储过程。但该软件包默认带有用于 SQL 服务器的机器学习服务。由于我正在处理远程系统并且 sqlrrutils 特定于安装的系统,因此我无法在我的系统上的 R studio 中使用 sqlrutils。所以寻找其他选择。
  • 你有没有解决这个问题@krpa?你是怎么做到的?
  • 是的,我做到了。我创建了一个存储过程来运行外部脚本并将我的 R 代码添加到 sql server 上,还创建了 ssis 包以使用“执行 sql 任务”调用存储过程的执行。要做到这一切,sql server 需要安装 R server 和支持包。为了自动化,在 sql server 上部署 ssis 包并安排一个作业在特定时间运行。
【解决方案2】:

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

这不是一个优雅的解决方案,但它确实有效 :),至少在 microsoft 将 R 集成为控制/数据流过程之前。

CYA

附言。下面介绍如何从命令行执行文件:Run R script from command line

【讨论】:

    猜你喜欢
    • 2011-01-17
    • 1970-01-01
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    相关资源
    最近更新 更多