レッスン 11: パーティションの作成
このレッスンでは、パーティションを作成して Internet Sales テーブルをより小さな論理部分に分割し、他のパーティションと分離して処理 (更新) できるようにします。 既定では、モデルに含めるすべてのテーブルにはパーティションが 1 つあり、テーブルのすべての列と行がその中に含まれます。 ここでは、Internet Sales テーブルに含まれる 5 年間のデータを、年ごとのパーティションに分割します。 これにより、各パーティションを個別に処理できるようにします。 詳細については、「パーティション (SSAS テーブル)」を参照してください。
このレッスンの推定所要時間: 15 分
必要条件
このトピックはテーブル モデリング チュートリアルの一部であり、チュートリアルでの順番に従って実行する必要があります。 このレッスンのタスクを実行する前に、前のレッスン「レッスン 10: 階層の作成」を完了している必要があります。
パーティションの作成
Internet Sales テーブル内にパーティションを作成するには
モデル デザイナーで Internet Sales テーブルをクリックし、[テーブル] メニュー、[パーティション] の順にクリックします。
[パーティション マネージャー] ダイアログ ボックスが表示されます。
[パーティション マネージャー] ダイアログ ボックスの [パーティション] で、[Internet Sales] パーティションをクリックします。
[パーティション名] で、名前を「Internet Sales 2005」に変更します。
ヒント 次の手順に進む前に、[テーブルのプレビュー] ウィンドウの列名が、モデル テーブル (チェックされている) に含まれている列を、ソースの列名で表示していることに注意してください。 これは、[テーブルのプレビュー] ウィンドウでは、モデル テーブルからではなく、ソース テーブルから取得された列が表示されるためです。
プレビュー ウィンドウの右上にある [クエリ エディター] ボタンを選択します。
特定の期間内の行だけをパーティションに含めたいので、WHERE 句を含める必要があります。 WHERE 句は、SQL ステートメントによってのみ作成できます。
[SQL ステートメント] フィールドで、次のステートメントを貼り付けて既存のステートメントを置き換えます。
SELECT [dbo].[FactInternetSales].[ProductKey], [dbo].[FactInternetSales].[CustomerKey], [dbo].[FactInternetSales].[PromotionKey], [dbo].[FactInternetSales].[CurrencyKey], [dbo].[FactInternetSales].[SalesTerritoryKey], [dbo].[FactInternetSales].[SalesOrderNumber], [dbo].[FactInternetSales].[SalesOrderLineNumber], [dbo].[FactInternetSales].[RevisionNumber], [dbo].[FactInternetSales].[OrderQuantity], [dbo].[FactInternetSales].[UnitPrice], [dbo].[FactInternetSales].[ExtendedAmount], [dbo].[FactInternetSales].[UnitPriceDiscountPct], [dbo].[FactInternetSales].[DiscountAmount], [dbo].[FactInternetSales].[ProductStandardCost], [dbo].[FactInternetSales].[TotalProductCost], [dbo].[FactInternetSales].[SalesAmount], [dbo].[FactInternetSales].[TaxAmt], [dbo].[FactInternetSales].[Freight], [dbo].[FactInternetSales].[CarrierTrackingNumber], [dbo].[FactInternetSales].[CustomerPONumber], [dbo].[FactInternetSales].[OrderDate], [dbo].[FactInternetSales].[DueDate], [dbo].[FactInternetSales].[ShipDate] FROM [dbo].[FactInternetSales] WHERE (([OrderDate] >= N'2005-01-01 00:00:00') AND ([OrderDate] < N'2006-01-01 00:00:00'))
このステートメントは、WHERE 句で指定されているように、OrderDate が 2005 年度に該当する行のすべてのデータをパーティションに含めるよう指定しています。
[検証] をクリックします。
特定の列がソースに存在しないことを示す警告が表示されます。 これは、「レッスン 3: 列名の変更」で、モデル内の Internet Sales テーブルに含まれる列の名前を、ソースにある同じ列とは異なる名前に変更したためです。
Internet Sales テーブル内に 2006 年用のパーティションを作成するには
[パーティション マネージャー] ダイアログ ボックスの [パーティション] で、先ほど作成した [Internet Sales 2005] パーティションをクリックし、[コピー] をクリックします。
[パーティション名] に「Internet Sales 2006」と入力します。
SQL ステートメントで、WHERE 句を次の内容に置き換えて、2006 年の行だけがパーティションに含まれるようにします。
WHERE (([OrderDate] >= N'2006-01-01 00:00:00') AND ([OrderDate] < N'2007-01-01 00:00:00'))
Internet Sales テーブル内に 2007 年用のパーティションを作成するには
[パーティション マネージャー] ダイアログ ボックスで [コピー] をクリックします。
[パーティション名] に「Internet Sales 2007」と入力します。
[切り替え先] で、[クエリ エディター] を選択します。
SQL ステートメントで、WHERE 句を次の内容に置き換えて、2007 年の行だけがパーティションに含まれるようにします。
WHERE (([OrderDate] >= N'2007-01-01 00:00:00') AND ([OrderDate] < N'2008-01-01 00:00:00'))
Internet Sales テーブル内に 2008 年用のパーティションを作成するには
[パーティション マネージャー] ダイアログ ボックスで [新規] をクリックします。
[パーティション名] に「Internet Sales 2008」と入力します。
[切り替え先] で、[クエリ エディター] を選択します。
SQL ステートメントで、WHERE 句を次の内容に置き換えて、2008 年の行だけがパーティションに含まれるようにします。
WHERE (([OrderDate] >= N'2008-01-01 00:00:00') AND ([OrderDate] < N'2009-01-01 00:00:00'))
Internet Sales テーブル内に 2009 年用のパーティションを作成するには
[パーティション マネージャー] ダイアログ ボックスで [新規] をクリックします。
[パーティション名] に「Internet Sales 2009」と入力します。
[切り替え先] で、[クエリ エディター] を選択します。
SQL ステートメントで、WHERE 句を次の内容に置き換えて、2009 年の行だけがパーティションに含まれるようにします。
WHERE (([OrderDate] >= N'2009-01-01 00:00:00') AND ([OrderDate] < N'2010-01-01 00:00:00'))
パーティションの処理
[パーティション マネージャー] ダイアログ ボックスで、新たに作成した各パーティションのパーティション名の隣にアスタリスク (*) が表示されます。 これは、パーティションがまだ処理 (更新) されていないことを示します。 新しいパーティションを作成したら、"パーティションの処理" または "テーブルの処理" 操作を実行して、それらのパーティション内のデータを更新する必要があります。
Internet Sales パーティションを処理するには
[OK] をクリックし、[パーティション マネージャー] ダイアログ ボックスを閉じます。
モデル デザイナーで [Internet Sales] テーブルをクリックし、[モデル] メニューをクリックした後、[処理] (更新) をポイントし、[パーティションの処理] をクリックします。
[パーティションの処理] ダイアログ ボックスで、[モード] が [既定の処理] に設定されていることを確認します。
作成した 5 つのパーティションのそれぞれについて、[処理] 列のチェック ボックスをオンにし、[OK] をクリックします。
権限借用資格情報の入力を求められた場合は、レッスン 2 の手順 6. で指定した、Windows のユーザー名とパスワードを入力します。
[データ処理] ダイアログ ボックスが表示され、各パーティションのプロセスの詳細が表示されます。 転送される行数はパーティションごとに異なります。 これは、各パーティションに、SQL ステートメントの WHERE 句で指定された年の行が含められるためです。 2010 年についてはデータがありません。
次の手順
このチュートリアルを続行するには、次のレッスン「レッスン 12: ロールの作成」に進んでください。