SSAS は初めてで、解決できない問題があります。2 つのテーブルから始めましょう。これは、アカウントとその値を含むファクト テーブルです。
Fact Table
==============
Account Value
==============
1 10
2 20
3 30
次に、ディメンションをフィードするアカウント階層テーブルがあります。このディメンションには、アカウント階層が含まれています。アカウントはグループにグループ化され、特定のアカウントを複数の異なるグループ内に何度でも配置できます。同じグループ内で同じアカウントを 2 回以上持つことはできません。HideMemberIf
パフォーマンス上の理由から、プロパティを使用して階層が自然化されています (これは正しい用語ですか?) 。グループ自体には値がなく、子の集合体から値を取得します。実際の階層には 16 レベルがありますが、簡単にするために 4 レベルのみの例を次に示します。
Dim Groups-Accounts
========================================
Level 0 Level 1 Level 2 Level 3
========================================
Group 0 Group 0 Group 0 Group 0
Group 0 Group 1 Group 1 Group 1 (empty group)
Group 0 Group 2 Group 2 Group 2
Group 0 Group 2 Account 1 Account 1
Group 0 Group 3 Group 3 Group 3
Group 0 Group 3 Account 2 Account 2
Group 0 Group 3 Account 3 Account 3
Group 0 Group 4 Group 4 Group 4
Group 0 Group 4 Group 5 Group 5
Group 0 Group 4 Group 5 Account 2
Group 0 Group 4 Group 5 Account 3
Group 6 Group 6 Group 6 Group 6 (empty group)
ディメンションをナビゲートすると、次のような結果になります。
======================================
Level 0 Level 1 Level 2 Level 3
======================================
Group 0
Group 1
Group 2
Account 1
Group 3
Account 2
Account 3
Group 4
Group 5
Account 2
Account 3
Group 6
目標は、帰化階層の最後のレベル (この場合はレベル 3) をファクト テーブルの適切な値と関連付けることです。
=================================================
Level 0 Level 1 Level 2 Level 3 Value
=================================================
Group 0 110
Group 1 0
Group 2 10
Account 1 10
Group 3 50
Account 2 20
Account 3 30
Group 4 50
Group 5 50
Account 2 20
Account 3 30
Group 6 0
問題?ディメンションを処理するとき、SSAS はErrors in the OLAP storage engine: A duplicate attribute key has been found when processing: Table: 'CT_DimGroupsAccounts', Column: 'Level_3', Value: 'Account 2'. The attribute is 'Level_3'.
. アカウント 2 とアカウント 3 がレベル 3 属性で複製されているため、これは当てはまります。SSAS に重複キー エラーを無視するように指示すると、処理は正常に終了します。ただし、結果のキューブをナビゲートすると、結果は次のようになります。
=================================================
Level 0 Level 1 Level 2 Level 3 Value
=================================================
Group 0 60
Group 1 0
Group 2 10
Account 1 10
Group 3 50
Account 2 20
Account 3 30
Group 4 0
Group 5 0
Group 6 0
重複したキー (グループ 5 の子としてのアカウント 2 と 3) はディメンションにないため、結果は正しくありません。このシナリオで正しい結果を得るにはどうすればよいですか?