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" 语句进一步改进它,但它确实有效。
我想在 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" 语句进一步改进它,但它确实有效。