属性メンバの自動的なグループ化
キューブを表示するとき、通常は、ある属性階層のメンバと別の属性階層のメンバとを多次元化します。たとえば、都市別、製品別、または性別ごとに顧客の売上をグループ化して表示します。このとき、属性の種類によっては、属性階層内のメンバ分布に基づいて、属性が自動的にグループ化されるように Microsoft SQL Server 2005 Analysis Services (SSAS) を設定しておくと便利です。たとえば、顧客の年収に基づいてグループが作成されるように Analysis Services を設定できます。このようにグループ化した場合、属性階層を表示したときには、メンバそのものではなく、グループの名前と値が表示されます。ユーザーに提示されるレベル数が限定されるので、分析が容易になります。
DiscretizationMethod プロパティは、Analysis Services にグループ化を実行させるかどうか、どのような種類のグループ化を実行するかを指定します。既定では、Analysis Services はグループ化を実行しません。自動グループ化を有効にすると、属性の構造に基づいて、最適なグループ化の方法が Analysis Services によって自動的に判断されます。また、次の一覧からいずれかのグループ化アルゴリズムを選択してグループ化の方法を指定することもできます。
- EqualAreas
ディメンション メンバの母集団全体がすべてのグループに均等に分散するように、グループ範囲が作成されます。
- Clusters
K-Means クラスタリング法とガウス分布を使用し、入力値に対して 1 次元クラスタリングが実行されます。このオプションは、数値列でのみ使用できます。
グループ化方法を指定したら、DiscretizationBucketCount プロパティでグループの数を指定します。詳細については、「属性メンバのグループ化 (分離)」を参照してください。
このトピックの実習では、Customer ディメンションの年収値、Employees ディメンションの病気休暇時間、および Employees ディメンションの休暇時間でグループ化を行います。その後、Analysis Services Tutorial キューブを処理して表示し、メンバ グループの効果を確認します。最後に、メンバ グループのプロパティを変更し、グループの種類を変更した場合の影響を確認します。
Customer ディメンションにおける属性階層メンバのグループ化
Customer ディメンションの属性階層メンバをグループ化するには
ソリューション エクスプローラで、[ディメンション] フォルダの Customer をダブルクリックし、Customer ディメンションのディメンション デザイナを開きます。
[データ ソース ビュー] ペインで Customer テーブルを右クリックし、[データの探索] をクリックします。
YearlyIncome 列の値の範囲に注目してください。メンバをグループ化しない限り、これらの値は Yearly Income 属性階層のメンバになります。
[DimCustomer テーブルの探索] タブを閉じます。
[属性] ペインで、[Yearly Income] を選択します。
[プロパティ] ウィンドウで、DiscretizationMethod プロパティの値を Automatic に変更し、DiscretizationBucketCount プロパティの値を 5 に変更します。
次の図は、変更後の Yearly Income プロパティを示しています。
Employee ディメンションにおける属性階層メンバのグループ化
Employee ディメンションの属性階層メンバをグループ化するには
Employee ディメンションのディメンション デザイナに切り替えます。
[データ ソース ビュー] ペインで Employee テーブルを右クリックし、[データの探索] をクリックします。
SickLeaveHours 列および VacationHours 列の値に注目してください。
[DimEmployee テーブルの探索] タブを閉じます。
[属性] ペインで、[Sick Leave Hours] を選択します。
[プロパティ] ウィンドウで、DiscretizationMethod プロパティの値を Clusters に変更し、DiscretizationBucketCount プロパティの値を 5 に変更します。
[属性] ペインで、[Vacation Hours] を選択します。
[プロパティ] ウィンドウで、DiscretizationMethod プロパティの値を Equal Areas に変更し、DiscretizationBucketCount プロパティの値を 5 に変更します。
変更した属性階層の表示
変更した属性階層を表示するには
Business Intelligence Development Studio で、[ビルド] メニューの [Analysis Services Tutorial の配置] をクリックします。
配置が正常に完了したら、Analysis Services Tutorial キューブのキューブ デザイナに切り替え、[ブラウザ] タブのツール バーで [再接続] をクリックします。
[データ] ペインの行フィールド領域から Employees 階層のすべてのレベルを削除し、[データ] ペインからすべてのメジャーを削除します。
[データ] ペインのデータ領域に Internet Sales-Sales Amount メジャーを追加します。
メタデータ ペインで Product ディメンションを展開します。次に、Product Model Lines ユーザー階層を、データ ペインの**[ここに行のフィールドをドロップします]** 領域までドラッグします。
メタデータ ペインで Customer ディメンションを展開し、Demographic 表示フォルダを展開します。次に、Yearly Income 属性階層を [ここに列のフィールドをドロップします] 領域までドラッグします。
Yearly Income 属性階層のメンバが 6 つのカテゴリにグループ化されました。この中には、年収が不明である顧客への売上グループも含まれています。
列領域から Yearly Income 属性階層を削除し、データ ペインの Internet Sales-Sales Amount メジャーを削除します。
Reseller Sales-Sales Amount メジャーをデータ領域に追加します。
メタデータ ペインで [Employee] を展開し、さらに [Organization] を展開します。次に、[Sick Leave Hours] を右クリックし、[列領域に追加] をクリックします。
2 つのグループのうちの 1 つは、すべて従業員によって売り上げられた売上データです (売上のない 3 つのグループを確認するには、データ領域を右クリックし、[空のセルを表示] をクリックします)。病欠時間が 32 ~ 42 時間の従業員は、病欠時間が 20 ~ 31 時間の従業員よりも大幅に売り上げていることもわかります。
次の図は、従業員の病欠時間別の売上ディメンションを示します。
データ ペインの列領域から Sick Leave Hours 属性階層を削除します。
Vacation Hours をデータ ペインの列領域に追加します。
EqualAreas グループ化方法に基づいて、2 つのグループが表示されます。他の 3 つのグループはデータ値がないため、表示されません。
グループ化のプロパティの変更と、その影響の確認
グループ化のプロパティを変更し、その変更の影響を確認するには
Employee ディメンションのディメンション デザイナに切り替え、[属性] ペインで [Vacation Hours] を選択します。
[プロパティ] ウィンドウで、DiscretizationBucketCount プロパティの値を 10 に変更します。
BI Development Studio で、[ビルド] メニューの [Analysis Services Tutorial の配置] をクリックします。
配置が正常に完了したら、Analysis Services Tutorial キューブのキューブ デザイナに戻ります。
[ブラウザ] タブで [再接続] をクリックし、グループ化の方法を変更した場合の影響を確認します。
Vacation Hours 属性メンバのグループが 3 つあります。各メンバに製品の売上の値が含まれています (他の 7 つのグループには、売上データのあるメンバが存在しません)。