オブジェクトの処理 (XMLA)

Microsoft SQL Server Analysis Services では、処理は、ビジネス分析のためにデータを情報に変換する手順または一連の手順です。 処理内容はオブジェクトの種類によって異なりますが、データを情報に変換する処理の一部として必ず実行されます。

Analysis Services オブジェクトを処理するには、 process コマンドを使用します。 Processコマンドでは、Analysis Services インスタンスの次のオブジェクトを処理できます。

  • キューブ

  • データベース

  • Dimensions

  • メジャー グループ

  • [マイニング モデル]

  • マイニング構造

  • メジャー グループ

オブジェクトの処理を制御するために、 Process コマンドにはさまざまなプロパティを設定できます。 Processコマンドには、実行される処理の量、処理されるオブジェクト、不一致バインドを使用するかどうか、エラーを処理する方法、書き戻しテーブルを管理する方法を制御するプロパティがあります。

処理オプションの指定

ProcessコマンドのTypeプロパティは、オブジェクトを処理するときに使用する処理オプションを指定します。 処理オプションの詳細については、「処理オプションと設定 (Analysis Services)」を参照してください。

次の表に、 Type プロパティの定数と、各定数を使用して処理できるさまざまなオブジェクトの一覧を示します。

の値 適用されるオブジェクト
ProcessFull キューブ、データベース、ディメンション、メジャー グループ、マイニング モデル、マイニング構造、パーティション
ProcessAdd ディメンション、パーティション
ProcessUpdate Dimension
ProcessIndexes ディメンション、キューブ、メジャーグループ、パーティション
ProcessData ディメンション、キューブ、メジャーグループ、パーティション
ProcessDefault キューブ、データベース、ディメンション、メジャー グループ、マイニング モデル、マイニング構造、パーティション
ProcessClear キューブ、データベース、ディメンション、メジャー グループ、マイニング モデル、マイニング構造、パーティション
ProcessStructure キューブ、マイニング構造
ProcessClearStructureOnly マイニング構造
ProcessScriptCache キューブ

Analysis Services オブジェクトの処理の詳細については、「 多次元モデルの処理 (Analysis Services)」を参照してください。

処理対象のオブジェクトの指定

Processコマンドのobjectプロパティには、処理対象のオブジェクトのオブジェクト識別子が含まれています。 Processコマンドで指定できるオブジェクトは1つだけですが、オブジェクトを処理すると子オブジェクトも処理されます。 たとえば、キューブ内のメジャー グループを処理すると、そのメジャー グループのすべてのパーティションが処理されます。また、データベースを処理すると、キューブ、ディメンション、およびマイニング構造など、そのデータベースに含まれるすべてのオブジェクトが処理されます。

ProcessコマンドのProcessAffectedObjects属性を true に設定すると、指定したオブジェクトの処理によって影響を受ける関連オブジェクトもすべて処理されます。 たとえば、 Processコマンドでprocessupdate処理オプションを使用してディメンションを増分更新する場合、 ProcessAffectedObjectsが true に設定されていると、メンバーの追加または削除によって、集計が無効になるパーティションも Analysis Services によって処理されます。 この場合、1つの プロセス コマンドで Analysis Services インスタンス上の複数のオブジェクトを処理できますが、Analysis Services は、 process コマンドで指定された1つのオブジェクト以外のオブジェクトも処理する必要があるかどうかを判断します。

ただし、 Batchコマンド内で複数のプロセスコマンドを使用すると、ディメンションなどの複数のオブジェクトを同時に処理することができます。 バッチ操作では、 ProcessAffectedObjects 属性を使用するよりも、Analysis Services インスタンス上のオブジェクトのシリアル処理または並列処理をより細かく制御できます。また、より大きな Analysis Services データベースの処理方法を調整することができます。 バッチ操作の実行の詳細については、「 バッチ操作の実行 (XMLA)」を参照してください。

不一致バインドの指定

Processコマンドがバッチコマンドに含まれていない場合は、必要に応じて、 processコマンドのbindingsDataSource、およびDataSourceViewプロパティで不一致バインドを指定して、処理するオブジェクトを指定できます。 不一致バインドは、データソース、データソースビュー、およびその他のオブジェクトへの参照です。このバインドは、 処理 コマンドの実行中にのみバインドが存在し、処理中のオブジェクトに関連付けられている既存のバインドを上書きします。 不一致バインドが指定されていない場合、処理対象のオブジェクトに現在関連付けられているバインドが使用されます。

不一致バインドは以下の状況で使用されます。

  • パーティションの増分更新を行う。行が 2 回カウントされないように、代替のファクト テーブルか、既存のファクト テーブルに対するフィルターを指定する必要があります。

  • Microsoft SQL Server Integration Services のデータフロータスクを使用して、ディメンション、マイニングモデル、またはパーティションの処理中にデータを提供します。

不一致バインドは、Analysis Services Scripting Language (ASSL) の一部として記述されます。 ASSL での不一致バインドの詳細については、「 データソースとバインド (SSAS 多次元)」を参照してください。

パーティションの増分更新

通常、既に処理されているパーティションを増分更新する場合は、不一致バインドが必要です。これは、パーティションに対して指定されているバインドが、既にパーティション内で集計されているファクト テーブル データを参照するためです。 Processコマンドを使用して既に処理されているパーティションを増分更新する場合、Analysis Services は次の操作を実行します。

  • 増分更新を行うパーティションと同じ構造の一時パーティションを作成します。

  • Processコマンドで指定されたアウトオブラインバインドを使用して、一時パーティションを処理します。

  • 一時パーティションを、選択された既存のパーティションにマージします。

XML for Analysis (XMLA) を使用したパーティションのマージの詳細については、「 パーティションのマージ (xmla)」を参照してください。

処理エラーの処理

Processコマンドのerrorconfigurationプロパティでは、オブジェクトの処理中に発生したエラーの処理方法を指定できます。 たとえば、ディメンションの処理中に、Analysis Services キー属性のキー列に重複する値が検出されます。 属性キーは一意である必要があるため、Analysis Services は重複するレコードを破棄します。 Errorconfigurationkeyduplicateプロパティに基づいて、Analysis Services 次のことができます。

  • エラーを無視し、ディメンションの処理を続行する。

  • 重複するキーが検出され Analysis Services 処理を続行することを示すメッセージを返します。

Errorconfiguration処理コマンドの実行中にオプションを提供するという類似した条件も多数あります。

書き戻しテーブルの管理

処理コマンドで書き込み許可パーティション、またはまだ完全に処理されていないパーティションのキューブまたはメジャーグループが検出された場合、そのパーティションに書き戻しテーブルがまだ存在していない可能性があります。 ProcessコマンドのWritebackTableCreationプロパティは、Analysis Services が書き戻しテーブルを作成する必要があるかどうかを判断します。

説明

次の例では、Adventure Works DW 多次元2012サンプル Analysis Services データベースを完全に処理します。

コード

<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>  

説明

次の例では、adventure works dw 多次元2012サンプル Analysis Services データベースのAdventure WORKS dwキューブのInternet SalesメジャーグループのInternet_Sales_2004パーティションを増分処理します。 Processコマンドは、 ProcessコマンドのBindingsプロパティで不一致クエリバインドを使用して、パーティションに追加する集計を生成するファクトテーブルの行を取得することにより、2006年12月31日より後の注文日に関する集計をパーティションに追加します。

コード

<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>