SQL Server R多个结果集

问题描述:

由于使用SQL Server 2016+执行R脚本,是否可以获取多个表?让我们从互联网上(无需张贴雷不过于复杂的问题)随机简单的例子:SQL Server 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)); 

,张贴在here

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

例如:

a<-InputDataSet 

b<-InputDataSet + 5 

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

OutputDataSet<-data.frame(a, b) 

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

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

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

根据Microsoft文档,目前不可能返回多个表。它指出在这个page

只有一个输入数据集可以作为参数传递,并且可以 只返回一个数据集。

然而,可以返回附加单个变量,如所述here

一般而言,R的从存储过程 sp_execute_external_script的输出被限制到单个数据帧。 (此 限制可能会在未来删除。)

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

还有一个例子给出了如何做到这一点。

+0

谢谢,我确信这足够了。非常感谢你的研究努力。 –

+0

也谢谢我。关于这个问题,我已经读了很多 - 对于输入和输出数据集 - 都完全错过了返回额外标量输出的技巧。欢呼指出该链接! – Jerb