0

我是 MDX 的新手。我了解 MDX 是一种查询语言,而不是一种数据转换语言。但是,我也知道这种区别在一定程度上是没有意义的。转换和报告之间没有明确的界限,每种查询语言都能够进行某种转换。精通查询语言需要知道哪些转换是合理的,哪些需要重新设计底层模式。

从我对 MDX 的了解来看,它显然具有设计用于在维度内创建计算成员的功能。然而,除此之外,我不清楚它的转换能力。谁能提供一个简明的总结,说明 MDX 可以合理地进行哪些类型的转换?

我不打算让这个问题仅限于我的特定报告挑战。但是,通过描述我的项目,我可以说明一些我感兴趣的转换类型。所以,这里是我正在做的事情的描述:

我需要使用 MDX 创建一些库存和销售报告。我正在使用 Microsoft SQL Server 2008 Analysis Services。数据被组织成三个不同的立方体:现有库存、在途库存和销售。我的报告要求以多种方式转换数据。例如:

1) 我需要使用 4-4-5 日历的规则从“周”属性推断出“月”属性。我相当肯定这可以用 MDX 优雅地完成。

2)我需要从“月份”属性中推断出“日历月份”维度。我相信这可以通过 MDX 来完成,但我不确定是否有一个优雅的解决方案或一个应该避免的有利于架构重新设计的杂乱无章。

3)我需要从“仓库”维度推断出“区域”维度。我没有看到任何证据表明这可以通过 MDX 以一种优雅的方式完成。

4) 我需要将总库存计算为现有库存加上在途库存。从网上搜索,似乎可以查询两个不同的多维数据集,但不鼓励架构重新设计,但水仍然很浑浊。

4

1 回答 1

0

我想说您的大部分需求都可以使用 Analysis Services 来完成,但不一定要使用 MDX。相反,它们将在立方体设计中完成。这通常使用 GUI 完成,它是称为 BIDS(商业智能开发工作室)的 Visual Studio。如果您绝对想使用一种语言,则可以使用 XMLA,这是 BIDS 与 Analysis Services 服务器进行通信的方式。但这仍然不是 MDX,并且没有很好的文档记录,因此难以学习。您可以使用 .net 和 AMO,但最简单的方法是 BIDS 中的 GUI。

您的一些要求将在设计多维数据集所基于的关系表中得到最佳实施。您的前三个要求最好在维度表中实现,然后仅在多维数据集定义中的维度对象中使用。对于第四个要求,您是对的,这可以很容易地在立方体计算脚本中的计算度量中实现。这确实是 MDX。

理论上,您也可以在 MDX 中以某种方式实现前三个需求。但这会很复杂,难以维护并且性能很差。MDX 只是不是为这种类型的需求而设计的。

于 2013-10-08T17:06:14.453 回答