web-dev-qa-db-ja.com

2つの属性が同じであるディメンションをフィルタリングする必要がある

私はシナリオを難読化しましたが、一般的な考え方は依然として適用されます。そのため、スキーマが遅れているように見える場合は、おそらくこの例にあります...

学生のディメンションがあり、その中にメジャーとマイナー(サブジェクト)という2つの属性があるとします。

SSASで名前付きセットを作成して、メジャーとマイナーで同じ主題を持っていると何らかの形で記録されている学生を提供できるようにしたい...

ディメンションは次のようになります。

Student
  - Major
  - Minor

基になるテーブルは次のようになります。

StudentID  |  MajorKey  | MinorKey
1             50          51
2             45          101
3             58          56
4             45          45

したがって、実際には、次のようなMDX式が必要です。

FILTER (
  [Student].allmembers,
  [Student].[Major] = [Student].[Minor]
)

...しかし、構文を完全に理解することはできません。何か案は?

更新:

この構文を使用すると...

FILTER (
  [Student].allmembers,
  [Student].[Major].Properties("Key") = [Student].[Minor].Properties("Key")
)

次に、何らかの理由でキューブ全体が遅くなります。 1から2秒のプリキャッシュではなく、すべてのメジャー(自然または計算)には数分かかります。

3
James Love

わかった!

基本的にフィルター式は正しかったが、フィルターしたいものをセットにクロスジョインする必要があった...

FILTER (
  CROSSJOIN([Student].[Major].[Major], [Student].[Minor].[Minor]),
  [Student].[Major].Properties("Key") = [Student].[Minor].Properties("Key")
)

私はこれに素早く答えましたが、今日はこれに10時間の大部分を費やしました:P

5
James Love