如何从SQL启用data.table

时间:2017-03-06 08:09:41

标签: sql-server r data.table

在“R Interactive”标签中,我可以访问data.table。安装程序将其加载到我的个人文件夹中。 但是当我尝试使用SQL中的R

EXECUTE sp_execute_external_script    
  @language = N'R'         
, @input_data_1 = N' select top 2 TodayClosed as Closed, Industry from stockquotes SQ
     inner join StockSymbols SS on SS.ID = SQ.StockId where TodayClosed is not null;'    
, @script = N'
     dtf <- data.frame(InputDataSet)
     dt <- data.table(dtf)
     dt[,list(mean=mean(Closed),sd=sd(Closed)),by=Industry]'
WITH RESULT SETS (([mean] float NULL, [sd] float NULL, Industry char(75) NULL));

我收到此错误:

  

找不到函数“data.table”

从其他错误消息中,我会说它正在“Program Files”下查找。 我试过安装它没有运气。

1 个答案:

答案 0 :(得分:3)

首先,您必须将data.table包安装到R Services可以找到的位置。当SQL运行R存储过程时,它会使用不同的用户帐户。根据{{​​3}}

  

步骤3:为启动板帐户启用隐含身份验证

     

在安装过程中,会创建20个新的Windows用户帐户,以便在SQL Server受信任的Launchpad服务的安全令牌下运行任务。当用户从外部客户端发送R脚本时,SQL Server将激活可用的工作者帐户,将其映射到调用用户的身份,并代表用户运行R脚本。

因此,将找不到安装在用户目录树下的任何软件包。 R服务查找包的默认位置类似于C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\library,但您可能不应该在那里安装新包,否则您可能会遇到破坏的风险。而是选择或创建一个不同的,可全局访问的目录来安装。

其次,您必须将data.table加载到R会话中。插入

.libPaths("packagedir")
require(data.table)

位于R脚本的顶部,其中packagedir是您选择的目录。