次の方法で共有


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

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

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

  • キューブ

  • データベース

  • Dimensions

  • メジャー グループ

  • [マイニング モデル]

  • マイニング構造

  • [ パーティション]

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

処理オプションの指定

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

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

の値 適用されるオブジェクト
ProcessFull キューブ、データベース、ディメンション、メジャー グループ、マイニング モデル、マイニング構造、パーティション
ProcessAdd ディメンション、パーティション
ProcessUpdate Dimension
ProcessIndexes ディメンション、キューブ、メジャー グループ、パーティション
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 コマンドで 1 つのSQL Server Analysis Services インスタンス上の複数のオブジェクトを処理できますが、SQL Server Analysis Servicesは、Process コマンドで指定された単一のオブジェクト以外に処理する必要があるオブジェクトも決定します。

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

不一致バインドの指定

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

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

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

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

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

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

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

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

  • [プロセス] コマンドで指定した行外バインディングを使用して、一時パーティションを処理します。

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

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

処理エラーの処理

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

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

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

Process コマンドの間に ErrorConfiguration がオプションを提供する多くの同様の条件があります。

書き戻しテーブルの管理

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

説明

次の例では、Adventure Works DW 多次元 2012 サンプル SQL Server 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 サンプル SQL Server 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>