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