18 marzo 2008

Novedades en SQL Server 2008 Parte 2 - SSAS

Hola de nuevo,

En mi última entrega estuvimos hablando de algunas de las novedades que la versión de SQL 2008 nos trae con respecto al mundo de BI y tocamos las nuevas características y/o mejoras en la parte del motor relacional (SQL) e Integration Services (SSIS). En esta entrega estaremos revisando algunas de las principales novedades en Analysis Services. Aqui vamos:

Generalmente hablando no hay cambios radicales en la manera de crear las dimensiones y cubos, pero sí muchas mejoras en la experiencia del usuario, en el rendimiento o performance del motor y en la parte de monitoreo y administración.

  • Dimension Wizard: Anteriormente el mismo asistente para la creación de dimensiones (Dimension Wizard) nos "empujaba" a tener un mal diseño de las dimensiones con respecto a performance. En esta nueva versión el asistente se enfoca en ayudarnos a tener un mejor diseño desde el inicio y por tanto evitar o reducir los problemas de baja performance en el entorno de producción.
    Una de las nuevas posibilidades con el asistente es que ahora se incluye una nueva columna en donde le podemos indicar al asistente si un atributo es "browsable" o mejor dicho, si dicho atributo está diseñado para poder ser incluido en alguno de los ejes (fila, columna, etc) de una consulta y por tanto la posibilidad de crear agregaciones por dicho atributo.

    A continuación cito un ejemplo. Si tenemos una dimensión Reseller (Distribuidor), para cualquiera de los informes o consultas del usuario, el atributo Teléfono no debiera ser usado por si sólo sin tener el nombre del Reseller (no tendría mucho valor tener las ventas según número de teléfono sin tener información del Reseller a quien pertenece dicho teléfono y venta). En este caso en el paso del asistente llamado "SELECT DIMENSION ATTRIBUTES" vamos a dejar de marcar el check box de la columna "Enable Browsing" para dicho atributo. De este modo Analysis Services no permitirá que el atributo sea usado directamente sin el cliente en una consulta en específico, sino tendrá como una propiedad del atributo al que esté relacionado, por ejemplo "Reseller Name".

    Figura 1. El atributo teléfono es el único que no se ha marcado como "Enable Browsing" ya que debe ser tratado como una propiedad del Reseller y no permitir consultas ni crear agregaciones usando este atributo directamente.


Figura 2. El asistente ahora nos permite también indicar el tipo de atributo como se muestra en la figura. Por ejemplo el atributo "English Month Name" lo marcamos como de tipo "Month" dentro del grupo "Calendar".

  • Mejores Prácticas: Algu súper interesante que se ha agregado a los diseñadores son las recomendaciones de diseño, producto de las mejores prácticas en el desarrollo con SSAS. Estas recomendaciones nos dan advertencias o sugerencias a través de líneas curvas de color azul (similares a las que usa Word para corregir la ortografía) o en la ventana de Errores, con respecto al diseño del atributo, dimensión, jerarquía o cubo en el que se esté trabajando.
    Lo bueno además es que podemos personalizar estas recomendaciones habilitándolas/deshabilitándolas o agregándole comentarios para efectos de documentación o auditoría. Estas recomendaciones se pueden personalizar a nivel de todo el proyecto (base de datos de SSAS) o a nivel de una dimensión o cubo.

Figura 3. Analysis Services sugiere que creemos al menos una jerarquía para la dimensión.

