我想从Linux上的R访问Olap-Cube。具体地说,我有一个SQL-Server 2016,其中包含我想要访问的Analysis Services和多维数据集。
我们一直使用microsoft R和olapR-package从windows上的R访问多维数据集。虽然有microsoft-R的linux版本,但它不包括olapR-package。
我们已经为SQL-Server安装了R-Services。我们确实在那里安装了olapR包(使用R-Server绑定),但它似乎没有提供对mrsdeploy的支持。
在linux上,我还有哪些其他选项可以从R访问多维数据集?我们听说过Revoscaler包,但不知道如何在多维数据集上使用它。也许我们可以将一个包含r-code的sql脚本发送到服务器,让sql-server执行r-code?不过,在这种方法上,我没有找到任何帮助。
任何帮助都是非常感谢的。
发布于 2019-05-31 14:44:29
在我们的例子中,它的工作方式是将olapR-code嵌入到RODBC-Code中的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)请注意domain\user中的四重反斜杠。
请注意,analysis services登录名不必与SQL登录名相同。
请注意,SQL用户必须具有执行外部脚本的权限:
GRANT EXECUTE ANY EXTERNAL SCRIPT TO [<user>]可以通过使用"with result sets“语句进一步改进,但它是有效的。
https://stackoverflow.com/questions/56324205
复制相似问题