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 秒的预缓存。
我知道了!
基本上过滤器表达式是正确的,但我需要交叉连接我想要过滤的集合......
FILTER (
CROSSJOIN([Student].[Major].[Major], [Student].[Minor].[Minor]),
[Student].[Major].Properties("Key") = [Student].[Minor].Properties("Key")
)
Run Code Online (Sandbox Code Playgroud)
我知道我很快就回答了这个问题,但我今天花了 10 个小时的大部分时间:P