Figura 4. Al hacer deployment de la dimensión, SSAS muestra 2 advertencias: "Evite la duplicidad de atributos ocultando los atributos que ya existen en jerarquías" (Categoría, Sub Categoría y Producto); y "Defina las relaciones entre los atributos como 'Rígidas' donde aplique". En este caso si el mismo producto no cambia nunca de categoría, podríamos definirlo como Rígido, lo mismo para la relación entre Sub Categoría y Categoría.

      Figura 5. Podemos indicarle a SSAS que no queremos considerar alguna de las recomendaciones que nos ofrece para una dimensión en específico o para toda la base de datos.

      Figura 6. Para efectos de documentación y auditoría podemos ingresar comentarios cuando queremos deshabilitar algunas de las recomendaciones.

    • Relaciones entre Atributos de Manera Gráfica: Wow, creo que esta de las mejoras que deseábamos muchos. Y es que una de las claves para obtener mejores tiempos de respuesta cuando el usuario consulte los cubos se basa en cómo definimos las relaciones entre atributos de una dimensión. El caso típico es la relación entre los atributo de una dimensión de Tiempo como: Año, Trimestre, Mes y Día. En esta caso en orden de izquierda a derecha, cada atributo es padre del otro. Para este caso tenemos un nuevo "tab" en diseñador de dimensiones que nos permite hacer las relaciones entre atributos de manera gráfica mediante "drag and drop". Esto es mil veces más fácil que hacerlo desde la ventana de propiedades.


    Figura 7: La pantalla para definir las relaciones entre los atributos de manera gráfica con simples "drag and drop".

    Figura 8: Además de definir las relaciones entre los atributos de la dimensión de Tiempo en la figura, podemos definir si las relaciones entre atributos son flexibles o rígidas. Rígidas en el caso de la dimensión de tiempo.


    • DYNAMIC SET: Se agregó una nueva extensión al lenguaje MDX para incluir ahora los SETs (conjuntos) Dinámicos. Por si no lo notaron, la versión 2005 nos permitía crear SETS (usando CREATE SET) pero éstos sólo se calculaban al hacer deployment del cubo (como parte de los "Calculations"). Es decir, si creabamos una función para devolver los 5 principales clientes según ventas, esto funcionará bien solamente si no incluimos ningún filtro o cláusula WHERE que seleccione a un miembro distinto a "ALL" (Todos) de cualquiera de los atributos.
      Por ejemplo si a mi consulta donde utilizo el NAMED SET para devolver los TOP 5 clientes según ventas le agregamos un WHERE que filtre el Año igual a 2001, obtendremos resultados incorrectos, ya que SSAS no vuelve a calcular el NAME SET nuevamente (sólo sirve cuando se use el Named Set sin filtro alguno).
      Aquí es donde aparecen los DYNAMIC SET (CREATE DYNAMIC SET) al rescate. Y es que con sólo agregar la palabra DYNAMIC a nuestra sintaxis de creación del SET anterior, tendremos el conjunto de los 5 clientes principales funcionando como queríamos incluso incluyendo distintos filtros para cualquiera de los demás atributos.


    • DYNAMIC MANAGEMENT VIEWS (DMV): Esta es la mejor ayuda que el administrador de base de datos puede haber deseado. Y es que ahora SSAS soporta el uso de Dynamic Management Views similares a los que tenemos en SQL 2005 relacional para monitorear toda la actividad del servidor de Analysis Services, como las conexiones, sesiones, usuarios, consultas que se estén ejecutando, estadísticas con respecto a la consulta, etc. Estas vistas pueden ser consultadas de forma simple como un "SELECT * FROM $system.discover_connections" sobre un conexión a SSAS usando un DMX query. aunque el SELECT se ve idéntico a un query de SQL relacional, esta consulta se ejecuta sobre el motor de Analysis Services gracias a que se incluyó esta nueva extensión al lenguaje MDX para aceptar este tipo de consultas de igual manera a como las utilizamos sobre SQL.
      Lo mejor de todo es que podemos usar estas consultas a los DMV para generar nuestras propias gráficas estadísticas en Reporting Services o cualquier otra herramienta para monitoreo. Es bastante probable que posterior al lanzamiento oficial de la versión final de SQL 2008, Microsoft publique algunas extensiones que incluyan una serie de reportes para monitorear SSAS usando los DMV, mientras tanto podemos hacerlo nosotros mismos sin relativamente muchas complicaciones.

    Figura 9: Consulta usando las extensiones de MDX hacia los DMV. En la figura se muestra cómo saber cuáles son todos los DMVs existentes.

    Figura 10: Consulta para obtener las conexiones existentes a SSAS.

    Figura 11: Consulta para obtener las sesiones abiertas.

    Además de todas estas mejoras el motor de consultas de Analysis Services ha sido mejorado para responder mucho más rápido cuanto tengamos miembros calculados sin mayores cambios a nuestro código MDX. Otra de las mejoras más importantes desde mi punto de vista es el "Aggregation Wizard" o "Asistente de Agregaciones" el cual ha sido rediseñado totalmente, entre las características más importantes es que ahora podemos tener más de un diseño de agregación y podemos asignarlos a nuestras particiones según su uso. Más adelante espero dedicar un post completo a este tema.

    Esto ha sido todo por hoy, en la próxima entrega revisaremos las principales mejoras a Reporting Services 2008.


    Alan.

    2 comentarios:

    Anónimo dijo...

    Y como se lograba esta restricción en SSAS 2005?

    Una de las nuevas posibilidades con el asistente es que ahora se incluye una nueva columna en donde le podemos indicar al asistente si un atributo es "browsable" o mejor dicho, si dicho atributo está diseñado para poder ser incluido en alguno de los ejes (fila, columna, etc) de una consulta y por tanto la posibilidad de crear agregaciones por dicho atributo.

    Gracias por la respuesta.

    Alan Koo dijo...

    En ese caso puede usar la propiedad del atributo AttributeHierarchyEnabled = False.
    Con esto marcas a ese atributo como no agregable, pero lo puedes mostrar como propiedad de otro atributo. Esto aplicaría por ejemplo al atributo Número de Teléfono en una dimensión de Clientes. Usando cualquier herramienta cliente como Excel 2007, no podrás usar este atributo directamente, puedes llamar a ese atributo como propiedad de otro, por ejemplo un atributo Nombre de Cliente.

    Alan