Я хочу получить доступ к Olap-Cube из R в Linux. В частности, у меня есть SQL-Server 2016 со службами Analysis Services и кубами, к которым я хотел бы получить доступ.
Мы обращались к кубам из R в Windows, используя Microsoft R и пакет olapR. И хотя существует Linux-версия Microsoft-R, она не включает пакет olapR.
Мы установили R-Services для нашего SQL-сервера. И мы установили там пакет olapR (используя привязку R-Server), но похоже, что он не поддерживает mrsdeploy.
Какие еще у меня есть варианты доступа к кубам из R в Linux? Мы слышали о пакете Revoscaler, но не знаем, как его использовать на кубах. Может быть, мы могли бы отправить sql-скрипт, содержащий r-код, на сервер, и заставить sql-сервер выполнить r-код? Однако я не нашел никакой помощи в этом подходе.
Любая помощь приветствуется.





В нашем случае он работает, встраивая olapR-код в 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)
Обратите внимание на четверную обратную косую черту в домене\пользователе.
Обратите внимание, что логин службы анализа не обязательно совпадает с логином SQL
Обратите внимание, что пользователь SQL должен иметь права на выполнение внешних скриптов:
GRANT EXECUTE ANY EXTERNAL SCRIPT TO [<user>]
Его можно было бы еще улучшить, используя оператор «с наборами результатов», но он работает.