パーティション (Analysis Services - 多次元データ)

パーティションは、メジャー グループ データの一部を入れるコンテナです。パーティションは、MDX クエリからは見えません。メジャー グループに定義されたパーティションの数にかかわらず、すべてのクエリでメジャー グループの内容全体が反映されます。パーティションのデータの内容は、パーティションのクエリ バインドと、スライス式によって定義されます。

簡単な Partition オブジェクトは、基本情報、スライス定義、集計デザインなどで構成されます。基本情報には、パーティションの名前、ストレージ モード、処理モードなどが含まれます。スライス定義は、組またはセットを指定する MDX 式です。スライス定義には、StrToSet MDX 関数と同様の制限があります。CONSTRAINED パラメータを指定したスライス定義では、ディメンション、階層、レベルとメンバの名前、キー、一意の名前やキューブ内のその他の名前付きオブジェクトを使用できますが、MDX 関数は使用できません。集計デザインは、複数のパーティションで共有できる集計定義のコレクションです。親キューブの集計デザインが既定値となります。

MicrosoftSQL ServerAnalysis Services では、キューブのメジャー グループのデータおよび集計を管理、格納するために、パーティションが使用されます。各メジャー グループには 1 つ以上のパーティションがあります。このパーティションはメジャー グループを定義する際に作成されます。メジャー グループの新しいパーティションを作成すると、新しいパーティションはメジャー グループの既存のパーティション セットに追加されます。メジャー グループには、すべてのパーティションに含まれているデータを結合したものが反映されます。したがって、メジャー グループのあるパーティションのデータと、メジャー グループの別のパーティションのデータは互いに排他的なものとなるようにし、メジャー グループ内のデータが複数回反映されることのないようにする必要があります。メジャー グループの元のパーティションは、キューブのデータ ソース ビューにある 1 つのファクト テーブルに基づいています。メジャー グループに複数のパーティションがある場合、各パーティションはデータ ソース ビューまたはキューブの基になるリレーショナル データ ソースで別のテーブルを参照できます。各パーティションをテーブル内の別々の行に制限すれば、メジャー グループの複数のパーティションが同じテーブルを参照することができます。

パーティションは、特に大規模なキューブを管理する強力かつ柔軟な手段です。たとえば、売り上げ情報を格納するキューブには、過去の年度ごとのデータに使用するパーティションと、今年度の各四半期のデータに使用するパーティションを格納できます。現在の情報がキューブに追加される場合は現四半期のパーティションを処理する必要があります。処理データが少ないほど処理時間は短くなるので、処理パフォーマンスも向上します。年度末には、4 つの四半期パーティションを、その年度の単一のパーティション、および新年度の第 1 四半期について作成される新しいパーティションにマージできます。また、この新規パーティション作成プロセスは、データ ウェアハウス読み込みおよびキューブ処理手順の一環として自動化できます。

パーティションは、キューブのビジネス ユーザーには表示されません。ただし、管理者は、パーティションの構成、追加、または削除を行うことができます。各パーティションは、個別のファイル セットに格納されます。各パーティションの集計データは、そのパーティションが定義されている Analysis Services インスタンス、別の Analysis Services インスタンス、またはそのパーティションの変換元データを提供するために使用される同じデータ ソースに格納できます。パーティションを使用すると、キューブの変換元データと集計データを複数のハード ディスク ドライブと複数のサーバー コンピュータに分散できます。中規模から大規模のキューブでは、パーティションによってクエリのパフォーマンスや読み込みのパフォーマンスが大幅に向上し、キューブのメンテナンスが容易になります。リモート パーティションの詳細については、「リモート パーティション」を参照してください。

各パーティションのストレージ モードは、メジャー グループの他のパーティションとは別個に構成できます。各パーティションは、変換元データの場所、ストレージ モード、プロアクティブ キャッシュ、集計デザインを自由に組み合わせて格納できます。リアルタイム OLAP およびプロアクティブ キャッシュのオプションを使用すると、パーティションをデザインするときにクエリの速度と遅延のバランスを取ることができます。ストレージ オプションは、関連するディメンションだけでなく、メジャー グループのファクトにも適用できます。この柔軟性により、ユーザーのニーズに応じてキューブの格納方法を設計することが可能になります。詳細については、「パーティションのストレージ モードおよび処理」、「集計と集計デザイン」、および「プロアクティブ キャッシュ (パーティション)」を参照してください。

