来自 PHP 的 MDX 查询

Posted

技术标签:

【中文标题】来自 PHP 的 MDX 查询【英文标题】:MDX query from PHP 【发布时间】:2011-10-28 15:47:13 【问题描述】:

鉴于我的底层关系数据库是 mysql,是否可以使用 php 作为宿主语言为 JasperServer 创建 MDX 查询?

我想要做的是将查询发送到 JasperServer 以创建 OLAP 视图并接收视图作为结果(最好是一些基于文本的格式,而不是图像或 PDF)。

我正在使用 JasperServer CE 4.2.1。

附带说明一下,考虑从您的应用程序进行 MDX 查询是否正确,就像您进行 SQL 查询一样?如果是,有没有办法使用 PHP 对任何 OLAP 服务器进行 MDX 查询?

编辑:添加了缺失的信息:我使用 MySQL 作为关系数据库服务器。

【问题讨论】:

我正在使用基于 Mondrian 的 Jaspersoft OLAP。 蒙德里安兼容 XMLA/MDX(参见 olap4j),但我现在不支持 php XMLA 库。 【参考方案1】:

您的 OLAP 服务器很可能支持 XMLA。并且 XMLA 只不过是具有特定格式的 SOAP。我不知道支持 XMLA 的 php 库,所以你必须努力:

最重要的工作是编组/解组 XML -> 该标准由 Microsoft 定义,几乎所有其他供应商都遵循 -> http://msdn.microsoft.com/en-us/library/ms187178%28v=sql.90%29.aspx

也许您可以根据自己的需要过度简化。

【讨论】:

【参考方案2】:

这看起来像是 Jasper 的技术支持的一个问题,但我认为您可以使用 SQLServer 的 OpenRowSet 将参数传递给 ConnectionString "PROVIDER=MSOLAP;Data Source=...etc."... 祝你好运! :)

【讨论】:

我忘了在我的问题中提到这一点,但我只能使用 MySql.. 所以我无法访问 SQLServer 功能:) [code]open('Provider=MSOLAP;初始目录=LocalHost;数据源=DataOLAP;'); echo '

连接成功

'."\n"; $mdx = "选择 On Columns... etc.etc.etc"; $objRst = new COM ("ADODB.Recordset") 或 die("无法启动 ADO"); $objRst->Open($mdx, $objConn, 0);而 (!$objRst->EOF) $objRst->movenext(); $objRst->close();未设置($objRst); $objConn->close();未设置($objConn); catch (Exception $e) echo $e->getMessage(); ?>
谢谢。至少现在我知道可以从 PHP 进行 MDX 查询。但遗憾的是没有使用 Jasper 和 MySQL Server。

以上是关于来自 PHP 的 MDX 查询的主要内容,如果未能解决你的问题,请参考以下文章

通过 Power Bi 中的企业网关查询 MDX 查询

如何保存 MDX 查询并下次使用?

SSAS - 将 MDX 报告参数传递给 MDX 数据集查询

具有两个或多个日期范围的 MDX 查询

MDX 查询 - 如何使用成员属性?

MDX 查询未给出正确答案