SQL Server R多个结果集

And*_*ius 6 sql-server datatable analytics r dataset

因为使用SQL Server 2016+执行R脚本,是否可以获得多个表?让我们从互联网上随机抽取一个简单的例子(不需要发布我的文章就不会过分复杂化):

EXEC sp_execute_external_script
  @language =N'R',
  @script=N'OutputDataSet<-InputDataSet',
  @input_data_1 =N'SELECT 1 AS hello'
  WITH RESULT SETS (([hello] int not null));
Run Code Online (Sandbox Code Playgroud)

发布在这里.

这里结果作为单个表返回.假设我对数据进行了各种计算,现在我想返回多个表.

例如:

a<-InputDataSet

b<-InputDataSet + 5
Run Code Online (Sandbox Code Playgroud)

这些将返回两个不同的表作为结果.现在我无法想出任何好的方法来返回两个单独的表中的数据,因为它只返回一个表.显然,我可以这样返回:

OutputDataSet<-data.frame(a, b)
Run Code Online (Sandbox Code Playgroud)

但是处理不同的功能和不同的数据很快就会变得非常麻烦.例如,我使用一个函数lm.现在,一个数据集将被计算估计值,另一个数据集将是参与该等式的每个列的系数.当然,我当然可以加入这两个数据表并稍后处理它们,但在许多情况下输出结果变得很大.

程序的参数如下:..., @output_data_1_name但是没有@output_data_2_name,等等因此我没有看到方法.也许有可能创建它OutputDataSet所以它拥有多个表?如果是这样的话 - 由于我缺乏经验,我在R中并不知道这种方式.

tldr; 是否可以返回多个结果集,或者我唯一的解决方案是在R代码中手动构造输出,所以我总是得到一个?

AEF*_*AEF 4

根据 Microsoft 文档,目前不可能返回多个表。它在此页面上注明:

只能将一个输入数据集作为参数传递,并且只能返回一个数据集。

但是,您可以返回其他单个变量,如下所述

通常,存储过程 sp_execute_external_script 的 R 输出仅限于单个数据帧。(此限制将来可能会被删除。)

但是,除了数据帧之外,您还可以返回其他类型的输出,例如标量。

还有一个关于如何执行此操作的示例。