3 votes

Comment additionner une mesure calculée ?

J'ai une mesure calculée assez complexe qui fonctionne parfaitement pour chaque ligne de données d'un cube. Cependant, j'ai ensuite besoin d'une somme de ces valeurs ligne par ligne. Mais le comportement des mesures calculées semble être dans les lignes de sous-total et de total dans Excel, il effectue le calcul à nouveau au lieu d'additionner les lignes précédentes. Existe-t-il un moyen d'avoir une mesure calculée qui effectue son calcul sur chaque ligne, mais qui effectue une SOMME traditionnelle dans le total et les sous-totaux ?

Merci d'avance.

0voto

Marc Polizzi Points 4061

Une mesure calculée ne s'agrège pas ; elle sera calculée à chaque fois.

0voto

FrankPl Points 9921

Il y a une solution, mais c'est vraiment moche :

Vous devriez utiliser quelque chose comme

SCOPE([dim1].[hier1].[All]);
    [Measures].[MyCalculatedMeasure] = Sum([dim1].[hier1].[bottomlevel].Members, [Measures].[MyCalculatedMeasure]);
END SCOPE;

pour toutes les hiérarchies de toutes les dimensions, que ce soit une hiérarchie d'attributs ou d'utilisateurs, en remplaçant dim1 , hier1 , bottomlevel le cas échéant.

0voto

Demel Points 111

Vous devez imiter le comportement de la mesure réelle pour le membre calculé. Créez une mesure réelle fictive avec une valeur Null, puis utilisez Scope pour définir votre formule au niveau de la granularité. Pour une réponse plus détaillée, voir ici : http://blog.crossjoin.co.uk/2013/05/29/aggregating-the-result-of-an-mdx-calculation-using-scoped-assignments/

0voto

Yves A Martin Points 31

J'ai trouvé le moyen le plus simple de le faire :

  1. Créez un nouveau calcul nommé dans la table de mesure appropriée dans votre DSV. (Cliquez avec le bouton droit de la souris, ajoutez un nouveau calcul nommé et définissez son expression comme étant CAST(NULL as [insérer le type de données approprié]).
  2. Ajoutez le nouveau calcul nommé comme une mesure dans votre cube.
  3. Dans la zone des calculs de votre cube, passez à la vue script et ajoutez ce qui suit :

({[Mesures].[Le calcul nommé que vous avez créé à l'étape 1]},Leaves())=Votre calcul complexe ;

Cela définit la définition au niveau de la feuille et toutes les agrégations fonctionnent parfaitement.

Réf : http://sqlblog.com/blogs/mosha/archive/2005/02/13/performance-of-aggregating-data-from-lower-levels-in-mdx.aspx

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X