Microsoft SQL Server SQL Server Analysis Services では、処理は、データをビジネス分析用の情報に変換する一連の手順です。 処理はオブジェクトの種類によって異なりますが、処理は常にデータを情報に変換する一部です。
SQL Server Analysis Services オブジェクトを処理するには、[ プロセス ] コマンドを使用します。 Process コマンドは、SQL Server Analysis Services インスタンスで次のオブジェクトを処理できます。
キューブ
Databases
次元
測定グループ
マイニング モデル
マイニング構造
Partitions
オブジェクトの処理を制御するために、 Process コマンドには、設定できるさまざまなプロパティがあります。 Process コマンドには、実行される処理の量、処理するオブジェクト、行外バインディングを使用するかどうか、エラーの処理方法、書き戻しテーブルを管理する方法を制御するプロパティがあります。
処理オプションの指定
Process コマンドの Type プロパティは、オブジェクトの処理時に使用する処理オプションを指定します。 処理オプションの詳細については、「 処理オプションと設定 (Analysis Services)」を参照してください。
次の表に、 Type プロパティの定数と、各定数を使用して処理できるさまざまなオブジェクトを示します。
| 型 の値 | 該当するオブジェクト |
|---|---|
| ProcessFull | キューブ、データベース、ディメンション、メジャー グループ、マイニング モデル、マイニング構造、パーティション |
| ProcessAdd | ディメンション(次元)、パーティション(分割) |
| プロセスアップデート | ディメンション |
| プロセスインデックス | ディメンション、キューブ、メジャー グループ、パーティション |
| ProcessData | ディメンション、キューブ、メジャー グループ、パーティション |
| ProcessDefault | キューブ、データベース、ディメンション、メジャー グループ、マイニング モデル、マイニング構造、パーティション |
| ProcessClear | キューブ、データベース、ディメンション、メジャー グループ、マイニング モデル、マイニング構造、パーティション |
| ProcessStructure | キューブ、マイニング構造 |
| ProcessClearStructureOnly | マイニング構造 |
| ProcessScriptCache | キューブ |
SQL Server Analysis Services オブジェクトの処理の詳細については、「 多次元モデルの処理 (Analysis Services)」を参照してください。
処理するオブジェクトの指定
Process コマンドの Object プロパティには、処理するオブジェクトのオブジェクト識別子が含まれています。 Process コマンドで指定できるオブジェクトは 1 つだけですが、オブジェクトを処理すると子オブジェクトも処理されます。 たとえば、キューブ内のメジャー グループを処理すると、そのメジャー グループのすべてのパーティションが処理されますが、データベースの処理では、データベースに含まれるキューブ、ディメンション、マイニング構造など、すべてのオブジェクトが処理されます。
Process コマンドの ProcessAffectedObjects 属性を true に設定すると、指定したオブジェクトの処理によって影響を受ける関連オブジェクトも処理されます。 たとえば、Process コマンドの ProcessUpdate 処理オプションを使用してディメンションが増分更新される場合、ProcessAffectedObjects が true に設定されている場合、メンバーが追加または削除されたために集計が無効になったパーティションも SQL Server Analysis Services によって処理されます。 この場合、1 つの Process コマンドで SQL Server Analysis Services インスタンス上の複数のオブジェクトを処理できますが、SQL Server Analysis Services では 、Process コマンドで指定された単一のオブジェクト以外のオブジェクトも処理する必要があります。
ただし、Batch コマンド内で複数の Process コマンドを使用して、ディメンションなどの複数のオブジェクトを同時に処理できます。 バッチ操作では、 ProcessAffectedObjects 属性を使用するよりも、SQL Server Analysis Services インスタンス上のオブジェクトのシリアル処理または並列処理を細かく制御でき、より大きな SQL Server Analysis Services データベースの処理方法を調整できます。 バッチ操作の実行の詳細については、「バッチ操作 の実行 (XMLA)」を参照してください。
行外バインディングの指定
Process コマンドが Batch コマンドに含まれていない場合は、必要に応じて、処理するオブジェクトの Process コマンドの Bindings、DataSource、DataSourceView プロパティで、行外バインドを指定できます。 行外バインディングは、データ ソース、データ ソース ビュー、およびその他のオブジェクトへの参照です。このオブジェクトは 、Process コマンドの実行中にのみバインドが存在し、処理対象のオブジェクトに関連付けられている既存のバインディングをオーバーライドします。 行外バインディングが指定されていない場合は、処理するオブジェクトに現在関連付けられているバインディングが使用されます。
行外バインディングは、次の状況で使用されます。
パーティションを増分処理します。このパーティションでは、行が 2 回カウントされないように、代替ファクト テーブルまたは既存のファクト テーブルのフィルターを指定する必要があります。
Microsoft SQL Server Integration Services のデータ フロー タスクを使用して、ディメンション、マイニング モデル、またはパーティションの処理中にデータを提供します。
行外バインディングは、Analysis Services スクリプト言語 (ASSL) の一部として説明されています。 ASSL の行外バインディングの詳細については、「 データ ソースとバインド (SSAS 多次元)」を参照してください。
パーティションを段階的に更新する
パーティションに指定されたバインドは、パーティション内で既に集計されているファクト テーブル データを参照するため、既に処理済みのパーティションを増分更新するには、通常、行外のバインドが必要です。 [プロセス] コマンドを使用して既に処理されているパーティションを増分更新すると、SQL Server Analysis Services は次のアクションを実行します。
増分更新するパーティションと同じ構造の一時パーティションを作成します。
Process コマンドで指定された行外バインディングを使用して、一時パーティションを 処理 します。
一時パーティションを、選択した既存のパーティションとマージします。
XML for Analysis (XMLA) を使用したパーティションのマージの詳細については、「 パーティションのマージ (XMLA)」を参照してください。
処理エラーの処理
Process コマンドの ErrorConfiguration プロパティを使用すると、オブジェクトの処理中に発生したエラーを処理する方法を指定できます。 たとえば、ディメンションの処理中に、SQL Server Analysis Services はキー属性のキー列に重複する値を検出します。 属性キーは一意である必要があるため、SQL Server Analysis Services は重複するレコードを破棄します。 SQL Server Analysis Services は、ErrorConfiguration の KeyDuplicate プロパティに基づいて、次の可能性があります。
エラーを無視し、ディメンションの処理を続行します。
SQL Server Analysis Services で重複するキーが検出されたことを示すメッセージを返し、処理を続行します。
Process コマンド中に ErrorConfiguration でオプションが提供されるのと同様の条件は多数あります。
書き戻しテーブルの管理
Process コマンドで、書き込み可能なパーティション、またはそのようなパーティションのキューブまたはメジャー グループが検出された場合 (まだ完全に処理されていない場合)、そのパーティションに書き戻しテーブルがまだ存在しない可能性があります。 Process コマンドの WritebackTableCreation プロパティは、SQL Server Analysis Services で書き戻しテーブルを作成するかどうかを決定します。
例示
Description
次の例では、Adventure Works DW 多次元 2012 サンプル SQL Server Analysis Services データベースを完全に処理します。
Code
<Process xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
<Object>
<DatabaseID>Adventure Works DW Multidimensional 2012</DatabaseID>
</Object>
<Type>ProcessFull</Type>
<WriteBackTableCreation>UseExisting</WriteBackTableCreation>
</Process>
Description
次の例では、Adventure Works DW 多次元 2012 サンプル SQL Server Analysis Services データベースの Adventure Works DW キューブの Internet Sales メジャー グループのInternet_Sales_2004 パーティションを段階的に処理します。 Process コマンドは、Process コマンドの Bindings プロパティで行外のクエリ バインドを使用して、パーティションに追加する集計を生成するファクト テーブル行を取得することで、2006 年 12 月 31 日以降の注文日の集計をパーティションに追加します。
Code
<Process ProcessAffectedObjects="true" xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
<Object>
<DatabaseID>Adventure Works DW Multidimensional 2012</DatabaseID>
<CubeID>Adventure Works DW</CubeID>
<MeasureGroupID>Fact Internet Sales 1</MeasureGroupID>
<PartitionID>Internet_Sales_2006</PartitionID>
</Object>
<Bindings>
<Binding>
<DatabaseID>Adventure Works DW Multidimensional 2012</DatabaseID>
<CubeID>Adventure Works DW</CubeID>
<MeasureGroupID>Fact Internet Sales 1</MeasureGroupID>
<PartitionID>Internet_Sales_2006</PartitionID>
<Source xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="QueryBinding">
<DataSourceID>Adventure Works DW</DataSourceID>
<QueryDefinition>
SELECT
[dbo].[FactInternetSales].[ProductKey],
[dbo].[FactInternetSales].[OrderDateKey],
[dbo].[FactInternetSales].[DueDateKey],
[dbo].[FactInternetSales].[ShipDateKey],
[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]
FROM [dbo].[FactInternetSales]
WHERE OrderDateKey > '1280'
</QueryDefinition>
</Source>
</Binding>
</Bindings>
<Type>ProcessAdd</Type>
<WriteBackTableCreation>UseExisting</WriteBackTableCreation>
</Process>