Gestion des devises sous Analysis Services
La gestion de conversion des devises est un besoin récurrent dans l’analyse de données.
Plusieurs approches permettent de traiter ce besoin au niveau d’Analysis Services.
Hypothèses
- Nous présenterons dans cet article le fait d’entrer des données dans la table de fait dans plusieurs devises et de pouvoir convertir les données dans plusieurs devises.
- Nous utiliserons une table de conversion qui sera basé sur une devise pivot qui est l’Euro dans notre cas. L’avantage d’utiliser une table de conversion est de pouvoir convertir les données après le processus de chargement des données et également de modifier les valeurs des taux de conversion.
- Une vue « ViewFactInternetSales » s’appuiera sur la table de faits « FactInternetSales » et la table de conversion pour convertir l’ensemble des données dans la devise cible qui est l’Euro. Le groupe de mesure du cube sera construit à partir de cette vue.
- De plus, nous construisons une vue « ViewFactCurrentRate » qui enregistre les taux de conversion de l’Euro, notre devise cible vers les autres devises avec la mesure « EndOfDayRate ». Cette devise est liée à la dimension temps. De plus cette vue ventile le dernier taux de conversion sur les périodes antérieures avec la mesure « LastEndofDayRate »
Le schéma ci-dessous illustre la modélisation des tables et vues mise en relation.
Modélisation du cube
Les propriétés suivantes ont été définies pour la dimension devise « DimCurrency » :
- Le type de la dimension est « Currency »,
- La propriété « IsAggregatable » de l’attribut Currency est à « false »,
- Le membre par défaut est « Euro » de tel sorte que si nous naviguons dans le cube sans positionner sur la dimension « DimCurrency », les données sont automatiquement filtrées par ce membre.
Création d’une mesure qui s’adapte à la devise sélectionné
En utilisant la propriété « MeasureExpression », nous définissons la mesure en devise locale, la mesure en Euro multiplié par le taux de conversion qui permet d’obtenir les autres devises.
Comme le montre la copie d’écran ci-dessous, le taux de conversion « End of Day Rate » est une mesure semi-additive.
La relation entre la dimension devise et FactInternetSales se fait par le biais d’une relation « many to many »
Enfin la dernière étape consiste à utiliser la propriété « Direct Slice » sur le membre de la devise pivot, qui est l’Euro dans notre cas. Cette propriété permet d’éviter d’appliquer la conversion lorsque la devise affichée est Euro.