【问题标题】:MDX MEMBER causing NON EMPTY to not filterMDX MEMBER 导致 NON EMPTY 无法过滤
【发布时间】: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


    【解决方案1】:

    您可以根据主要度量为您的成员指定 Null,例如:

    MEMBER
    [Measures].[Merch Level] AS
    IIf(IsEmpty([Measures].[Normal Measure]),null,[Merch].[Merch CHQ].CurrentMember.Level.Name)
    

    这样它只会在有数据时生成。如果您需要更精确,您可以更进一步并为空支票添加额外的尺寸。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-20
      相关资源
      最近更新 更多