Bonnes pratiques de design SSAS

Passons en revue quelques bonnes pratiques de design SSAS

Design des dimensions

 

Création de relations entre attributs

Il est important de créer des relations entre les attributs au sein d'une dimension. En effet les agrégats sont calculés à partir des relations entre les attributs.

 

Eviter de rajouter des attributs non utilisé

L'ajout d'attributs non utilisé affecte l'espace de stockage du cube et en même temps les performances.

S'il n'est pas nécessaire de créer une hiérarchie pour un attribut, il est intéressant de définir la propriété AttributeHierachyEnabled à false.

Le fait de configurer cette propriété améliore les temps de processing et diminue la taille du cube car l'attribut ne sera plus indexé ni agrégé.

Il est intéressant d'appliquer cette règle par exemple pour une adresse ou un numéro de téléphone.

 

Utilisation des clés numériques

L'usage de clés numérique améliore les performances, ce qui est particulièrement vrai pour les dimensions avec un nombre de membres important.

 

Extrait du Microsoft SQL Server 2005 Analysis Services Performance Guide

From a processing perspective, it is a best practice to assign a numeric source field to the KeyColumns property rather than a string property. Not only can this reduce processing time, in some scenarios it can also reduce the size of the dimension. This is especially true for attributes that have a large number of members, i.e., greater than 1 million members.

 

Eviter de créer des relations redondantes au sein des attributs

La redondance au niveau des attributs a un impact au niveau des performances.

Par exemples si les relations entre attributs A->B, B->C, et A->C ont été crées, A->C est redondant et devrait être enlevé.

 

Définition des types de relation dans le temps

Si les relations entre attributs ne changent pas au cours du temps, il est important de les définir comme Rigid. Ainsi, les agrégats ne sont pas détruits lorsque du process de la dimension.

 

Traitement des erreurs dans le processing d'une dimension

Il faut éviter de configurer la propriété ErrorConfigurations est definini à IgnoreError.

Il est préférable de traiter en amont la correction de données et d'identifier les lignes en erreur.

 

Création des relations au sein des différents niveaux d'une hiérarchie

Dans un souci de performance, il est important de définir des relations au sein des attributs qui définissent une hiérarchie.

 

Eviter de créer des relations de type diamond-shaped

Une relation de type " Diamond-shaped" correspond à une chaîne d'attributs qui ont se séparent et se rejoignent par la suite.

Ce type de relation peut avoir un impact lors de la création des agrégats sur le serveur.

Dans ce cas, il est fortement recommandé de créer une hiérarchie utilisateur qui contient tous les chemins.

 

Design du cube

Eviter d'avoir beaucoup de dimension parent-child

L'usage des relations parent-enfant doit être effectué avec parcimonie.

 

Eviter d'avoir un groupe de mesure intermediaire ou une dimension trop importante dans une relation many-to-many

Les relations many-to-many sont calculées à la vole, ce qui peut être pénalisant pour les dimensions importantes ou les groupes de mesures intermédiaires.

 

Eviter de créer plusieurs groups de mesure avec les mêmes axes d'analyse et le même niveau de granularité.

Le fait d'avoir un nombre important de groupe de mesure peut avoir un impact sur les performances.

Si les axes d'analyse sont communs avec la même granularité des indicateurs, il est pertinent de regrouper les groupes de mesures.

 

 

Isoler chaque distinct count mesure dans un groupe de mesure séparé

Positionner chaque distinct count mesure dans son propre groupe de mesure améliore les performances.

 

Matérialiser les mesures de référence

Afin d'améliorer les performances, les dimensions de référence doivent être matérialisées.