2

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) はディメンションにないため、結果は正しくありません。このシナリオで正しい結果を得るにはどうすればよいですか?

4

2 に答える 2