Dans un projet décisionnel, il est nécessaire lors de la restitution des données de les formater. Par exemple, si vous présentez des données financières, il va falloir les afficher correctement.
Dans une architecture applicative classique, on laisse ce travail à la couche de présentation. Dans un contexte décisionnel, cette couche de présentation peut être Reporting Services qui gère le formatage mais ce peut-être aussi un client OLAP autonome comme Excel.
Excel sait gérer aussi le formatage mais c’est aux utilisateurs de le configurer via les options de la PivotTable :
Cette manipulation n’est pas à faire par les utilisateurs finaux, surtout pour des formats triviaux comme des devises.
Analysis Services permet d’ajouter des informations de formatage sur chaque cellule pour guider les clients OLAP dans leur réprésentation des données. Ainsi, quand on déclare un membre calculé par exemple, on ajoute la clause FORMAT_STRING décrivant le membre :
CREATE MEMBER CURRENTCUBE.[Measures].[Prix TTC]
AS [Measures].[Prix Vendu]*1.196,
FORMAT_STRING = "Currency"
Cette configuration se fait aussi via l’assistant :
Un client OLAP peut récupérer cette information en précisant une clause dans la requête MDX qu’il fait à Analysis Services.
SELECT {[Measures].[Prix TTC]} ON COLUMNS
FROM [CubSales]
CELL PROPERTIES VALUE, FORMAT_STRING
Excel précise bien cette clause dans ses échanges avec SSAS. Or il se peut qu’il n’arrive pas à représenter un membre calculé de type monétaire malgré l’information provenant du cube.
Une des solutions pour résoudre ce problème serait d’ajouter la clause FORMATTED_VALUE pour forcer le formatage des cellules par Analysis Services avant de renvoyer les données. On peut le vérifier avec une requête MDX dans Management Studio :
SELECT {[Measures].[Prix TTC]} ON COLUMNS
FROM [CubSales]
CELL PROPERTIES VALUE, FORMAT_STRING, FORMATTED_VALUE
Mais Excel ne permet pas de préciser ce paramètre donc il nous faut trouver une solution. Dans le cadre de données monétaires, il est important de connaître le pays pour déterminer la bonne devise. En effet, si mon cube contient des montants en euros, je ne veux pas voir des dollars si le client ou le serveur est en version US. En conséquence, il faut préciser la culture (Locale) en plus du formatage dans les méta-données des cellules. Ainsi, corrigeons notre membre calculé :
CREATE MEMBER CURRENTCUBE.[Measures].[Prix TTC]
AS [Measures].[Prix Vendu]*1.196,
FORMAT_STRING = "Currency", LANGUAGE = 1036 //fr-FR
Et là, plus de problème dans Excel pour afficher vos membres calculés en € de façon automatique. Attention, cette manipulation n’est pas possible avec le formulaire d’édition du membre calculé, il vous faudra passé par le script MDX de création.
Une réflexion sur “Analysis Services – Support du format monétaire dans Excel”