ディメンション - 概要
適用対象: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
Microsoft SQL Server SQL Server Analysis Services ディメンションはすべて、データ ソース ビューのテーブルまたはビューの列に基づく属性のグループです。 ディメンションはキューブとは独立して存在し、複数のキューブで使用でき、1 つのキューブで複数回使用でき、SQL Server Analysis Services インスタンス間でリンクできます。 キューブとは無関係に存在するディメンションをデータベース ディメンションといい、キューブ内のデータベース ディメンションとデータベース ディメンションのインスタンスをキューブ ディメンションといいます。
スター スキーマ デザインに基づくディメンション
ディメンションの構造は、主に、基になるディメンション テーブルの構造によって決まります。 最も単純な構造をスター スキーマといいます。このスキーマでは、各ディメンションが、主キーと外部キーのリレーションシップによってファクト テーブルに直接リンクされている 1 つのディメンション テーブルに基づいています。
次の図は、FactResellerSales ファクト テーブルが DimReseller と DimPromotion の 2 つのディメンション テーブルに関連する AdventureWorksDW2012 サンプル データベースのサブセクションを示しています。 FactResellerSales ファクト テーブルの ResellerKey 列は、DimReseller ディメンション テーブルの ResellerKey 主キー列との外部キーリレーションシップを定義します。 同様に、FactResellerSales ファクト テーブルの PromotionKey 列は、DimPromotion ディメンション テーブルの PromotionKey 主キー列との外部キー リレーションシップを定義します。
スノーフレーク スキーマ デザインに基づくディメンション
ディメンションを定義するには複数のテーブルからの情報を必要とするため、より複雑な構造が必要になることがよくあります。 この構造は、スノーフレーク スキーマといいます。このスキーマでは、各ディメンションが、最終的には主キーと外部キーのリレーションシップによってファクト テーブルにリンクされる、相互にリンクされた複数のテーブルの列の属性に基づいています。 たとえば、次の図は、 AdventureWorksDW サンプル プロジェクトの Product ディメンションを完全に記述するために必要なテーブルを示しています。
製品を完全に記述するには、製品のカテゴリとサブカテゴリを Product ディメンションに含める必要があります。 ただし、その情報は DimProduct ディメンションのメイン テーブルに直接存在しません。 DimProduct から DimProductSubcategory への外部キーリレーションシップ (DimProductCategory テーブルとの外部キーリレーションシップ) により、Product ディメンションに製品カテゴリとサブカテゴリの情報を含めることができます。
スノーフレーク スキーマと参照リレーションシップの対比
状況によっては、スノーフレーク スキーマを使用して 1 つのディメンション内の属性を複数のテーブルから定義するか、2 つの異なるディメンションを定義して、そのディメンション間の参照ディメンション リレーションシップを定義するか、選択が必要になる場合があります。 次の図は、このようなシナリオを示しています。
前の図の FactResellerSales ファクト テーブルには、 DimGeography ディメンション テーブルとの外部キーリレーションシップがありません。 ただし、 FactResellerSales ファクト テーブルには DimReseller ディメンション テーブルとの外部キーリレーションシップがあり、 DimGeography ディメンション テーブルとの外部キーリレーションシップがあります。 各リセラーに関する地理情報を含む Reseller ディメンションを定義するには、 DimGeography ディメンション テーブルと DimReseller ディメンション テーブルからこれらの属性を取得する必要があります。 ただし、SQL Server Analysis Servicesでは、2 つの異なるディメンションを作成し、2 つのディメンション間に参照ディメンションリレーションシップを定義することでメジャー グループにリンクすることで、同じ結果を得ることができます。 参照ディメンション リレーションシップの詳細については、「 ディメンション リレーションシップ」を参照してください。
このシナリオで参照ディメンション リレーションシップを使用することの利点の 1 つとして、1 つの地理ディメンションを作成した後、追加のストレージ領域を必要とすることなく、この地理ディメンションに基づいて、複数のキューブ ディメンションを作成できることが挙げられます。 たとえば、地理キューブ ディメンションの 1 つを販売店ディメンションにリンクし、別の地理キューブ ディメンションを顧客ディメンションにリンクすることができます。 関連トピック:ディメンション リレーションシップ、 参照リレーションシップの定義、および参照されるリレーションシップのプロパティ
ディメンションの処理
ディメンションを作成した後、ディメンション内の属性および階層のメンバーを表示するには、あらかじめこのディメンションを処理しておく必要があります。 ディメンションの構造が変更されたり、その基になるテーブルの情報が更新された場合、ディメンションをもう一度処理しないと、変更内容を表示できません。 構造の変更後にディメンションを処理する際は、そのディメンションが含まれたキューブも処理する必要があります。これを行わないと、キューブを表示できません。
セキュリティ
階層、レベル、メンバーなど、ディメンションのすべての下位オブジェクトは、SQL Server Analysis Servicesのロールを使用してセキュリティ保護されます。 ディメンションのセキュリティは、そのディメンションを使用するデータベース内のすべてのキューブ、または特定のキューブにのみ適用できます。 ディメンションのセキュリティの詳細については、「ディメンション に対するアクセス許可の付与 (Analysis Services)」を参照してください。