レッスン 11: パーティションの作成

このレッスンでは、パーティションを作成して Internet Sales テーブルをより小さな論理部分に分割し、他のパーティションと分離して処理 (更新) できるようにします。 既定では、モデルに含めるすべてのテーブルにはパーティションが 1 つあり、テーブルのすべての列と行がその中に含まれます。 ここでは、Internet Sales テーブルに含まれる 5 年間のデータを、年ごとのパーティションに分割します。 これにより、各パーティションを個別に処理できるようにします。 詳細については、「パーティション (SSAS テーブル)」を参照してください。

このレッスンの推定所要時間: 15 分

必要条件

このトピックはテーブル モデリング チュートリアルの一部であり、チュートリアルでの順番に従って実行する必要があります。 このレッスンのタスクを実行する前に、前のレッスン「レッスン 10: 階層の作成」を完了している必要があります。

パーティションの作成

Internet Sales テーブル内にパーティションを作成するには

  1. モデル デザイナーで Internet Sales テーブルをクリックし、[テーブル] メニュー、[パーティション] の順にクリックします。

    [パーティション マネージャー] ダイアログ ボックスが表示されます。

  2. [パーティション マネージャー] ダイアログ ボックスの [パーティション] で、[Internet Sales] パーティションをクリックします。

  3. [パーティション名] で、名前を「Internet Sales 2005」に変更します。

    ヒントヒント

    次の手順に進む前に、[テーブルのプレビュー] ウィンドウの列名が、モデル テーブル (チェックされている) に含まれている列を、ソースの列名で表示していることに注意してください。 これは、[テーブルのプレビュー] ウィンドウでは、モデル テーブルからではなく、ソース テーブルから取得された列が表示されるためです。

  4. プレビュー ウィンドウの右上にある [クエリ エディター] ボタンを選択します。

    特定の期間内の行だけをパーティションに含めたいので、WHERE 句を含める必要があります。 WHERE 句は、SQL ステートメントによってのみ作成できます。

  5. [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 年度に該当する行のすべてのデータをパーティションに含めるよう指定しています。

  6. [検証] をクリックします。

    特定の列がソースに存在しないことを示す警告が表示されます。 これは、「レッスン 3: 列名の変更」で、モデル内の Internet Sales テーブルに含まれる列の名前を、ソースにある同じ列とは異なる名前に変更したためです。

Internet Sales テーブル内に 2006 年用のパーティションを作成するには

  1. [パーティション マネージャー] ダイアログ ボックスの [パーティション] で、先ほど作成した [Internet Sales 2005] パーティションをクリックし、[コピー] をクリックします。

  2. [パーティション名] に「Internet Sales 2006」と入力します。

  3. SQL ステートメントで、WHERE 句を次の内容に置き換えて、2006 年の行だけがパーティションに含まれるようにします。

    WHERE (([OrderDate] >= N'2006-01-01 00:00:00') AND ([OrderDate] < N'2007-01-01 00:00:00'))
    

Internet Sales テーブル内に 2007 年用のパーティションを作成するには

  1. [パーティション マネージャー] ダイアログ ボックスで [コピー] をクリックします。

  2. [パーティション名] に「Internet Sales 2007」と入力します。

  3. [切り替え先] で、[クエリ エディター] を選択します。

  4. SQL ステートメントで、WHERE 句を次の内容に置き換えて、2007 年の行だけがパーティションに含まれるようにします。

    WHERE (([OrderDate] >= N'2007-01-01 00:00:00') AND ([OrderDate] < N'2008-01-01 00:00:00'))
    

Internet Sales テーブル内に 2008 年用のパーティションを作成するには

  1. [パーティション マネージャー] ダイアログ ボックスで [新規] をクリックします。

  2. [パーティション名] に「Internet Sales 2008」と入力します。

  3. [切り替え先] で、[クエリ エディター] を選択します。

  4. SQL ステートメントで、WHERE 句を次の内容に置き換えて、2008 年の行だけがパーティションに含まれるようにします。

    WHERE (([OrderDate] >= N'2008-01-01 00:00:00') AND ([OrderDate] < N'2009-01-01 00:00:00'))
    

Internet Sales テーブル内に 2009 年用のパーティションを作成するには

  1. [パーティション マネージャー] ダイアログ ボックスで [新規] をクリックします。

  2. [パーティション名] に「Internet Sales 2009」と入力します。

  3. [切り替え先] で、[クエリ エディター] を選択します。

  4. SQL ステートメントで、WHERE 句を次の内容に置き換えて、2009 年の行だけがパーティションに含まれるようにします。

    WHERE (([OrderDate] >= N'2009-01-01 00:00:00') AND ([OrderDate] < N'2010-01-01 00:00:00'))
    

パーティションの処理

[パーティション マネージャー] ダイアログ ボックスで、新たに作成した各パーティションのパーティション名の隣にアスタリスク (*) が表示されます。 これは、パーティションがまだ処理 (更新) されていないことを示します。 新しいパーティションを作成したら、"パーティションの処理" または "テーブルの処理" 操作を実行して、それらのパーティション内のデータを更新する必要があります。

Internet Sales パーティションを処理するには

  1. [OK] をクリックし、[パーティション マネージャー] ダイアログ ボックスを閉じます。

  2. モデル デザイナーで [Internet Sales] テーブルをクリックし、[モデル] メニューをクリックした後、[処理] (更新) をポイントし、[パーティションの処理] をクリックします。

  3. [パーティションの処理] ダイアログ ボックスで、[モード][既定の処理] に設定されていることを確認します。

  4. 作成した 5 つのパーティションのそれぞれについて、[処理] 列のチェック ボックスをオンにし、[OK] をクリックします。

    権限借用資格情報の入力を求められた場合は、レッスン 2 の手順 6. で指定した、Windows のユーザー名とパスワードを入力します。

    [データ処理] ダイアログ ボックスが表示され、各パーティションのプロセスの詳細が表示されます。 転送される行数はパーティションごとに異なります。 これは、各パーティションに、SQL ステートメントの WHERE 句で指定された年の行が含められるためです。 2010 年についてはデータがありません。

次の手順

このチュートリアルを続行するには、次のレッスン「レッスン 12: ロールの作成」に進んでください。