【问题标题】:Dimension hierarchy not showing all data维度层次结构未显示所有数据
【发布时间】:2013-05-17 11:23:42
【问题描述】:

我有一个用户维度,它代表了许多商店的层次结构。例如,商店分为国家 -> 地区 -> 城镇/村庄 -> 实际商店。所以从层次结构来看,就是Level1、Level2、Level3、Level4等。

现在奇怪的是,如果我在 WHERE 子句中执行 MDX 查询和过滤,按层次结构,对于特定用户没有数据显示。但是,如果我执行完全相同的 MDX,而不是按层次结构过滤,而是按属性过滤,则会显示记录。

值得一提的是,用户层次结构 [UserIdHierarchy] 包含以下成员的层次结构

  1. [UserLevel1Id]
  2. [UserLevel2Id]
  3. [UserLevel3Id]
  4. [UserLevel4Id]
  5. [UserLevel5Id]

这是两种情况,应该返回完全相同的结果...

使用用户层次结构过滤Where子句:

在哪里 ( DESCENDANTS([Dim User].[UserIdHierarchy].&[#12345],0, self) )

无用户层次结构的Where子句过滤:

在哪里 ( DESCENDANTS([Dim User].[UserLevel3Id].&[#12345],0, self) )

为什么两个过滤器不为这个特定用户提供相同的数据?

【问题讨论】:

  • [Dim User].[UserIdHierarchy].&[#12345] 如果您在一般 mdx 查询中使用它,它本身就是有效成员?
  • 当我浏览 SSAS 多维数据集以查看层次结构时,成员就在那里。所以是的,它是一个有效的成员。我无法理解或看到问题,当通过层次结构访问时它没有找到成员,但是当我通过特定级别属性访问成员时 - 数据出现了。
  • 如果我理解的话,如果你使用这个:[Dim User].[UserIdHierarchy].[UserLevel3Id].&[#12345] 它会返回数据,不是吗? [Dim User].[UserIdHierarchy].&[#12345] 这是唯一名称的有效缩写,但它是一个缩写,所以我将尝试使用完整的唯一名称。
  • 不,如果我从层次结构中通过,成员将不会出现。所以即使是这样:[Dim User].[UserIdHierarchy].[UserLevel3Id].&[#12345]。要获得会员,我需要这样做没有意义:[Dim User].[UserLevel3Id].&[#12345]

标签: ssas mdx business-intelligence


【解决方案1】:

原因是用户层次结构使用的是历史方法。因此,当用户有多个层次结构(如下所示)时,由于某种奇怪的原因,MDX 会变得混乱并与维度层次结构中的第一项保持一致。下面,我展示了用户注册到系统后的 3 种不同设置。解决我的问题,而不是仅仅做

[Dim User].[UserIdHierarchy].&[#12345]

我在 where 子句中过滤所有用户成员,即

{[Dim User].[UserIdHierarchy].[UserLevel1Id].&[#12345],
[Dim User].[UserIdHierarchy].[UserLevel2Id].&[#12345],
[Dim User].[UserIdHierarchy].[UserLevel3Id].&[#12345]}

然后对 FACT 数据进行实际过滤。这样,我包含了用户层次结构中与我的用户匹配的所有成员的所有数据——在本例中为 #12345。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多