属性メンバのグループ化 (分離)
メンバ グループは、連続したディメンション メンバが含まれている、システムによって生成されたコレクションです。MicrosoftSQL ServerAnalysis Services では、分離と呼ばれるプロセスにより、1 つの属性のメンバを複数のメンバ グループに分割できます。階層内のレベルには、メンバ グループまたはメンバのどちらかが含まれています。メンバ グループが属するレベルをビジネス ユーザーが参照すると、メンバ グループの名前とセル値が表示されます。メンバ グループをサポートするために Analysis Services によって生成されたメンバはグループ化メンバと呼ばれ、通常のメンバと同じように表示されます。
属性の DiscretizationMethod プロパティは、メンバがどのようにグループ化されるかを定義します。
DiscretizationMethod 設定 |
説明 |
---|---|
None |
メンバを表示します。 |
Automatic |
データを最も適切に表現するメソッドとして、EqualAreas メソッドまたは Clusters メソッドのいずれかを選択します。 |
EqualAreas |
属性のメンバを、等しい数のメンバを含んでいるグループに分割します。 |
Clusters |
トレーニング データをサンプリングし、多数のランダム ポイントに初期化し、Expectation-Maximization (EM) クラスタ化アルゴリズムを何度か繰り返し実行して、属性のメンバをグループに分割します。 このメソッドには、どのような分布曲線に対しても使用できるという利点がありますが、処理時間は長くなります。 |
属性の DiscretizationNumber プロパティは、表示するグループの数を指定します。このプロパティが既定値の 0 に設定されている場合、Analysis Services では、DiscretizationMethod プロパティの設定に応じてデータのサンプリングまたは読み取りを行って、グループの数を判断します。
メンバ グループ内のメンバの並べ替え順は、属性の OrderBy プロパティを使用して制御します。この並べ替え順に基づいて、メンバ グループ内のメンバが順番に並べ替えられます。
メンバ グループの一般的な用途は、少数のメンバを含んでいるレベルから多数のメンバを含んでいるレベルにドリル ダウンすることです。ユーザーがレベル間でドリル ダウンできるようにするには、多数のメンバを含んでいるレベルの属性の DiscretizationMethod プロパティを、None から、前の表で説明したいずれかの分離メソッドに変更します。たとえば、Client ディメンションには、500,000 のメンバを持つ Client Name 属性階層が含まれています。この属性名を Client Groups に変更し、DiscretizationMethod プロパティを Automatic に設定すると、属性階層メンバ レベルのメンバ グループを表示できるようになります。
各グループの個別のクライアントにドリル ダウンするには、別の Client Name 属性階層を作成し、それを同じテーブル列にバインドします。次に、2 つの属性に基づく新しいユーザー階層を作成します。上位レベルは Client Groups 属性に基づき、下位レベルは Client Name 属性に基づきます。IsAggregatable プロパティは、両方の属性で True になります。このため、ユーザーは階層の (All) レベルを展開してグループ メンバを表示し、グループ メンバを展開して階層のリーフ メンバを表示できます。グループ レベルまたはクライアント レベルを非表示にするには、対応する属性の AttributeHierarchyVisible プロパティを False に設定します。
テンプレートの名前付け
メンバ グループ名は、メンバ グループを作成したときに自動的に生成されます。名前付けテンプレートを指定しない限り、既定の名前付けテンプレートが使用されます。この名前付け方法を変更するには、属性の NameColumn プロパティの Format オプションの名前付けテンプレートを指定します。属性の NameColumn プロパティに使用された列バインドの Translations コレクション内で指定された各言語に対し、異なる名前付けテンプレートを再定義できます。
Format 設定では、次の文字列式を使用して名前付けテンプレートを定義します。
<Naming template> ::= <First definition> [;<Intermediate definition>;<Last definition>]
<First definition> ::= <Name expression>
<Intermediate defintion> ::= <Name expression>
<Last definition> ::= <Name expression>
<First definition> パラメータは、分離メソッドによって生成される最初または唯一のメンバ グループのみに適用されます。省略可能なパラメータである <Intermediate definition> および <Last definition> が指定されていない場合は、その属性に対して生成されたすべてのメジャー グループに <First definition> パラメータが使用されます。
<Last definition> パラメータは、分離メソッドによって生成される最後のメンバ グループのみに適用されます。
<Intermediate bucket name> パラメータは、分離メソッドによって生成される最初または最後のメンバ グループ以外のすべてのメンバ グループに適用されます。生成されたメンバ グループが 2 つ以下の場合、このパラメータは無視されます。
<Bucket name> パラメータは、一連の変数を組み込むことのできる文字列式であり、メンバ グループの名前の一部としてメンバまたはメンバ グループの情報を表します。
変数 |
説明 |
---|---|
%{First bucket member} |
現在のメンバ グループに含まれる最初のメンバの名前です。 |
%{Last bucket member} |
現在のメンバ グループに含まれる最後のメンバの名前です。 |
%{Previous bucket last member} |
前のメンバ グループに割り当てられている最後のメンバの名前です。 |
%{Next bucket first member} |
次のメンバ グループに割り当てられる最初のメンバの名前です。 |
%{Bucket Min} |
現在のメンバ グループに割り当てられるメンバの最小値です。 |
%{Bucket Max} |
現在のメンバ グループに割り当てられるメンバの最大値です。 |
%{Previous Bucket Max} |
前のメンバ グループに割り当てられるメンバの最大値です。 |
%{Next Bucket Min} |
次のメンバ グループに割り当てられるメンバの最小値です。 |
既定の名前付けテンプレートは "%{First bucket member} - %{Last bucket member}" であり、以前のバージョンの Analysis Services と互換性があります。
注意 |
---|
名前付けテンプレートにリテラル文字としてセミコロン (;) を含めるには、その前にパーセント (%) 文字を付けます。 |
例
次の文字列式を使用すると、Adventure Works DW サンプル Analysis Services データベース内の Customer ディメンションの Yearly Income 属性 (メンバのグループ化を使用する属性) を分類できます。
"Less than %{Next Bucket Min};Between %{First bucket member} and %{Last bucket member};Greater than %{Previous Bucket Max}"
既存のメンバ グループへの新しいメンバの追加
新しいメンバをディメンションに追加すると、そのメンバの値が現在のメンバ グループ レイアウトと比較され、適切なメンバ グループに割り当てられます。
メンバが前のメンバ グループの最後のメンバと次のメンバ グループの最初のメンバの間に挿入される場合、新しいメンバは前のメンバ グループの最後のメンバになります。
分離された属性があるディメンションの更新
ディメンションを処理するときは、完全更新 (ProcessFull) を使用した場合にのみ、分離された属性が再分離されます。属性を再分離するには、ディメンションの完全更新を実行する必要があります。分離された属性のディメンション テーブルが更新され、増分更新 (ProcessAdd) を使用してディメンションを処理した場合、分離された属性は再分離されません。新しいバケットの名前および子は同じままです。ディメンションの処理の詳細については、「処理 (Analysis Services - 多次元データ)」を参照してください。
使用法の制限
メンバ グループは、階層の最上位または最下位レベルに作成できません。ただし、作成する必要がある場合は、1 つのレベルを追加して、メンバ グループを作成するレベルが最上位または最下位レベルにならないようにします。追加したレベルは、Visible プロパティに False を設定して非表示にできます。
メンバ グループは、階層の連続する 2 つのレベルには作成できません。
メンバ グループは、ROLAP ストレージ モードを使用するディメンションに対してはサポートされません。
メンバ グループが含まれているディメンションのディメンション テーブルが更新されると、そのディメンションが完全に処理されて、メンバ グループの新規セットが生成されます。新規のメンバ グループと旧メンバ グループの名前と子は異なる場合があります。