Procesar objetos (XMLA)
En Microsoft SQL Server Analysis Services, procesar es el paso o la serie de pasos que sirven para convertir datos en información para 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 de Analysis Services, puede utilizar el comando Process. El comando Process puede procesar los siguientes objetos en una instancia de Analysis Services:
Cubos
Bases de datos
Dimensiones
Grupos de medida
Modelos de minería de datos
Estructuras de minería de datos
Particiones
Para controlar el procesamiento de los objetos, pueden establecerse diversas propiedades del comando Process. El comando Process tiene propiedades para controlar: qué cantidad de procesamiento se va a realizar, qué objetos se van a procesar, si se van a utilizar o no enlaces fuera de línea, cómo controlar los errores y cómo administrar las tablas de reescritura.
Especificar opciones de procesamiento
La propiedad Type del comando Process especifica la opción de procesamiento que se va a utilizar al procesar el objeto. Para obtener más información acerca de las opciones de procesamiento, vea Configuración y opciones de procesamiento.
En la tabla siguiente se enumeran las constantes para la propiedad Type y los diversos objetos que se pueden procesar con cada una de las constantes.
Valor de Type |
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 acerca de cómo procesar objetos de Analysis Services, vea Procesar objetos de 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. En un comando Process solamente puede especificarse un objeto, si bien al procesar un objeto también se procesan sus 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 de forma incremental al utilizar la opción de procesamiento ProcessUpdate en el comando Process, Analysis Services también procesará toda partición cuyas agregaciones se invaliden debido a la adición o eliminación de miembros si ProcessAffectedObjects se ha establecido en true. En este caso, un único comando Process puede procesar varios objetos de una instancia de Analysis Services, si bien Analysis Services determina qué objetos deberán procesarse además del objeto único especificado en el comando Process.
No obstante, puede procesar diversos objetos (como dimensiones) al mismo tiempo si utiliza varios comandos Process dentro de un comando Batch. Las operaciones por lotes proporcionan un control más preciso para el procesamiento en serie o en paralelo de los objetos de una instancia de Analysis Services que el uso del atributo ProcessAffectedObjects; además, permiten optimizar el enfoque del procesamiento para bases de datos de Analysis Services de mayor tamaño. 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, tiene la opción de especificar enlaces fuera de línea en las propiedades Bindings, DataSource y DataSourceView del comando Process para que se procesen los objetos. Los enlaces fuera de línea son referencias a orígenes de datos, vistas del origen de datos y otros objetos en los que el enlace existe solamente durante la ejecución del comando Process y que invalidan cualquier enlace existente asociado 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.
Uso de una tarea de flujo de datos en Microsoft SQL Server Integration Services para proporcionar datos mientras se procesa 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 (Analysis Services - Datos 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, 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, utilizando 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 la mezcla de particiones con XML for Analysis (XMLA), vea Mezclar particiones (XMLA).
Controlar los errores de procesamiento
La propiedad ErrorConfiguration del comando Process permite especificar cómo controlar los errores encontrados al procesar un objeto. Por ejemplo, durante el procesamiento de una dimensión, Analysis Services encuentra un valor duplicado en la columna de clave del atributo clave. Dado que las claves de atributo deben ser únicas, Analysis Services descarta los registros duplicados. En función de la propiedad KeyDuplicate de ErrorConfiguration, Analysis Services puede:
Omitir el error y continuar el procesamiento de la dimensión.
Devolver un mensaje que indique que Analysis Services encontró una clave duplicada y continuar el procesamiento.
Hay muchas condiciones similares para las que ErrorConfiguration proporciona opciones durante la ejecución de 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 este tipo de partición) que aún no se haya procesado por completo, puede que aún no exista una tabla de reescritura para esa partición. La propiedad WritebackTableCreation del comando Process determina si Analysis Services debe crear una tabla de reescritura.
Ejemplos
Descripción
En el ejemplo siguiente se procesa por completo la base de datos de ejemplo Adventure Works DW de Analysis Services.
Código
<Process xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
<Object>
<DatabaseID>Adventure Works DW</DatabaseID>
</Object>
<Type>ProcessFull</Type>
<WriteBackTableCreation>UseExisting</WriteBackTableCreation>
</Process>
Descripción
En el ejemplo siguiente se procesa de forma incremental 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 Adventure Works DW de Analysis Services. El comando Process incluye agregaciones para fechas de pedidos posteriores al 31 de diciembre de 2006 en la partición; para ello, utiliza un enlace de consulta fuera de línea en la propiedad Bindings del comando Process a fin de recuperar las filas de la tabla de hechos a partir de las que se van a generar las agregaciones para agregar a la partición.
Código
<Process ProcessAffectedObjects="true" xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
<Object>
<DatabaseID>Adventure Works DW</DatabaseID>
<CubeID>Adventure Works DW</CubeID>
<MeasureGroupID>Fact Internet Sales 1</MeasureGroupID>
<PartitionID>Internet_Sales_2006</PartitionID>
</Object>
<Bindings>
<Binding>
<DatabaseID>Adventure Works DW</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>