En Analysis Services todos los atributos de una dimensión están relacionados directa o indirectamente con el atributo clave. La mayor parte de los atributos suelen estar relacionados directamente con el atributo clave, sin embargo también nos encontramos con otra serie de atributos que se relacionan jerárquicamente con dicho atributo clave. Es el caso de las jerarquías naturales, cuyos atributos se relacionan unos con otros en función de los niveles que tenga, y ya el último nivel es el que se relaciona con el atributo clave. Veamos un ejemplo: si en la dimensión

Cliente tenemos un atributo clave llamado Cliente y una jerarquía natural formada por los niveles País, Provincia, Población y Cliente, el país se relaciona con la provincia, la provincia con la población, y la población con el cliente.Cuando definimos relaciones entre atributos debemos conocer y configurar correctamente las siguientes propiedades:

  • Cardinality. Determina la “cardinalidad” de la relación. Valores:
    • Many, para relaciones de varios a uno.
    • One, para relaciones de uno a uno.
  • RelationshipType. Indica si las relaciones de los miembros cambian a lo largo del tiempo. Valores:
    • Rigid, no cambian a lo largo del tiempo. Por ejemplo, la relación entre año y mes no cambia, un mes de un año, nunca pasará a ser de otro año. Cuando se realice una actualización incremental se mantendrán las agregaciones, produciendo un error si hubiese algún cambio.
    • Flexible, cambian a lo largo del tiempo. Por ejemplo, un cliente puede vivir en una provincia, y con el tiempo ir a vivir a otra provincia.
  • Visible. Determina la visibilidad de la relación de los atributos.

La configuración de estas propiedades y la correcta definición de relaciones entre atributos, permitirá obtener un almacenamiento interno optimizado, lo que mejorará el tiempo de procesamiento, el tamaño del almacenamiento y el tiempo de respuesta de las consultas que reciba.

Figura 1 – Dimensión Hora. Relaciones entre Atributos

Figura 1 – Dimensión Hora. Relaciones entre Atributos

Nota: La imagen anterior es de Analysis Services 2008. El nuevo diseñador de relaciones entre atributos (attribute relationships) es una de las mejoras en usabilidad con respecto a 2005. Puede comprobar que esta pestaña no está disponible en la imagen “Atributos, Jerarquías y Niveles” obtenida con la versión 2005.

Veamos un ejemplo, basado en la dimensión Hora, para entender lo comentado anteriormente. Supongamos que en la dimensión Hora tenemos, entre otros, los atributos Hora, Minuto, Segundo, y que IdHora es el atributo clave. Si definimos una relación de cada atributo con el atributo clave, Hora estará relacionado con IdHora, Minuto estará relacionado con IdHora, y Segundo también estará relacionado con IdHora. En ese caso, cuando se produce el diseño del almacenamiento, el motor entiende que para obtener las agregaciones a nivel Todos (All) debe sumar las celdas de todos los Segundos de las 24 Horas del día, por tanto sumar 86400 celdas; para obtener las agregaciones de cada Hora debe sumar todos los segundos, 3600 celdas; y así sucesivamente. En ningún momento es conocedor de que el nivel Todos (All), que son las 24 Horas del día, es la suma de las horas, una Hora la suma de los minutos, y un Minuto la suma de los segundos. Por tanto el tiempo de respuesta será menor, tendrá que leer más celdas en el caso de que los datos solicitados por la consulta no estén pre-calculados y almacenados. En cambio si definimos de forma optimizada las relaciones entre los atributos, indicaremos que el nivel Todos (All) está relacionado con la Hora, que la Hora está relacionado con los Minutos, y que los Minutos están relacionados con los Segundos. Además, dado que estas relaciones entre atributos de la dimensión Hora no cambiarán nunca, indicaremos que son relaciones rígidas. A partir de este momento el motor, cuando vaya a diseñar el almacenamiento tendrá información para conocer que para obtener la información de un Día le basta con sumar las 24 celdas de sus Horas, para obtener la información de una Hora sumará las 60 celdas de sus Minutos, y así sucesivamente. Obteniendo así un almacenamiento más optimizado, y las mejoras de rendimiento en las consultas comentadas anteriormente.

Salvador Ramos

Consultor, Formador y Mentor en Business Intelligence. SQL Server MVP.
Director de Formación en SolidQ.
Microsoft MCSE 2012: Business Intelligence.

Latest posts by Salvador Ramos (see all)