Как получить доступ к Olap-Cubes из R в Linux - PullRequest
1 голос
/ 27 мая 2019

Я хочу получить доступ к Olap-Cube из R в Linux. В частности, у меня есть SQL-Server 2016 со службами аналитики и кубами, к которым я хотел бы получить доступ.

Мы обращались к кубам из R на окнах с помощью Microsoft R и olapR-пакета. И хотя существует версия microsoft-R для Linux, в нее не входит пакет olapR.

Мы установили R-Services для нашего SQL-сервера. И мы установили там пакет olapR (используя привязку R-Server), но, похоже, он не поддерживает mrsdeploy.

Какие еще есть варианты доступа к кубам из R в Linux? Мы слышали о пакете Revoscaler, но не знаем, как использовать его на кубах. Может быть, мы могли бы опубликовать на сервере sql-скрипт, содержащий r-код, и заставить sql-сервер выполнить r-код? Я не нашел никакой помощи в этом подходе.

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 31 мая 2019

В нашем случае это работает, встраивая 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)

Обратите внимание на четырехкратную обратную косую черту в домене \ user.

Обратите внимание, что логин сервисов анализа не обязательно совпадает с логином SQL

Обратите внимание, что пользователь SQL должен иметь права на выполнение внешних сценариев:

GRANT EXECUTE ANY EXTERNAL SCRIPT TO [<user>]

Его можно улучшить еще больше, если использовать оператор «с наборами результатов», но он работает.

...