需要过滤两个属性相同的维度

Jam*_*ove 3 sql-server-2008 ssas mdx

我已经混淆了场景,但总体思路仍然适用,所以如果模式看起来迟钝,它可能是在这个例子中......

假设我有一个 Student 维度,其中有两个属性 - Major 和 Minor(主题)。

我希望能够在 SSAS 中创建一个命名集,让我以某种方式被记录为主要和次要主题相同的学生......

维度看起来有点像这样:

Student
  - Major
  - Minor
Run Code Online (Sandbox Code Playgroud)

底层表看起来像这样:

StudentID  |  MajorKey  | MinorKey
1             50          51
2             45          101
3             58          56
4             45          45
Run Code Online (Sandbox Code Playgroud)

所以,实际上,我想要一个像这样的 MDX 表达式:

FILTER (
  [Student].allmembers,
  [Student].[Major] = [Student].[Minor]
)
Run Code Online (Sandbox Code Playgroud)

...但我不太清楚语法。有任何想法吗?

更新:

如果我使用这种语法...

FILTER (
  [Student].allmembers,
  [Student].[Major].Properties("Key") = [Student].[Minor].Properties("Key")
)
Run Code Online (Sandbox Code Playgroud)

然后它出于某种原因减慢了整个多维数据集的速度。每个度量(自然的或计算的)需要几分钟,而不是 1-2 秒的预缓存。

Jam*_*ove 5

我知道了!

基本上过滤器表达式是正确的,但我需要交叉连接我想要过滤的集合......

FILTER (
  CROSSJOIN([Student].[Major].[Major], [Student].[Minor].[Minor]),
  [Student].[Major].Properties("Key") = [Student].[Minor].Properties("Key")
)
Run Code Online (Sandbox Code Playgroud)

我知道我很快就回答了这个问题,但我今天花了 10 个小时的大部分时间:P