Linux 如何从 R 访问 Olap-Cubes

How to access Olap-Cubes from R on Linux

我想在 Linux 上从 R 访问 Olap-Cube。具体来说,我有一个 SQL-Server 2016,其中包含我想要访问的 Analysis Services 和多维数据集。

我们一直在 windows 使用 Microsoft R 和 olapR-package 从 R 访问多维数据集。虽然有 linux 版本的 microsoft-R,但它不包含 olapR-package。

我们已经为 SQL-Server 安装了 R-Services。我们确实在那里安装了 olapR 包(使用 R-Server 绑定),但它似乎不支持 mrsdeploy。

在 linux 上,我还有哪些其他选项可以从 R 访问多维数据集?我们听说过 Revoscaler Package,但不知道如何在 Cubes 上使用它。也许我们可以 post 一个包含 r-code 的 sql-script 到服务器并让 sql-server 执行 r-code?不过,我没有找到任何关于这种方法的帮助。

感谢任何帮助。

在我们的例子中,它通过将 olapR-code 嵌入 T-SQL 和 RODBC-Code 中来工作。

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 中的四重反斜杠。

请注意,分析服务登录不一定与SQL-login

相同

请注意 SQL 用户必须有权执行外部脚本:

GRANT EXECUTE ANY EXTERNAL SCRIPT TO [<user>]

可以通过使用 "with result sets" 语句进一步改进它,但它确实有效。