Procesar objetos (XMLA)

En Microsoft SQL Server SQL Server Analysis Services, el procesamiento es el paso o serie de pasos que convierten los datos en información para el análisis empresarial. El procesamiento varía en función del tipo de objeto, pero siempre forma parte de la conversión de datos en información.

Para procesar un objeto SQL Server Analysis Services, puede usar el comando Process. El comando Process puede procesar los siguientes objetos en una instancia de SQL Server Analysis Services:

  • Cubos

  • Bases de datos

  • Dimensions

  • Grupos de medida

  • Modelos de minería de datos

  • Estructuras de minería de datos

  • Particiones

Para controlar el procesamiento de objetos, el comando Process tiene varias propiedades que se pueden establecer. El comando Process tiene propiedades que controlan la cantidad de procesamiento que se realizará, qué objetos se procesarán, si se usarán enlaces fuera de línea, cómo controlar errores y cómo administrar tablas de reescritura.

Especificar opciones de procesamiento

La propiedad Type del comando Process especifica la opción de procesamiento que se va a usar al procesar el objeto. Para obtener más información sobre las opciones de procesamiento, vea Opciones de procesamiento y configuración (Analysis Services) .

En la tabla siguiente se enumeran las constantes de la propiedad Type y los distintos objetos que se pueden procesar mediante cada constante.

Valor de tipo Objetos aplicables
ProcessFull Cubo, base de datos, dimensión, grupo de medida, modelo de minería de datos, estructura de minería de datos, partición
ProcessAdd Dimensión, partición
ProcessUpdate Dimensión
ProcessIndexes Dimensión, cubo, grupo de medida, partición
ProcessData Dimensión, cubo, grupo de medida, partición
ProcessDefault Cubo, base de datos, dimensión, grupo de medida, modelo de minería de datos, estructura de minería de datos, partición
ProcessClear Cubo, base de datos, dimensión, grupo de medida, modelo de minería de datos, estructura de minería de datos, partición
ProcessStructure Cubo, estructura de minería de datos
ProcessClearStructureOnly Estructura de minería de datos
ProcessScriptCache Cubo

Para obtener más información sobre el procesamiento de objetos SQL Server Analysis Services, vea Procesamiento de un modelo multidimensional (Analysis Services).

Especificar los objetos que se van a procesar

La propiedad Object del comando Process contiene el identificador de objeto del objeto que se va a procesar. Solo se puede especificar un objeto en un comando Process , pero el procesamiento de un objeto también procesa los objetos secundarios. Por ejemplo, al procesar un grupo de medida de un cubo se procesan todas las particiones de dicho grupo de medida, mientras que al procesar una base de datos se procesan todos los objetos contenidos en ésta (incluidos los cubos, las dimensiones y las estructuras de minería de datos).

Si establece el atributo ProcessAffectedObjects del comando Process en true, también se procesa cualquier objeto relacionado afectado por el procesamiento del objeto especificado. Por ejemplo, si una dimensión se actualiza incrementalmente mediante la opción de procesamiento ProcessUpdate en el comando Process, cualquier partición cuyas agregaciones se invalidan debido a que los miembros que se agregan o eliminan también se procesan mediante SQL Server Analysis Services si ProcessAffectedObjects está establecido en true. En este caso, un único comando Process puede procesar varios objetos en una instancia de SQL Server Analysis Services, pero SQL Server Analysis Services determina qué objetos además del único objeto especificado en el comando Process también se deben procesar.

Sin embargo, puede procesar varios objetos, como dimensiones, al mismo tiempo mediante el uso de varios comandos Process dentro de un comando batch . Las operaciones por lotes proporcionan un nivel de control más preciso para el procesamiento en serie o paralelo de objetos en una instancia de SQL Server Analysis Services que con el atributo ProcessAffectedObjects y permiten optimizar el enfoque de procesamiento para bases de datos de SQL Server Analysis Services más grandes. Para obtener más información sobre cómo realizar operaciones por lotes, vea Realizar operaciones por lotes (XMLA).

