2016-03-29 1 views
3

Je travaille sur un cube SSAS pour les contrats d'une société d'énergie.SSAS dépendante FormatString pour afficher différentes unités de valeurs

Une mesure est "Volume du contrat". Ils ont des contrats d'électricité et de gaz. Donc, l'unité de volume de contrat est soit km3 ou MWh.

La mesure «volume du contrat» ne doit pas être divisée en gaz et en électricité, mais doit être conservée dans la même mesure.

Comment montrer les différentes unités à l'utilisateur final? De préférence j'utiliserais FormatString qui dépend du type de contrat (l'information est à la fois dans la table de faits sous-jacente et dans une dimension). Puis-je faire cela? Y at-il de toute façon, je peux faire en sorte que le gaz soit agrégable avec le gaz et el agrégable avec el - mais pas avec le gaz agrégable?

Edit: SQL Server 2008 R2 multidimensionnels

Edit: Merci Honey Voici @ Mike est le code que je fini par écrire dans la vue Script:

SCOPE 
    (
     {[Measures].[Measure 1], 
     [Measures].[Measure 2], 
     [Measures].[Measure 3], 
     [Measures].[Measure 4]} 
    ); 

    SCOPE([Contract Type].[Contract types].[Energy].&[El].Children); 
    FORMAT_STRING (This) = "#,##0.00 \k\W\h;-#,##0.00 \k\W\h"; 
    END SCOPE; 
    SCOPE ([Contract Type].[Contract types].[Energy].&[El]); 
    FORMAT_STRING (This) = "#,##0.00 \k\W\h;-#,##0.00 \k\W\h"; 
    END SCOPE; 

    SCOPE([Contract Type].[Contract types].[Energy].&[Gas].Children); 
    FORMAT_STRING (This) = "#,##0.00 k\m\3;-#,##0.00 \k\m\3"; 
    END SCOPE; 
    SCOPE ([Contract Type].[Contract types].[Energy].&[Gas]); 
    FORMAT_STRING (This) = "#,##0.00 \k\m\3;-#,##0.00 \k\m\3"; 
    END SCOPE; 
END SCOPE; 
+0

Est-ce SSAS multi-dimensionnel ou tabulaire? –

Répondre

3

Je pense que vous avez 2 défis - mais les deux peuvent être résolus avec une paire d'instructions SCOPE.

Dans l'onglet Calculs du cube, je crée d'abord un membre calculé sur la hiérarchie Mesures, avec une valeur Expression de NULL. Ensuite (dans Script View) j'ajouterais une paire d'instructions SCOPE (pour Gas et El). L'expression de sous-cube pour chacun serait spécifique à la nouvelle mesure calculée, ainsi que le membre de dimension qui spécifie respectivement Gas et EL.

Puis, à l'intérieur de chaque instruction SCOPE, vous pouvez spécifier la mesure source pour Gas et El en utilisant la syntaxe This =, puis spécifier le format de mesure en utilisant la syntaxe FORMAT_STRING (This) =. SCOPE ... END SCOPE peut être imbriqué, donc si vous préférez, vous pouvez ajouter ces 2 SCOPES dans la SCOPE parent supplémentaire qui spécifie la mesure calculée, vous n'avez donc pas besoin de répéter ce nom de mesure.