Agregaciones y diseños de agregaciones
Un objeto AggregationDesign define un conjunto de definiciones de agregación que se pueden compartir entre varias particiones.
Un objeto Aggregation representa el resumen de los datos de grupo de medida en una granularidad determinada de las dimensiones.
Un objeto Aggregation simple se compone de la información básica y dimensiones. La información Básica incluye el nombre de la agregación, el identificador, anotaciones y una descripción. Las dimensiones son una colección de objetos AggregationDimension que contienen la lista de atributos de granularidad de la dimensión.
Las agregaciones son resúmenes de datos precalculados de las celdas hoja. Las agregaciones mejoran el tiempo de respuesta de las consultas al preparar las respuestas antes de que se formulen las preguntas. Por ejemplo, cuando una tabla de hechos de un almacenamiento de datos contiene cientos de miles de filas, puede tardar en responderse una consulta en la que se soliciten los totales de las ventas semanales de una determinada línea de productos si hay que recorrer y sumar todas las filas de la tabla de hechos para calcular la respuesta en el momento de la consulta. Sin embargo, la respuesta podría ser casi inmediata si se han precalculado los datos de resumen para responder a esta consulta. El precálculo de los datos de resumen se produce durante el procesamiento y constituye la base de los tiempos de respuesta rápida de la tecnología OLAP.
Los cubos son la forma en que la tecnología OLAP organiza los datos de resumen en estructuras multidimensionales. Las dimensiones y sus jerarquías de atributos reflejan las consultas que se pueden hacer al cubo. Las agregaciones se almacenan en la estructura multidimensional en celdas cuyas coordenadas especifican las dimensiones. Por ejemplo, la pregunta "¿Cuáles fueron las ventas del producto X en 1998 para la región noroeste?" implica tres dimensiones (Product, Date y Geography) y una medida (Sales). La respuesta es el valor de la celda del cubo que se encuentra en las coordenadas especificadas (producto X, 1998, Northwest); es decir, un valor numérico simple.
Otras preguntas pueden devolver varios valores. Por ejemplo: "¿Cuáles fueron las ventas de productos de hardware por trimestre y región en 1998?". Estas consultas devuelven conjuntos de celdas de las coordenadas que satisfacen las condiciones especificadas. El número de celdas devueltas por la consulta depende del número de elementos del nivel Hardware de la dimensión Product, los cuatro trimestres de 1998 y el número de regiones de la dimensión Geography. Si todos los datos de resumen se han precalculado en agregaciones, el tiempo de respuesta de la consulta solamente dependerá del tiempo que se necesite para extraer las celdas especificadas. No es necesario calcular ni leer datos de la tabla de hechos.
Aunque el precálculo de todas las posibles agregaciones de un cubo puede acelerar al máximo el tiempo de respuesta de todas las consultas, Analysis Services puede calcular con facilidad determinados valores agregados a partir de otras agregaciones precalculadas. Además, el cálculo de todas las agregaciones posibles requiere gran cantidad de tiempo de procesamiento y espacio de almacenamiento. Por lo tanto, existe un equilibrio entre los requisitos de almacenamiento y el porcentaje de posibles agregaciones que se precalculan. Si no se precalculan agregaciones (0%), la cantidad de tiempo de procesamiento y de espacio de almacenamiento que se necesita para un cubo se reduce al mínimo, aunque el tiempo de respuesta puede ser lento, ya que es preciso recuperar de las celdas hoja los datos necesarios para responder a cada consulta y luego agregarlos en el tiempo de la consulta para responder a cada una de ellas. Por ejemplo, para devolver un único número que responda a la pregunta planteada anteriormente ("¿Cuáles fueron las ventas del producto X en 1998 para la región noroeste?") sería necesario leer miles de filas de datos, extraer el valor de la columna utilizada para proporcionar la medida Sales de cada fila y, a continuación, calcular la suma. Además, la cantidad de tiempo necesario para recuperar los datos dependerá en gran medida del modo de almacenamiento seleccionado para los datos: MOLAP, HOLAP o ROLAP. Tema relacionado: Procesamiento y modos de almacenamiento de particiones.
Diseñar agregaciones
Microsoft SQL Server Analysis Services incorpora un sofisticado algoritmo para seleccionar agregaciones para el precálculo, de manera que se puedan calcular rápidamente otras agregaciones a partir de valores precalculados. Por ejemplo, si se han precalculado agregaciones para el nivel Month de una jerarquía Time, los cálculos de un nivel Quarter solamente necesitarán el resumen de tres números, operación que se puede realizar rápidamente a petición. Esta técnica ahorra tiempo de procesamiento y reduce los requisitos de almacenamiento, con el mínimo efecto en el tiempo de respuesta de consultas.
El Asistente para diseñar agregaciones permite especificar las restricciones de almacenamiento y porcentaje del algoritmo para conseguir un equilibrio satisfactorio entre el tiempo de respuesta de consultas y los requisitos de almacenamiento. Sin embargo, el algoritmo del Asistente para diseñar agregaciones asume que todas las posibles consultas son igualmente probables. El Asistente para optimización basada en el uso permite ajustar el diseño de la agregación de un grupo de medida mediante el análisis de las consultas enviadas por las aplicaciones cliente. Al utilizar el asistente para ajustar la agregación de un cubo, se puede mejorar el tiempo de respuesta de las consultas más frecuentes y reducir el tiempo de respuesta de aquellas consultas poco frecuentes sin afectar sustancialmente a las necesidades de almacenamiento del cubo.
Las agregaciones se diseñan con los asistentes, pero no se calculan hasta que se procesa la partición para la que se han diseñado. Una vez creada la agregación, si cambia la estructura de un cubo o se agregan o cambian datos de las tablas de origen de un cubo, suele ser necesario revisar las agregaciones del cubo y volver a procesarlo. Tema relacionado: Diseñar el almacenamiento y las agregaciones de una partición.