パーティションは、メジャー グループ データの一部のコンテナーです。 パーティションは MDX クエリからは表示されません。すべてのクエリは、メジャー グループに対して定義されているパーティションの数に関係なく、メジャー グループの内容全体を反映します。 パーティションのデータ コンテンツは、パーティションのクエリ バインドとスライス式によって定義されます。
単純な Partition オブジェクトは、基本情報、スライス定義、集計デザインなどで構成されます。 基本情報には、パーティションの名前、ストレージ モード、処理モードなどが含まれます。 スライス定義は、タプルまたはセットを指定する MDX 式です。 スライス定義には、StrToSet MDX 関数と同じ制限があります。 スライシング定義では、CONSTRAINED パラメーターと共に、キューブ内のディメンション、階層、レベルおよびメンバー名、キー、一意の名前、またはその他の名前付きオブジェクトを使用できますが、MDX 関数を使用することはできません。 集計デザインは、複数のパーティション間で共有できる集計定義のコレクションです。 既定値は、親キューブの集計デザインから取得されます。
パーティションは、キューブ内のメジャー グループのデータと集計を管理および格納するために、Microsoft SQL Server Analysis Services によって使用されます。 すべてのメジャー グループには少なくとも 1 つのパーティションがあります。このパーティションは、メジャー グループが定義されるときに作成されます。 メジャー グループの新しいパーティションを作成すると、メジャー グループに既に存在するパーティションのセットに新しいパーティションが追加されます。 メジャー グループには、すべてのパーティションに含まれる結合されたデータが反映されます。 つまり、メジャー グループ内のパーティションのデータが、メジャー グループ内の他のパーティションのデータを排他的にして、データがメジャー グループに複数回反映されないようにする必要があります。 メジャー グループの元のパーティションは、キューブのデータ ソース ビューの 1 つのファクト テーブルに基づいています。 メジャー グループに複数のパーティションがある場合、各パーティションは、データ ソース ビューまたはキューブの基になるリレーショナル データ ソースで異なるテーブルを参照できます。 各パーティションがテーブル内の異なる行に制限されている場合、メジャー グループ内の複数のパーティションが同じテーブルを参照できます。
パーティションは、キューブ、特に大きなキューブを管理するための強力で柔軟な手段です。 たとえば、売上情報を含むキューブには、過去 1 年ごとのデータのパーティションと、現在の年の四半期ごとのパーティションを含めることができます。 キューブに現在の情報を追加する場合は、現在の四半期パーティションのみを処理する必要があります。より少量のデータを処理すると、処理時間が短縮され、処理パフォーマンスが向上します。 年末には、四半期ごとに 4 つのパーティションを 1 つのパーティションにマージし、新しい年の最初の四半期に新しいパーティションを作成できます。 さらに、この新しいパーティション作成プロセスは、データ ウェアハウスの読み込みとキューブ処理の手順の一部として自動化できます。
パーティションは、キューブのビジネス ユーザーには表示されません。 ただし、管理者はパーティションを構成、追加、または削除できます。 各パーティションは、個別のファイル セットに格納されます。 各パーティションの集計データは、パーティションが定義されている Analysis Services のインスタンス、Analysis Services の別のインスタンス、またはパーティションのソース データの提供に使用されるデータ ソースに格納できます。 パーティションを使用すると、キューブのソース データと集計データを複数のハード ドライブと複数のサーバー コンピューターに分散できます。 中程度から大きいサイズのキューブの場合、パーティションはクエリのパフォーマンス、読み込みのパフォーマンス、キューブのメンテナンスの容易さを大幅に向上させることができます。 リモート パーティションの詳細については、「リモート パーティション」を参照してください。
各パーティションのストレージ モードは、メジャー グループ内の他のパーティションとは別に構成できます。 パーティションは、ソース データの場所、ストレージ モード、プロアクティブ キャッシュ、および集計設計のオプションを任意に組み合わせて使用して格納できます。 リアルタイム OLAP とプロアクティブ キャッシュのオプションを使用すると、パーティションを設計するときの待機時間とクエリ速度のバランスを取ります。 ストレージ オプションは、関連するディメンションやメジャー グループ内のファクトにも適用できます。 この柔軟性により、ニーズに適したキューブ ストレージ戦略を設計できます。 詳細については、「パーティション ストレージ モードと処理、集計と集計の設計」および「プロアクティブ キャッシュ (パーティション)」を参照してください。
パーティション構造
パーティションの構造は、メジャー グループの構造と一致する必要があります。つまり、メジャー グループを定義するメジャーも、関連するすべてのディメンションと共にパーティションで定義する必要があります。 そのため、パーティションが作成されると、メジャー グループに対して定義されたのと同じメジャー セットと関連ディメンションが自動的に継承されます。
ただし、メジャー グループ内の各パーティションは異なるファクト テーブルを持つ場合があり、これらのファクト テーブルは異なるデータ ソースから取得できます。 メジャー グループ内の異なるパーティションに異なるファクト テーブルがある場合、テーブルはメジャー グループの構造を維持するのに十分に似ている必要があります。つまり、処理クエリはすべてのパーティションのすべてのファクト テーブルに対して同じ列と同じデータ型を返します。
異なるパーティションのファクト テーブルが異なるデータ ソースの場合、関連するディメンションのソース テーブルと中間ファクト テーブルもすべてのデータ ソースに存在し、すべてのデータベースで同じ構造を持つ必要があります。 また、メジャー グループに関連するキューブ ディメンションの属性を定義するために使用されるすべてのディメンション テーブル列は、すべてのデータ ソースに存在する必要があります。 パーティション ソース テーブルの構造がメジャー グループのソース テーブルと同じ場合、パーティションのソース テーブルと関連するディメンション テーブルの間のすべての結合を定義する必要はありません。
メジャー グループ内のメジャーの定義に使用されない列は、一部のファクト テーブルに存在できますが、他のファクト テーブルには存在しない場合があります。 同様に、関連するディメンション テーブルの属性を定義するために使用されない列は、一部のデータベースに存在できますが、他のデータベースには存在しない場合があります。 ファクト テーブルまたは関連ディメンション テーブルに使用されないテーブルは、一部のデータベースには存在できますが、他のデータベースには存在しません。
データ ソースとパーティション ストレージ
パーティションは、データ ソースのテーブルまたはビュー、またはデータ ソース ビューのテーブルまたは名前付きクエリに基づいています。 パーティション データが格納される場所は、データ ソース バインディングによって定義されます。 通常、メジャー グループは水平方向または垂直方向にパーティション分割できます。
水平方向にパーティション分割されたメジャー グループでは、メジャー グループ内の各パーティションは個別のテーブルに基づいています。 この種類のパーティション分割は、データが複数のテーブルに分割されている場合に適しています。 たとえば、一部のリレーショナル データベースには、月のデータごとに個別のテーブルがあります。
垂直方向にパーティション分割されたメジャー グループでは、メジャー グループは 1 つのテーブルに基づいており、各パーティションは、パーティションのデータをフィルター処理するソース システム クエリに基づいています。 たとえば、1 つのテーブルに数か月のデータが含まれている場合でも、パーティションごとに個別の月のデータを返す Transact-SQL WHERE 句を適用することで、メジャー グループを月単位でパーティション分割できます。
各パーティションには、パーティションのデータと集計を Analysis Services のローカル インスタンスに格納するか、Analysis Services の別のインスタンスを使用してリモート パーティションに格納するかを決定するストレージ設定があります。 ストレージ設定では、ストレージ モードと、プロアクティブ キャッシュを使用してパーティションの待機時間を制御するかどうかを指定することもできます。 詳細については、「 パーティションストレージモードと処理」、 プロアクティブキャッシュ(パーティション)、 およびリモートパーティションを参照してください。
増分更新
複数パーティションメジャー グループでパーティションを作成および管理する場合は、キューブ データが正確であることを保証するために特別な予防措置を講じる必要があります。 これらの予防措置は通常、単一パーティションメジャー グループには適用されませんが、パーティションを増分更新するときに適用されます。 パーティションを増分更新すると、ソース パーティションと同じ構造を持つ新しい一時パーティションが作成されます。 一時パーティションが処理され、ソース パーティションとマージされます。 そのため、一時パーティションを設定する処理クエリで、既存のパーティションに既に存在するデータが重複しないようにする必要があります。