Ik zocht een manier om een dimensie-attribuut in SSAS2008R2 te formatteren, bijvoorbeeld met een valutasymbool €. Bij het zoeken ontdekte ik dat dit niet kan met de standaardinstellingen van SSAS (format-kolom). Ik dacht dat dit kon, net als bij de instellingen van measures met de optie “format”.
De situatie: business users wilden “gewerkte uren” kunnen analyseren per “uurtarief”. De oplossing was een SSAS-dimensie “Hourly Rate” met het attribuut “Hourly Rate”.
Nadat ik alles had ingericht, zoals de DataSourceView en de dimensie, en de cube had geprocessed, zag de dimensie er zo uit:
10.00
10.50
11.50
En in Excel zag het er nog slechter uit, zoals 10.0000000 en 11.50000000. Niet erg gebruiksvriendelijk. Dat gaf me ook problemen in Excel bij browsen, sorteren enzovoort.
Na wat zoeken op internet bleek dat je dit kunt instellen via de “Formatting options” van het dimensie-attribuut. De optie “format” is in SSAS standaard niet zichtbaar. De truc is om eerst “Name column” in te stellen. Dan verschijnen de extra opties:
Maar nadat ik het format op Currency OF #,##0.00 \€;(#,##0.00 \€) zette, gebeurde er niets.
De oplossing is om de juiste opmaak in de bron-SQL van de data te zetten. Bij mij is dat de view die ik voor de datasource gebruik.
SELECT DISTINCTCAST(UurtariefKracht * 1000 AS INT) AS UurtariefKrachtID, REPLACE('€ ' + CAST(CAST(UurtariefKracht AS MONEY) AS VARCHAR(16)), '.', ',') AS TariefKrachtFROM dbo.FactDeclaratieRegel AS FDNadat ik mijn bron-SQL had aangepast, moest ik mijn Data Source View bijwerken. Daarna paste ik mijn dimensie aan. Stel de nieuwe (of aangepaste) kolom in als “NameColumn” in de properties van het attribuut:
Process nu de dimensie.
Resultaat:
Zo heb ik laten zien hoe je de properties van een dimensie-attribuut in SSAS instelt om een valutaformaat te tonen.
Veelgestelde vragen
Hoe formatteer ik een dimensie-attribuut als valuta in SSAS 2008 R2?
De format-kolom in de instellingen van het attribuut doet hier niets. Formatteer de waarde in de bron-SQL van de data source view. Gebruik die kolom daarna als NameColumn van het attribuut en process de dimensie.
Waarom werkt de Format-optie niet op een dimensie-attribuut in SSAS?
Het format op Currency of #,##0.00 zetten heeft geen effect op een dimensie-attribuut. De enige oplossing die werkte: de opmaak in de bron-SQL bouwen en het resultaat als name column gebruiken.
Hoe laat ik de Format-optie voor een dimensie-attribuut zien in SSAS?
De format-optie is standaard verborgen. Laat het attribuut eerst een NameColumn gebruiken. Dan verschijnen de extra opmaakopties in de properties van het attribuut.
Hoe zet ik een valutasymbool voor een getal in de SQL van een SSAS data source view?
Cast de waarde naar MONEY en daarna naar VARCHAR(16). Zet de valutatekst voor de waarde en vervang met REPLACE de punt door een komma. Doe dit in de view die de dimensie vult.
Waarom toont een SSAS-dimensie 10.0000000 in Excel?
Het attribuut bevat een gewoon getal, dus Excel toont het met veel decimalen, zoals 11.50000000. Dat geeft ook problemen bij sorteren en browsen. Een geformatteerde tekstkolom als NameColumn geeft een nette waarde.




Reacties
Gerelateerde blogs
SSAS OLAP geeft verkeerde resultaten
Hierarchieën in Analysis Services 2005
Dimension security implementeren in SSAS