首页 > 解决方案 > 如何在 RMDX 中格式化到分析服务器的连接字符串?

问题描述

提前很抱歉问了一个非常基本/新手的问题,但我正在尝试使用 RMDX 从 RStudio 的 Microsoft 分析服务器中查询一些数据。RMDX 是我能够成功安装的唯一软件包。我也尝试添加 X4R w install_github 但遇到了一些困难(无论如何,X4R 似乎也使用 URL 作为连接字符串),并且我尝试将 olapR 从我的 RClient 库添加到我的 R 3.5.2 库,但我收到一个关于它是为具有不同内部结构的 R 版本制作的错误。

RMDX 将 URL 作为连接字符串,但我不知道如何格式化数据连接......正确,我猜?我之前在 R 中只使用了带有 RODBC 的 sql,并且通过 ODBC 数据源管理器设置数据源不适用于数据仓库。

显然我缺少很多基础知识/理论/基础知识,所以我只是在黑暗中拍摄,但我尝试过“localhost//[server-name]”、“ https://[server-name ” ] ”并复制用于连接到我要查询的同一个数据仓库的某些 Microsoft bi 仪表板的连接字符串,但没有任何工作。有谁知道如何解决这个问题,或者任何人都可以建议从 RStudio 执行 MDX 查询的替代方法?谢谢!

标签: rmdx

解决方案


在像您一样尝试了类似的路线之后-我最终编写了一个 powershell 脚本,该脚本通过其“URL”连接到 MS SSAS 或 OLAP Cube(通常您将使用其中提到的“msmdpump.dll”的 URL 字符串某处 - 通常在它的末尾 - 作为 $con 或连接字符串)。之后(更准确地说,在 ps 脚本中它是一个模块)我严重依赖AdomdClient对象及其属性,类似于这些行

#establish SSAS ADOMD Client and open connection
[System.Reflection.Assembly]::LoadWithPartialName(\"Microsoft.AnalysisServices.AdomdClient\") | Out-Null; 

\

echo 'Connecting to Database/Cube via Powershell module!'
$con = new-object Microsoft.AnalysisServices.AdomdClient.AdomdConnection($connectionString)
$con.Open() 
$command = new-object Microsoft.AnalysisServices.AdomdClient.AdomdCommand($MDXquery, $con)
$dataAdapter = new-object Microsoft.AnalysisServices.AdomdClient.AdomdDataAdapter($command)
$ds = new-object System.Data.DataSet
#fetch data
echo 'fill data container w cube data'
$dataAdapter.Fill($ds)
$con.Close(); 
.... 

之后,我通过system2(command = "powershell",...)在 R 中使用各种连接字符串、MDX(查询)等参数调用此 ps 脚本,将结果作为 csv 文件保存在临时文件夹中,然后再次将其加载回我的 R 会话中。

希望有帮助。


推荐阅读