我刚刚继承了一些似乎执行以下操作的报告:
在数据集中,有一个调用
code.getmymdx(dateparam, anotherparam, blahblahparam,...)
然后在代码中出现了一系列循环,天知道如何构造随后的 MDX 语句。
到目前为止,我发现“查看”MDX 的唯一方法是将表达式放在相同的文本框中,即
= code.getmymdx(datep...
当然有更好的方法将东西传递给 SSAS 吗?
我刚刚继承了一些似乎执行以下操作的报告:
在数据集中,有一个调用
code.getmymdx(dateparam, anotherparam, blahblahparam,...)
然后在代码中出现了一系列循环,天知道如何构造随后的 MDX 语句。
到目前为止,我发现“查看”MDX 的唯一方法是将表达式放在相同的文本框中,即
= code.getmymdx(datep...
当然有更好的方法将东西传递给 SSAS 吗?
哇,他们说编码大师编写的代码会编写代码,但在这种情况下,我认为这是矫枉过正。Code.getmymdx() 函数可能强制执行合法的业务规则,但如果它只是递归构造 MDX 语句的一种奇特方式,那么对于聪明但无聊的编码人员来说,这听起来只是一个有趣的项目。由于您概述的原因,在实践中不是那么有用 - 您如何查看查询文本?
诚然,MDX 是一种很难编写的语言,但是 SSRS 中有一个内置工具可以直观地编写 MDX 查询。它还允许您创建计算成员,因此在深入了解 mdx 并进行手动编辑之前,这是一个很好的起点。创建到“Microsoft SQL Server Analysis Services”的数据源连接,然后当您创建数据集并编辑查询时,它将连接到多维数据集并让您拖放字段,以及创建参数、过滤器,正如我已经说过的计算。
在某些情况下,出于各种原因(例如,组合多个数据源),我对某些报告使用了带有内联 MDX 的存储过程。在深入研究并手动编辑它之前,我仍然经常从创建 MDX 的自动工具开始。保存存储过程的 SQL Server 具有到 SSAS 实例的链接服务器连接,并在动态 SQL 中使用 Openquery()。复杂但至少您存储的过程都在一个易于管理的地方。