处理对象 (XMLA)

在 Microsoft SQL Server SQL Server Analysis Services中,处理是将数据转换为业务分析信息的步骤或一系列步骤。 处理因对象类型而异,但处理始终是将数据转换为信息的一个环节。

若要处理SQL Server Analysis Services对象,可以使用 Process 命令。 Process 命令可以在SQL Server Analysis Services实例上处理以下对象:

  • 多维数据集

  • 数据库

  • 维度

  • 度量值组

  • 挖掘模型

  • 挖掘结构

  • 分区

若要控制对象的处理, Process 命令具有可以设置的各种属性。 Process 命令具有控制的属性:将执行多少处理、将处理哪些对象、是否使用行外绑定、如何处理错误以及如何管理写回表。

指定处理选项

Process 命令的 Type 属性指定处理对象时要使用的处理选项。 有关处理选项的详细信息,请参阅 “处理选项和设置” (Analysis Services)

下表列出了 Type 属性的常量以及可以使用每个常量处理的各种对象。

类型 适用对象
ProcessFull 多维数据集、数据库、维度、度量值组、挖掘模型、挖掘结构和分区
ProcessAdd 维度和分区
ProcessUpdate 维度
ProcessIndexes 维度、多维数据集、度量值组和分区
ProcessData 维度、多维数据集、度量值组和分区
ProcessDefault 多维数据集、数据库、维度、度量值组、挖掘模型、挖掘结构和分区
ProcessClear 多维数据集、数据库、维度、度量值组、挖掘模型、挖掘结构和分区
ProcessStructure 多维数据集和挖掘结构
ProcessClearStructureOnly 挖掘结构
ProcessScriptCache 多维数据集

有关处理SQL Server Analysis Services对象的详细信息,请参阅 (Analysis Services) 处理多维模型

指定要处理的对象

Process 命令的 Object 属性包含要处理的对象的对象标识符。 在 Process 命令中只能指定一个对象,但处理对象也会处理任何子对象。 例如,在处理多维数据集中的一个度量值组时会处理该度量值组的所有分区;在处理一个数据库时会处理该数据库所包含的所有对象,包括多维数据集、维度和挖掘结构。

如果将 Process 命令的 ProcessAffectedObjects 属性设置为 true,则也会处理受处理指定对象影响的任何相关对象。 例如,如果使用 Process 命令中的 ProcessUpdate 处理选项以增量方式更新维度,则如果 ProcessAffectedObjects 设置为 true,也会 SQL Server Analysis Services处理由于要添加或删除成员而使聚合失效的任何分区。 在这种情况下,单个 Process 命令可以在SQL Server Analysis Services实例上处理多个对象,但SQL Server Analysis Services确定进程命令中指定的单个对象以外的哪些对象也必须进行处理。

但是,可以使用 Batch 命令中的多个进程命令同时处理多个对象,例如维度。 批处理操作比使用 ProcessAffectedObjects 属性更精细地控制SQL Server Analysis Services实例上的对象的串行或并行处理,并让你能够优化处理方法,以便为更大的SQL Server Analysis Services数据库优化处理方法。 有关执行批处理操作的详细信息,请参阅 执行批处理操作 (XMLA)

指定外部绑定

如果 Batch命令不包含 Process 命令,可以选择在处理的对象的 BindingsDataSource 和 DataSourceView 属性中指定行外绑定。 行外绑定引用数据源、数据源视图和其他对象,这些对象仅在 执行 Process 命令期间存在绑定,并替代与正在处理的对象关联的任何现有绑定。 如果未指定外部绑定,则使用当前与要处理的对象关联的绑定。

外部绑定用在以下情况下:

  • 增量处理一个分区,其中必须指定另一个事实数据表或现有事实数据表上的一个筛选器以确保不会对行进行两次计数。

  • 在 Microsoft SQL Server Integration Services 中使用数据流任务在处理维度、挖掘模型或分区时提供数据。

外部绑定属于 Analysis Services 脚本语言 (ASSL) 的一部分。 有关 ASSL 中行外绑定的详细信息,请参阅 数据源和绑定 (SSAS 多维)

增量更新分区

增量更新已处理的分区时通常需要外部绑定,原因在于为该分区指定的绑定会引用已在该分区中聚合的事实数据表数据。 使用 Process 命令以增量方式更新已处理的分区时,SQL Server Analysis Services执行以下操作:

  • 创建一个与要增量更新的分区具有相同结构的临时分区。

  • 使用 Process 命令中指定的行外绑定处理临时分区。

  • 将该临时分区与所选现有分区合并。

有关使用 XML for Analysis (XMLA) 合并分区的详细信息,请参阅 合并分区 (XMLA)

对处理错误进行处理

使用 Process 命令的 ErrorConfiguration 属性可以指定如何处理处理对象时遇到的错误。 例如,在处理维度时,SQL Server Analysis Services在键属性的键列中遇到重复值。 由于属性键必须是唯一的,因此SQL Server Analysis Services丢弃重复的记录。 根据 ErrorConfigurationKeyDuplicate 属性,SQL Server Analysis Services可以:

  • 忽略错误并继续处理该维度。

  • 返回一条消息,指出SQL Server Analysis Services遇到重复键并继续处理。

ErrorConfigurationProcess 命令期间提供了许多类似的条件。

管理写回表

如果 Process 命令遇到启用了写入的分区,或此类分区的多维数据集或度量值组(尚未完全处理),则该分区可能尚不存在写回表。 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 命令在 2006 年 12 月 31 日晚于 2006 年 12 月 31 日之后将订单日期的聚合添加到分区,方法是在 Process 命令的 Bindings 属性中使用行外查询绑定来检索要从中生成聚合以添加到分区的事实数据表行。

代码

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