Kleurenopmaak met MDX en Excel

Kleuren kunnen in Excel handig gebruikt worden om snel inzicht te krijgen waar de belangrijke punten zich bevinden. Door het gebruik van MDX code kunnen kleuren al voor gedefinieerd in de cube aangemaakt worden. Deze worden door Excel overgenomen. We nemen hier als voorbeeld de AdventureWorks cube, te downloaden vanaf codeplex. We gaan Sales Amount Quota vergelijken met de SalesAmount. Bij een lagere SalesAmount tov de Sales Amount Quota dient de nieuwe waarde rood te zijn en bij positieve waarde groen.Open de Adventureworks cube in Visual Studio en ga naar de Calculations Tab.

We voegen helemaal onderaan een nieuwe calculatie toe. Scroll in de lijst met calculations (Script Organizer) helemaal naar beneden en selecteer het laatste onderdeel:

Klik bovenaan op New calculated member.

Het volgende verschijnt in het midden (rechts van de lijst):

Vul als volgt in:

Name: [Quota vs Sales] De haken zijn nodig bij het gebruik van bijvoorbeeld spaties in de naam.

Parent Propertiesstaan standaard goed ingevuld

Expression:

IIF([Measures].[Sales Amount Quota]=0, null,
[Measures].[Sales Amount]/[Measures].[Sales Amount Quota])

Het IIF gedeelte zorgt ervoor dat delen door nul niet gebeurd.

Format string:”Percent”

Associated measure group: Sales Targets
Hierdoor verschijnt de waarde netjes in Excel bij de folder/measure group Sales Targets. Dit is niet noodzakelijk.
Je kan ook nog een aparte folder aanmaken voor waardes.

Klik op de Color Expressions en het volgende verschijnt:

Hier kunnen we de kleuren definieren op basis van de waarde. In dit voorbeeld gaan we de Fore color aanpassen.
Het script werkt nagenoeg hetzelfde voor Back color.

Vul bij Fore color het volgende in:

CASE WHEN Measures.CurrentMember > 1
THEN RGB(0,128,0)
WHEN Measures.CurrentMember < 1
THEN RGB(128,0,0)
ELSE RGB(128,128,128)
END

Een percentage is in werkelijkheid bij 100% 1. Vandaar dat we bij het script groter en kleiner dan 1 in plaats van 100 gebruiken.
Bij exact 100 procent wordt de kleur zwart. Dit wordt geregeld via Else. Een alternatief kan ook nog zijn:

CASE WHEN Measures.CurrentMember >= 1
THEN RGB(0,128,0)
WHEN Measures.CurrentMember < 1
THEN RGB(128,0,0)
END

Het volledige onderdeel ziet er zo uit:

In Excel 2010 ziet dit er als volgt uit:

Kleurgebruik kan ook op normale measures worden toegepast. Hiervoor dient een stuk script gebruikt te worden. Scroll in de lijst met calculations (Script Organizer) helemaal naar beneden. Selecteer de het laatste item. Als het goed is, is dit de zojuist aangemaakte calculation ‘Quato vs Sales’. Klik vervolgens op New Script command:

Er verschijnt rechts van de lijst een wit gedeelte voor het script, vul hier het volgende in:

Fore_Color ( [Measures].[Sales Amount Quota] ) = RGB(128,0,0)

Met [Measures].[Sales Amount Quota] wordt verwezen naar de measure waarvoor de kleuren bepaald moeten worden. Achter de = staat de logica voor de kleuren. Hier kan ook een case statement worden gebruikt, zoals:

Fore_Color ( [Measures].[Sales Amount Quota] ) =
CASE WHEN Measures.CurrentMember > 5000000
THEN RGB(0,128,0)
ELSE RGB(128,0,0) END

In Excel 2010 ziet dit er als volgt uit: