Acerca del procesamiento de cubos
Publicado: julio de 2016
Se aplica a: System Center 2012 SP1 - Service Manager, System Center 2012 R2 Service Manager, System Center 2012 - Service Manager
Una vez implementado el cubo de procesamiento analítico en línea (OLAP) y creadas todas sus particiones, estará listo para ser procesado de modo que sea visible. El procesamiento del cubo es el último paso después de las ejecuciones de extracción, transformación y carga (ETL). Estos pasos se producen de la forma siguiente:
Extraer: extraer datos del sistema de origen
Transformar: aplicar funciones para ajustar los datos a un esquema dimensional estándar
Cargar: cargar los datos en el data mart para el consumo
Proceso: cargar los datos del data mart en el cubo OLAP para la exploración
El procesamiento de un cubo OLAP se produce una vez que se han calculado todas sus agregaciones y se ha cargado con estos datos y agregaciones. Se leen las tablas de hechos y dimensiones, y los datos se calculan y se cargan en el cubo. A la hora de diseñar un cubo OLAP, es necesario reflexionar detenidamente sobre su procesamiento, debido al efecto potencialmente significativo de dicho procesamiento en un entorno de producción donde podrían existir millones de registros. Un proceso completo de todas las particiones en tal entorno podría tardar días o incluso semanas, lo que impediría a los usuarios finales utilizar la infraestructura y los cubos de Service Manager. Una recomendación es deshabilitar el programa de procesamiento de algunos cubos que no se utilizan para reducir la sobrecarga en el sistema.
El procesamiento de los cubos OLAP consta de dos tareas independientes:
Procesamiento de dimensiones
Procesamiento de particiones
Cada cubo OLAP tiene un trabajo de procesamiento correspondiente en la Consola de Service Manager, y se ejecuta en una programación configurable por el usuario. En las siguientes secciones se describe cada tipo de tarea de procesamiento.
Procesamiento de dimensiones
Siempre que se agrega una nueva dimensión a la base de datos del servidor SQL Server Analysis Server (SSAS), se debe ejecutar un proceso completo en la dimensión para que tenga un estado completamente procesado. Sin embargo, una vez procesada la dimensión, no existe ninguna garantía de que se procesará de nuevo cuando se procese otro cubo que tenga como destino la misma dimensión. Al no reprocesar automáticamente la dimensión se impide a Service Manager reprocesar cada dimensión de cada cubo. Esto es especialmente cierto si la dimensión se ha procesado recientemente, ya que es poco probable que existan datos nuevos que todavía no se han procesado. Para optimizar la eficacia del procesamiento, hay una clase singleton, que se define en el módulo de administración de Microsoft.SystemCenter.Datawarehouse.OLAP.Base, denominada Microsoft.SystemCenter.Warehouse.Dimension.ProcessingInterval. El siguiente es un ejemplo de esta clase:
<!-- This singleton class defines the minimum interval of time in minutes that must elapse before a shared dimension is reprocessed. -->
<ClassType ID="Microsoft.SystemCenter.Warehouse.Dimension.ProcessingInterval" Accessibility="Public" Abstract="false" Base="AdminItem!System.AdminItem" Singleton="true">
<Property ID="IntervalInMinutes" Type="int" Required="true" DefaultValue="60"/>
</ClassType>
Esta clase singleton contiene una propiedad, IntervalInMinutes, que describe la frecuencia de procesamiento de una dimensión. De forma predeterminada, esta propiedad se establece en 60 minutos. Por ejemplo, si una dimensión se procesa a las 03:05 p.m. y otro cubo que tiene como destino la misma dimensión se procesa a las 03:45 p.m., la dimensión no se volverá a procesar. Un inconveniente de este enfoque es el aumento de las posibilidades de errores de clave de dimensión. Un mecanismo de reintento controla los errores clave de la dimensión para poder reprocesar tanto la dimensión como la partición del cubo.Para obtener más información sobre los errores de procesamiento, consulte la sección “Problemas comunes de depuración y solución de problemas” del tema Solución de problemas de los cubos OLAP.
Una vez que la dimensión se ha procesado completamente, se ejecuta un procesamiento incremental con ProcessUpdate. La otra ocasión en que se ejecuta ProcessFull es cuando se producen cambios en el esquema de una dimensión, ya que la devuelven a un estado sin procesar. Recuerde que si se realiza ProcessFull en una dimensión, posteriormente, todos los cubos afectados y sus particiones existirán en un estado sin procesar y será necesario procesarlos completamente en su siguiente ejecución programada.
Procesamiento de particiones
Reflexione detenidamente sobre el procesamiento, ya que volver a procesar una partición grande resulta muy lento y consume muchos recursos de CPU en el servidor que hospeda SSAS. Generalmente, el procesamiento de particiones tarda más que el procesamiento de dimensiones. A diferencia del procesamiento de dimensiones, el procesamiento de particiones no tiene efectos secundarios en otros objetos. Los dos únicos tipos de procesamiento que se realizan en los cubos OLAP de System Center 2012 – Service Manager son ProcessFull y ProcessAdd.
De forma similar a las dimensiones, la creación de nuevas particiones en un cubo OLAP requiere una tarea ProcessFull para que la partición esté en un estado en que se pueda consultar. Dado que una tarea ProcessFull es una operación costosa, solo se debe realizar cuando sea necesario; por ejemplo, al crear una partición o al actualizar una fila. En los escenarios en que se hayan agregado nuevas filas y no se haya actualizado ninguna fila, Service Manager puede realizar una tarea ProcessAdd. Para ello, Service Manager utiliza marcas de agua y otros metadatos. En concreto, se consultan las tablas etl.cubepartition y etl.tablepartition para determinar el tipo de procesamiento que se va a llevar a cabo.
El siguiente diagrama ilustra cómo Service Manager determina el tipo de procesamiento que se va a llevar a cabo en función de los datos de marca de agua.
Una vez realizada la tarea ProcessAdd, Service Manager limita el ámbito de la consulta mediante marcas de agua. Por ejemplo, si el valor de InsertedBatchId es 100 y el valor de WatermarkBatchId es 50, la consulta carga únicamente los datos del data mart en el que el valor de InsertedBatchId sea superior a 50 e inferior a 100.
Finalmente, es importante señalar que Service Manager no admite el procesamiento manual de cubos OLAP mediante SSAS o Business Intelligence Development Studio. Si se procesan los cubos con otros métodos distintos de los proporcionados en System Center 2012 – Service Manager, incluidos la Consola de Service Manager y los cmdlets de Service Manager, las tablas de marca de agua no se actualizarán. Por lo tanto, se podrían producir problemas de integridad de datos. En caso de reprocesamiento manual de un cubo de forma accidental, una solución posible es cancelar manualmente el proceso del cubo OLAP de la misma manera. Así, la siguiente vez que Service Manager procese el cubo, realizará automáticamente una tarea ProcessFull, porque las particiones estarán en un estado sin procesar. De esta forma, las marcas de agua y los metadatos se actualizarán correctamente y así se solucionará cualquier posible problema de integridad de datos.
Vea también