Développement de formules sur les outlines de mode "aggregate storage"

Les formules calculent les relations entre les membres d'une outline Essbase. Les formules en mode "aggregate storage" (ASO) sont différentes des formules en mode "block storage". Vous écrivez des formules en mode "aggregate storage" (ASO) dans MDX en tant qu'expressions de valeurs numériques et vous les appliquez à l'outline du cube, où elles sont calculées dynamiquement lors de l'extraction des données.

Différences entre les formules ASO et BSO

Si vous connaissez les formules des outlines en mode "block storage", notez les différences entre les formules en mode "aggregate storage" (ASO).

  • Essbase fournit un langage de calcul natif pour écrire des formules sur les outlines en mode "block storage". Pour écrire des formules pour les outlines en mode "aggregate storage", utilisez le langage MDX (Multidimensional Expressions).

  • Appliquez des formules directement aux membres de l'outline. Pour les cubes en mode "block storage", les formules peuvent être placées dans un script de calcul. Pour les cubes en mode "aggregate storage", vous ne pouvez pas placer de formules dans un script de calcul.

Calcul de formule pour les cubes ASO

Essbase calcule les formules dans les outlines en mode "aggregate storage" uniquement lorsque les données sont extraites. L'ordre de calcul peut affecter les résultats du calcul. Chaque fois que vous utilisez des formules MDX sur plusieurs dimensions dans une outline en mode "aggregate storage", il est recommandé de définir l'ordre de résolution de chaque membre ou dimension. Voir Ordre de calcul et ordre de résolution dans les cubes ASO.

Remarques :

Lorsque vous concevez un calcul en mode "aggregate storage", tenez compte du fait que les membres en mode "aggregate storage" avec des formules MDX sont calculés dynamiquement. Les membres calculés dynamiquement ont la valeur #MISSING jusqu'à ce qu'ils soient interrogés.

Utiliser les formules MDX

Une formule MDX doit toujours être une expression de valeur numérique MDX. Dans MDX, une expression de valeur numérique est une combinaison de fonctions, d'opérateurs et de noms de membre qui effectue l'une des actions suivantes :

  • Calcule une valeur

  • Tests pour une condition

  • Effectue une opération mathématique

Une expression de valeur numérique est différente d'une expression définie. Une expression définie est utilisée sur les axes de requête et décrit les membres et les combinaisons de membres. Une expression de valeur numérique spécifie une valeur.

Une expression de valeur numérique est utilisée dans les requêtes pour créer des membres calculés, qui sont des membres logiques créés à des fins d'analyse dans la section WITH de l'interrogation, mais qui n'existent pas dans l'outline.

La requête suivante définit un membre calculé et utilise une expression de valeur numérique pour lui fournir une valeur :

WITH MEMBER
 [Measures].[Prod Count]
AS
 'Count (
    Crossjoin (
     {[Units]},
     {[Products].children}
    )
  )', SOLVE_ORDER=1
SELECT
 {[Geography].children}
ON COLUMNS,
 {
  Crossjoin (
     {[Units]},
     {[Products].children}
    ),
   ([Measures].[Prod Count], [Products])
 }
ON ROWS
FROM
 ASOsamp.Sample

Dans l'exemple de requête, la clause WITH définit un membre calculé, Product Count, dans la dimension Measures, comme suit :

WITH MEMBER
 [Measures].[Prod Count]

L'expression de valeur numérique suit la clause WITH et est placée entre apostrophes. Dans l'exemple de requête, l'expression de valeur numérique est indiquée comme suit :

'Count ( 
    Crossjoin (
     {[Units]},
     {[Products].children}
    )
  )'

La propriété SOLVE_ORDER indique l'ordre dans lequel les membres et les formules sont évalués. Voir Ordre de calcul et ordre de résolution dans les cubes ASO.

Remarques :

Pour une explication des règles de syntaxe utilisées pour créer l'expression de valeur numérique dans l'exemple, reportez-vous à la documentation relative aux fonctions Count, CrossJoin et Children.

Une expression de valeur numérique peut également être utilisée comme formule MDX pour calculer la valeur d'un membre d'outline existant.

Par conséquent, au lieu de créer l'exemple d'interrogation, vous pouvez créer un membre d'outline sur la dimension Measures appelé Prod Count qui est calculé dans l'outline de la même manière que l'hypothétique Prod Count a été calculé dans l'exemple d'interrogation.

Pour créer un membre calculé avec une formule :

  1. Créez un membre.

  2. Associez une formule MDX au membre.

    En supposant que vous avez créé l'exemple de membre Prod Count, vous devez utiliser la formule suivante, qui est l'équivalent de l'expression de valeur numérique utilisée pour créer le membre calculé dans l'exemple de requête :

    Count(Crossjoin ( {[Units]}, {[Products].children}))
  3. Vérifiez la formule en vérifiant l'outline.

    Lorsque vous extrayez des données du cube en mode "aggregate storage", la formule est utilisée pour calculer la valeur de membre.

    Vous pouvez utiliser des variables de substitution dans des formules. Par exemple, vous pouvez définir une variable de substitution nommée "EstimatedPercent" et fournir différents pourcentages en tant que valeurs de variable de substitution. Reportez-vous à Implémentation de variables pour la modification des informations.

Avant d'appliquer des formules aux membres de l'outline, vous pouvez écrire des requêtes MDX qui contiennent des membres calculés. Lorsque vous pouvez écrire une requête MDX qui renvoie les résultats de membre calculés souhaités, vous êtes prêt à appliquer la logique de l'expression de valeur numérique à un membre de l'outline et à valider et tester l'expression. Reportez-vous à Ecriture de requêtes MDX.