Especificar enlaces fuera de línea

Si un comando batch no contiene el comando Process, opcionalmente puede especificar enlaces fuera de línea en las propiedades Bindings, DataSource y DataSourceView del comando Process para los objetos que se van a procesar. Los enlaces fuera de línea son referencias a orígenes de datos, vistas de origen de datos y otros objetos en los que el enlace solo existe durante la ejecución del comando Process y que invalidan los enlaces existentes asociados a los objetos que se procesan. Si no se especifican enlaces fuera de línea, se utilizan los enlaces actualmente asociados a los objetos que se van a procesar.

Los enlaces fuera de línea se utilizan en las circunstancias siguientes:

  • Procesamiento incremental de una partición, donde debe especificarse una tabla de hechos alternativa o aplicarse un filtro a la tabla de hechos existente para asegurarse de que las filas no se cuentan dos veces.

  • Usar una tarea de flujo de datos en Microsoft SQL Server Integration Services para proporcionar datos al procesar una dimensión, un modelo de minería de datos o una partición.

Los enlaces fuera de línea se describen como parte de Analysis Services Scripting Language (ASSL). Para obtener más información sobre los enlaces fuera de línea en ASSL, vea Orígenes de datos y enlaces (SSAS multidimensionales).

Actualizar particiones de forma incremental

La actualización incremental de una partición ya procesada suele requerir un enlace fuera de línea, ya que el enlace especificado para la partición hace referencia a datos de la tabla de hechos ya agregados en la partición. Al actualizar incrementalmente una partición ya procesada mediante el comando Process, SQL Server Analysis Services realiza las siguientes acciones:

  • Crea una partición temporal con una estructura idéntica a la de la partición que se va a actualizar incrementalmente.

  • Procesa la partición temporal mediante el enlace fuera de línea especificado en el comando Process .

  • Mezcla la partición temporal con la partición existente seleccionada.

Para obtener más información sobre cómo combinar particiones mediante XML for Analysis (XMLA), vea Combinación de particiones (XMLA).

Controlar los errores de procesamiento

La propiedad ErrorConfiguration del comando Process permite especificar cómo controlar los errores detectados durante el procesamiento de un objeto. Por ejemplo, al procesar una dimensión, SQL Server Analysis Services encuentra un valor duplicado en la columna de clave del atributo de clave. Dado que las claves de atributo deben ser únicas, SQL Server Analysis Services descarta los registros duplicados. Según la propiedad KeyDuplicate de ErrorConfiguration, SQL Server Analysis Services podría:

  • Omitir el error y continuar el procesamiento de la dimensión.

  • Devuelve un mensaje que indica que SQL Server Analysis Services encontró una clave duplicada y continúa el procesamiento.

Hay muchas condiciones similares para las que ErrorConfiguration proporciona opciones durante un comando Process .

Administrar tablas de reescritura

Si el comando Process encuentra una partición habilitada para escritura o un cubo o grupo de medida para dicha partición, que aún no está totalmente procesado, es posible que una tabla de reescritura no exista todavía para esa partición. La propiedad WritebackTableCreation del comando Process determina si SQL Server Analysis Services debe crear una tabla de reescritura.

Ejemplos

Descripción

En el ejemplo siguiente se procesa completamente el ejemplo Adventure Works DW Multidimensional 2012 SQL Server Analysis Services base de datos.

Código

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

Descripción

En el ejemplo siguiente se procesa incrementalmente la partición Internet_Sales_2004 en el grupo de medida Internet Sales del cubo Adventure Works DW en la base de datos de ejemplo Multidimensional 2012 de Adventure Works SQL Server Analysis Services. El comando Process agrega agrega agregaciones para las fechas de pedido posteriores al 31 de diciembre de 2006 a la partición mediante un enlace de consulta fuera de línea en la propiedad Bindings del comando Process para recuperar las filas de la tabla de hechos de las que se van a generar agregaciones para agregar a la partición.

Código

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