パーティションの構造

パーティションの構造は、そのメジャー グループの構造と一致する必要があります。つまり、メジャー グループを定義しているメジャーも、すべての関連ディメンションと共に、パーティションにおいて定義する必要があります。このため、パーティションを作成すると、メジャー グループに定義したのと同じメジャーおよび関連するディメンションのセットが自動的に継承されます。

ただし、メジャー グループ内の各パーティションには、さまざまなデータ ソースから派生した異なるファクト テーブルが含まれている場合があります。メジャー グループ内の各パーティションのファクト テーブルが異なる場合、これらのファクト テーブルは、メジャー グループの構造を維持できるだけの類似性を共通に持っている必要があります。これは、処理クエリにより、すべてのパーティションのすべてのファクト テーブルについて、同じ列および同じデータ型が返されることを意味します。

異なるパーティションのファクト テーブルが別々のデータ ソースから派生している場合は、関連するディメンションの基になるテーブルと中間ファクト テーブルも、すべてのデータ ソースに存在し、すべてのデータベースで同じ構造を持っている必要があります。また、すべてのデータベースに、メジャー グループに関連付けられているキューブ ディメンションの属性を定義するためのディメンション テーブル列がすべて存在している必要があります。パーティションの基になるテーブルとメジャー グループの基になるテーブルの構造が同じである場合、パーティションの基になるテーブルと関連ディメンション テーブル間のすべての結合を定義する必要はありません。

メジャー グループ内のメジャーの定義に使用されない列は、すべてのファクト テーブルに存在している必要はありません。同様に、関連ディメンション テーブル内の属性の定義に使用されない列は、すべてのデータベースに存在している必要はありません。ファクト テーブルおよび関連ディメンション テーブルのいずれにも使用されないテーブルも、すべてのデータベースに存在している必要はありません。

データ ソースとパーティション ストレージ

パーティションは、データ ソースのテーブルまたはビュー、あるいはデータ ソース ビューのテーブルまたは名前付きクエリに基づいています。パーティション データの格納場所は、データ ソース バインドによって定義されます。通常、メジャー グループは横方向または縦方向にパーティション分割できます。

  • 横方向にパーティション分割されたメジャー グループでは、メジャー グループの各パーティションは個別のテーブルに基づいています。この種類のパーティション分割は、データが複数のテーブルに分かれている場合に適しています。たとえば、複数のリレーショナル データベースに各月のデータの個別のテーブルがある場合などです。

  • 列方向にパーティション分割されたメジャー グループでは、メジャー グループは 1 つのテーブルに基づいており、各パーティションは、データをパーティション用にフィルタ選択するソース システム クエリに基づいています。たとえば、1 つのテーブルに数か月のデータが含まれている場合、メジャー グループは、パーティションごとに個別の月のデータを返す Transact-SQL の WHERE 句を適用することによって月別にパーティション分割できます。

各パーティションには、データと集計を Analysis Services のローカル インスタンスに保存するか、別の Analysis Services インスタンスを使用してリモート パーティションに保存するかを決定するストレージ設定があります。このストレージ設定では、ストレージ モードや、パーティションについて待機時間を制御するためにプロアクティブ キャッシュを使用するかどうかも指定できます。詳細については、「パーティションのストレージ モードおよび処理」、「プロアクティブ キャッシュ (パーティション)」および「リモート パーティション」を参照してください。

増分更新

複数パーティションのメジャー グループ内でパーティションを作成して管理する際には、キューブ データが正確であることを保証するために特別な予防策をとる必要があります。このような予防策は、単一パーティションのメジャー グループには通常は適用されませんが、パーティションを増分更新する場合には適用されます。パーティションを増分更新すると、新しい一時パーティションは、基になるパーティションと同じ構造で作成されます。一時パーティションは処理され、基になるパーティションにマージされます。したがって、一時パーティションにデータを格納する処理クエリでは、既存パーティションに既に存在するデータが複製されないようにする必要があります。詳細については、「Analysis Services パーティションの管理」を参照してください。