【发布时间】:2013-04-04 16:49:54
【问题描述】:
我正在使用 MDX 查询来提取信息以支持一组报告。报告需要高度详细的信息,因此需要一些时间来生成。为了加快访问时间,我们提取我们需要的数据并将其存储在一个平面 Oracle 表中,然后连接到 Excel 中的表。这使得报告在几秒钟内而不是几分钟内刷新。
以前,MDX 由部门为 100 个部门生成和运行,然后为许多其他过滤器生成和运行。所有这些都是在 VB.Net 中完成的。对过滤器的要求已经发展到这种方法不可持续的地步(无论如何可能都不是最好的方法)。
我已将整个数据集构建到一个完美运行的 MDX 查询中。我交叉加入的一个集合包括来自三个不同层次结构的成员,如下所示:
(
Descendants([Merch].[Merch CHQ].[All], 2),
Descendants([Merch].[Merch CHQ].[All], 3),
[Merch].[Merch CHQ].[Department].&[1].Children
)
对我来说问题在于我们的层次结构(我无法更改),每个组(第一项)和每个部门(第二项)的命名结构都相同,即 15-DeptName 并且工作混乱与。
为了解决这个问题,我添加了一个成员:
MEMBER
[Measures].[Merch Level] AS
(
[Merch].[Merch CHQ].CurrentMember.Level.Name
)
返回成员是什么类型并且它工作得很好。
问题在于它会为每个成员更新,因此没有任何行被 NON BLANK 过滤,而不是 65k 行,我有 130k 行,这会损害我的访问性能。
是否可以更改我的查询以仍然过滤掉没有使用 IIF 来检查每个测量是否为空的非空白?
【问题讨论】:
标签: sql-server ssas mdx