我想在Linux上从R访问Olap-Cube。具体来说,我有一个SQL Server 2016,其中包含我想访问的Analysis Services和多维数据集。
我们一直在使用Microsoft R和olapR软件包从Windows上的R中访问多维数据集。而且,虽然有linux版本的microsoft-R,但其中不包含olapR软件包。
我们已经为SQL Server安装了R服务。并且我们确实在那儿安装了olapR软件包(使用R服务器绑定),但是似乎它并没有对mrsdeploy的支持。
在Linux上从R访问多维数据集还有什么其他选择?我们听说过Revoscaler软件包,但不知道如何在Cubes上使用它。也许我们可以将包含r代码的sql脚本发布到服务器,然后让sql server执行r代码?我在这种方法上没有发现任何帮助。
感谢您的帮助。
答案 0 :(得分:0)
在我们的案例中,它是通过将olapR代码嵌入RODBC代码中的T-SQL来实现的。
library(RODBC)
my_server="<server>"
my_db="<database>"
my_username="<myusername>"
my_pwd="<mypassword>"
db <- odbcDriverConnect(paste0("DRIVER={SQL Server};
server=",my_server,";
database=",my_db,";
uid=",my_username,";
pwd=",my_pwd))
sql="exec sp_execute_external_script
@language =N'R',
@script=N'
library(olapR)
cnnstr <- \"Data Source=<server>; Provider=MSOLAP; initial catalog=<AnalysisService>; User Id=<domain>\\\\<user>; Password=<myPassword>\"
olapCnn <- OlapConnection(cnnstr)
mdx <- \" <MDX-Query> \"
OutputDataSet <- execute2D(olapCnn, mdx)';"
df <- sqlQuery(db,sql)
请注意域\用户中的四倍反斜杠。
请注意,Analysis Services登录不一定与SQL登录相同
请注意,SQL用户必须具有执行外部脚本的权限:
GRANT EXECUTE ANY EXTERNAL SCRIPT TO [<user>]
可以通过使用“带有结果集”语句对其进行一些改进,但是它可以工作。