レッスン 10: パーティションの作成
適用対象:
SQL Server 2016 以降の Analysis Services
Azure Analysis Services
Power BI Premium
このレッスンでは、FactInternetSales テーブルを他のパーティションとは関係なく処理 (更新) できる小さな論理部分に分割するパーティションを作成します。 既定では、モデルに含めるすべてのテーブルには、テーブルのすべての列と行を含む 1 つのパーティションがあります。 FactInternetSales テーブルでは、データを年で除算します。テーブルの 5 年間ごとに 1 つのパーティション。 これにより、各パーティションを個別に処理できるようにします。 詳細については、「 [パーティション]」を参照してください。
このレッスンの推定所要時間: 15 分
前提条件
このトピックは、表形式モデルのチュートリアルの一部であり、チュートリアルでの順番に従って実行する必要があります。 このレッスンの作業を実行する前に、前のレッスン「レッスン 9: 階層を作成する」を終えている必要があります。
パーティションの作成
FactInternetSales テーブルでパーティションを作成する
表形式モデル エクスプローラーで、[テーブル] を展開し、[FactInternetSalesPartitions>] を右クリックします。
[パーティション マネージャー] ダイアログ ボックスで [コピー]をクリックします。
[パーティション名] で、名前を FactInternetSales2010 に変更します。
ヒント
[テーブル プレビュー] ウィンドウの列名には、モデル テーブルに含まれる列 (オン) とソースの列名が表示されます。 これは、[テーブルのプレビュー] ウィンドウでは、モデル テーブルからではなく、ソース テーブルから取得された列が表示されるためです。
プレビュー ウィンドウの右側のすぐ上にある [SQL] ボタンを選択して、SQLステートメント エディターを開きます。
特定の期間内の行だけをパーティションに含めたいので、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'2010-01-01 00:00:00') AND ([OrderDate] < N'2011-01-01 00:00:00'))このステートメントは、WHERE 句で指定されているように、OrderDate が 2010 年度に該当する行のすべてのデータをパーティションに含めるよう指定しています。
[検証] をクリックします。
2011 年用のパーティションを作成するには
パーティションの一覧で、先ほど作成した FactInternetSales2010 パーティションをクリックし、[ コピー] をクリックします。
[パーティション名] に「FactInternetSales2011」と入力します。
SQL ステートメントで、WHERE 句を次の内容に置き換えて、2011 年の行だけがパーティションに含まれるようにします。
WHERE (([OrderDate] >= N'2011-01-01 00:00:00') AND ([OrderDate] < N'2012-01-01 00:00:00'))
2012 年度のパーティションを作成するには
次の WHERE 句を使用して、上記の手順に従います。
WHERE (([OrderDate] >= N'2012-01-01 00:00:00') AND ([OrderDate] < N'2013-01-01 00:00:00'))
2013 年用のパーティションを作成するには
次の WHERE 句を使用して、上記の手順に従います。
WHERE (([OrderDate] >= N'2013-01-01 00:00:00') AND ([OrderDate] < N'2014-01-01 00:00:00'))
2014 年のパーティションを作成するには
次の WHERE 句を使用して、上記の手順に従います。
WHERE (([OrderDate] >= N'2014-01-01 00:00:00') AND ([OrderDate] < N'2015-01-01 00:00:00'))
FactInternetSales パーティションを削除する
各年のパーティションが作成されたので、FactInternetSales パーティションを削除できます。 これにより、パーティションを処理するときに [すべて処理] を選択すると、重複が回避されます。
FactInternetSales パーティションを削除する
- FactInternetSales パーティションをクリックし、[削除] をクリックします。
パーティションの処理
Partition Manager で、先ほど作成した新しいパーティションごとに [最終処理済 み] 列に、これらのパーティションが処理されていないことが示されていることに注意してください。 新しいパーティションを作成したら、"パーティションの処理" または "テーブルの処理" 操作を実行して、それらのパーティション内のデータを更新する必要があります。
FactInternetSales パーティションを処理する
[OK] をクリックし、 [パーティション マネージャー] ダイアログ ボックスを閉じます。
FactInternetSales テーブルをクリックし、[モデル] メニューの [ProcessProcess>パーティション] を>クリックします。
[Process Partitions] ダイアログ ボックスで Mode が Process Default に設定されていることを確認します。
作成した 5 つのパーティションのそれぞれについて、 [Process] 列のチェックボックスを選択し、[OK] をクリックします。

Impersonation 資格証明を求められた場合は、レッスン 2 で使用した Windows ユーザー名とパスワードを入力します。
[データ処理] ダイアログ ボックスが表示され、各パーティションのプロセスの詳細が表示されます。 転送される行数はパーティションごとに異なります。 これは、各パーティションに、SQL ステートメントの WHERE 句で指定された年の行が含められるためです。 処理を終えたら、[Data Processing] ダイアログ ボックスを閉じます。

次の内容
次の「レッスン 11: ロールを作成する」に進みます。