メジャー グループに対して追加のパーティションを作成して、処理のパフォーマンスを向上させることができます。 複数のパーティションを持つことで、ローカル サーバーとリモート サーバー上の対応する数の物理データ ファイルにファクト データを割り当てることができます。 Analysis Services では、パーティションを個別に並列に処理できるため、サーバー上の処理ワークロードをより詳細に制御できます。
パーティションは、モデルの設計中、または SQL Server Management Studio または XMLA を使用してソリューションをデプロイした後に、SQL Server Data Tools で作成できます。 1 つのアプローチのみを選択することをお勧めします。 ツールを交互に使用すると、SQL Server Data Tools からソリューションを再デプロイするときに、SQL Server Management Studio でデプロイされたデータベースに加えられた変更が上書きされる場合があります。
開始する前に
ビジネス インテリジェンス エディションとエンタープライズ エディションのどちらを使用しているかを確認します。 Standard エディションでは、複数のパーティションはサポートされていません。 エディションを確認するには、SQL Server Management Studio でサーバー ノードを右クリックし、 レポート | General を選択します。 機能の可用性の詳細については、「 SQL Server 2014 の各エディションでサポートされる機能」を参照してください。
最初から、後でマージする場合は、パーティションが同じ集計デザインを共有する必要があることを理解しておくことが重要です。 パーティションは、同じ集計デザインとストレージ モードがある場合にのみマージできます。
ヒント
データ ソース ビュー (DSV) のデータを調べて、パーティション分割するデータの範囲と深さを理解します。 たとえば、日付でパーティション分割する場合は、日付列で並べ替えて、各パーティションの上限と下限を決定できます。
アプローチを選択する
パーティションを作成する際の最も重要な考慮事項は、重複する行がないようにデータをセグメント化することです。 行の二重カウントを回避するには、データを 1 つのパーティションにのみ格納する必要があります。 そのため、各パーティション間の明確な境界を定義できるように、DATE でパーティション分割するのが一般的です。
いずれかの手法を使用して、複数のパーティションにファクト データを分散できます。 次の手法を使用して、データをセグメント化できます。
手法 | 推奨事項 |
---|---|
SQL クエリを使用してファクト データをセグメント化する | パーティションは SQL クエリから取得できます。 処理中に、SQL クエリはデータを取得することです。 クエリの WHERE 句は、各パーティションのデータをセグメント化するフィルターを提供します。 Analysis Services によってクエリが生成されますが、データを適切にセグメント化するには WHERE 句を入力する必要があります。 この方法の主な利点は、単一のソース テーブルからデータを簡単にパーティション分割できることです。 すべてのソース データが大きなファクト テーブルから生成される場合は、データ ソース ビュー (DSV) で追加のデータ構造を作成しなくても、そのデータを個別のパーティションにフィルター処理するクエリを作成できます。 1 つの欠点は、クエリを使用すると、パーティションと DSV の間のバインドが中断されるということです。 ファクト テーブルへの列の追加など、Analysis Services プロジェクトの DSV を後で更新する場合は、各パーティションのクエリを手動で編集して新しい列を含める必要があります。 次に説明する 2 番目のアプローチには、この欠点はありません。 |
DSV のテーブルを使用してファクト データをセグメント化する | DSV 内のテーブル、名前付きクエリ、またはビューにパーティションをバインドできます。 パーティションの基礎として、3 つすべてが機能的に同等です。 テーブル全体、名前付きクエリ、またはビューは、すべてのデータを 1 つのパーティションに提供します。 テーブル、ビュー、または名前付きクエリを使用すると、すべてのデータ選択ロジックが DSV に配置されるため、時間の経過に伴う管理と保守が容易になります。 この方法の重要な利点は、テーブル バインドが保持されていることです。 後でソース テーブルを更新する場合は、それを使用するパーティションを変更する必要はありません。 第 2 に、すべてのテーブル、名前付きクエリ、ビューが共通の作業空間に存在するため、パーティション クエリを個別に開いて編集するよりも、更新が便利になります。 |
オプション 1: 複数のパーティションのファクト テーブルをフィルター処理する
複数のパーティションを作成するには、まず、既定のパーティションの Source プロパティを変更します。 既定では、DSV 内の 1 つのテーブルにバインドされた 1 つのパーティションを使用してメジャー グループが作成されます。 パーティションを追加する前に、最初に元のパーティションを変更して、ファクト データの一部のみを含める必要があります。 その後、残りのデータを格納するための追加のパーティションの作成に進むことができます。
パーティション間でデータが重複しないようにフィルターを作成します。 パーティションのフィルターは、ファクト テーブル内のどのデータをパーティションで使用するかを指定します。 キューブ内のすべてのパーティションのフィルターは、ファクト テーブルから相互に排他的なデータセットを抽出することが重要です。 複数のパーティションに表示される場合、同じファクト データが 2 倍にカウントされる可能性があります。
SQL Server データ ツールのソリューション エクスプローラーで、キューブをダブルクリックしてキューブ デザイナーで開き、[ パーティション ] タブをクリックします。
パーティションを追加するメジャー グループを展開します。 既定では、各メジャー グループには 1 つのパーティションがあり、DSV のファクト テーブルにバインドされています。
[ソース] 列で、参照 (. .) ボタンをクリックして 、[パーティション ソース] ダイアログ ボックスを開きます。
[バインドの種類] で、[ クエリ バインド] を選択します。 データを選択する SQL クエリが自動的に表示されます。
下部の WHERE 句に、このパーティションのデータをセグメント化するフィルターを追加します。
WHERE 句の構文の例としては、
WHERE OrderDateKey >= '20060101'
やWHERE OrderDateKey BETWEEN '20051001' AND '20051201'
などがあります。 その他の例については、 WHERE (Transact-SQL) を参照してください。次のフィルターは、各セット内で相互に排他的であることに注意してください。
セット 1: "SaleYear" = 2012
"販売年" = 2013セット 2: "大陸" = 'NorthAmerica'
"Continent" = 'Europe'
"Continent" = 'SouthAmerica'セット 3: "Country" = 'USA'
"Country" = 'Mexico'
("Country" <> 'USA' and "Country" <> 'Mexico')[ チェック ] をクリックして構文エラーを確認し、[OK] をクリック します。
前の手順を繰り返して残りのパーティションを作成し、WHERE 句を毎回変更して次のデータ スライスを選択します。
ソリューションをデプロイするか、パーティションを処理してデータを読み込みます。 必ずすべてのパーティションを処理してください。
キューブを参照して、正しいデータが返されたことを確認します。
複数のメジャー グループを使用するメジャー グループを作成したら、SQL Server Management Studio で追加のパーティションを作成できます。 メジャー グループの下にある [パーティション] フォルダーを右クリックし、[ 新しいパーティション ] を選択してウィザードを開始します。
注
パーティション内のデータをフィルター処理する代わりに、同じクエリを使用して DSV に名前クエリを作成し、名前付きクエリに基づいてパーティションを作成できます。
オプション 2: テーブル、ビュー、または名前付きクエリを使用する
DSV が既にファクトを個々のテーブル (年や四半期など) に整理している場合は、個々のテーブルに基づいてパーティションを作成できます。各パーティションには独自のデータ ソース テーブルがあります。 これは基本的にメジャー グループが既定でパーティション分割される方法ですが、複数のパーティションの場合は、元のパーティションを複数のパーティションに分割し、各新しいパーティションをデータを提供するデータ ソース テーブルにマップします。
ビューと名前付きクエリは、3 つのオブジェクトすべてが DSV で定義され、[パーティション ソース] ダイアログ ボックスの [テーブル バインド] オプションを使用してパーティションにバインドされるという点で、テーブルと同等の機能を持ちます。 ビューまたは名前付きクエリを作成して、各パーティションに必要なデータ セグメントを生成できます。 詳細については、「 データ ソース ビューでの名前付きクエリの定義 (Analysis Services)」を参照してください。
重要
DSV 内のパーティションに対して相互排他的な名前付きクエリを作成する場合は、パーティションの結合されたデータに、キューブに含めるメジャー グループのすべてのデータが含まれていることを確認します。 メジャー グループのテーブル全体に基づく既定のパーティションを残さないか、クエリ ベースのパーティションが完全なテーブルに基づいてクエリと重複することを確認します。
パーティション ソースとして使用する名前付きクエリを 1 つ以上作成します。 詳細については、「 データ ソース ビューでの名前付きクエリの定義 (Analysis Services)」を参照してください。
名前付きクエリは、メジャー グループに関連付けられているファクト テーブルに基づいている必要があります。 たとえば、FactInternetSales メジャー グループをパーティション分割する場合、DSV の名前付きクエリでは、FROM ステートメントで FactInternetSales テーブルを指定する必要があります。
SQL Server データ ツールのソリューション エクスプローラーで、キューブをダブルクリックしてキューブ デザイナーで開き、[ パーティション ] タブをクリックします。
パーティションを追加するメジャー グループを展開します。
[ 新しいパーティション ] をクリックしてパーティション ウィザードを起動します。 メジャー グループにバインドされたファクト テーブルを使用して名前付きクエリを作成した場合は、前の手順で作成した各名前付きクエリが表示されます。
[ソース情報の指定] で、前の手順で作成した名前付きクエリのいずれかを選択します。 名前付きクエリが表示されない場合は、DSV に戻り、FROM ステートメントを確認します。
[ 次へ ] をクリックして、後続の各ページの既定値をそのまま使用します。
最後のページの [ウィザードの完了] で、パーティションにわかりやすい名前を付けます。
[完了] をクリックします。
前の手順を繰り返して残りのパーティションを作成し、毎回異なる名前付きクエリを選択して、次のデータ スライスを選択します。
ソリューションをデプロイするか、パーティションを処理してデータを読み込みます。 必ずすべてのパーティションを処理してください。
キューブを参照して、正しいデータが返されたことを確認します。
次の手順
パーティションに対して相互に排他的なクエリを作成するときは、結合されたパーティション データにキューブに含めるすべてのデータが含まれていることを確認します。
通常、最後に、テーブル自体に基づいていた既定のパーティション (もし残っていれば) を削除します。そうしないと、クエリベースのパーティションと完全なテーブルに基づいたクエリが重複してしまいます。
こちらもご覧ください
パーティション (Analysis Services - 多次元データ)、Analysis Services のパーティションをマージするリモート パーティション(SSAS - 多次元)