如何在Linux上从R访问Olap-Cube

时间:2019-05-27 10:25:14

标签: r linux olap-cube

我想在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代码?我在这种方法上没有发现任何帮助。

感谢您的帮助。

1 个答案:

答案 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>]

可以通过使用“带有结果集”语句对其进行一些改进,但是它可以工作。