Comprendre la syntaxe des scripts de calcul de base

Lors de la conception de scripts de calcul pour les cubes en mode "block storage" Essbase, vous devez apprendre quelques règles de syntaxe. Les commandes sont généralement terminées par un point-virgule. Les guillemets doivent être utilisés autour de certains noms de membre. Essbase permet de valider la syntaxe.

Règles de syntaxe globales

Les cubes en mode "block storage" Essbase incluent un ensemble flexible de commandes que vous pouvez utiliser pour contrôler le mode de calcul du cube. Vous pouvez créer des scripts de calcul à partir de commandes et de formules.

Lorsque vous créez un script de calcul, vous devez appliquer les règles suivantes :

  • Terminez chaque formule ou commande de script de calcul par un point-virgule ( ;). Exemple :

    Exemple 1

    CALC DIM(Product, Measures);

    Exemple 2

    DATACOPY Plan TO Revised_Plan;

    Exemple 3

    "Market Share" = Sales % Sales -> Market;

    Exemple 4

    IF (Sales <> #MISSING)
       Commission = Sales * .9;
       ELSE
          Commission = #MISSING;
    ENDIF;

    Il n'est pas nécessaire de terminer les commandes conditionnelles ou commandes de flux de contrôle suivantes par des points-virgules :

    • IF (SI)
    • FIN
    • ELSE
    • ELSIF
    • FIX
    • FIXE
    • EXCLUDE
    • ENDEXCLUDE
    • LOOP
    • BOUCLE DE FIN

    Remarques :

    Bien que cela ne soit pas obligatoire, Oracle recommande de terminer chaque instruction ENDIF d'une formule par un point-virgule.

  • Placez un nom de membre entre guillemets ("), si ce nom de membre correspond à l'une des conditions suivantes :

    • Contient des espaces.

      Par exemple, dans la formule suivante, les champs Opening Inventory et Ending Inventory sont placés entre guillemets doubles :

      "Opening Inventory" = "Ending Inventory" - Sales + Additions;
    • Il est identique à un opérateur, un nom de fonction ou un mot-clé.

      Reportez-vous à la section Naming Conventions in Calculation Scripts, Report Scripts, Formulas, Filters, and Substitution and Environment Variable Values.

    • Inclut tout caractère non alphanumérique, tel qu'un tiret ( -), un astérisque ( * ) ou une barre oblique ( / ).

    • Contient uniquement des chiffres ou commence par un chiffre.

      Par exemple : "100" ou "10Prod"

    • Commence par une esperluette (&). L'esperluette de début (&) est réservée aux variables de substitution. Si un nom de membre commence par &, placez-le entre guillemets.

      Remarques :

      Ne placez pas les variables de substitution entre guillemets dans un script de calcul.

    • Contient un point (.).

      Par exemple : 1999. Janv. ou .100

  • Si vous utilisez une instruction IF ou une formule interdépendante, placez la formule entre parenthèses pour l'associer au membre spécifié.

    Par exemple, la formule suivante est associée au membre Commission dans l'outline de la base de données :

    Commission
    (IF(Sales < 100)
       Commission = 0;
    ENDIF;)
  • Terminez chaque instruction IF d'une formule par une instruction ENDIF.

    Par exemple, la formule précédente contient une instruction IF...ENDIF simple.

  • Si vous utilisez une instruction IF qui est imbriquée dans une autre instruction IF, terminez chaque instruction IF par une instruction ENDIF.

    Exemple :

    "Opening Inventory"
    (IF (@ISMBR(Budget))
       IF (@ISMBR(Jan))
          "Opening Inventory" = Jan;
       ELSE 
          "Opening Inventory" = @PRIOR("Ending Inventory");
       ENDIF;
    ENDIF;)
  • Vous n'avez pas besoin de terminer les instructions ELSE ou ELSEIF avec des instructions ENDIF.

    Exemple :

    Marketing
    (IF (@ISMBR(@DESCENDANTS(West)) OR @ISMBR(@DESCENDANTS(East)))
       Marketing = Marketing * 1.5;
    ELSEIF(@ISMBR(@DESCENDANTS(South)))
       Marketing = Marketing * .9;
    ELSE 
       Marketing = Marketing * 1.1;
    ENDIF;)

    Remarques :

    Si vous utilisez ELSE IF (avec un espace) plutôt que ELSEIF (un mot) dans une formule, vous devez fournir une ENDIF pour l'instruction IF.

  • Terminez chaque instruction FIX par une instruction ENDFIX.

    Exemple :

    FIX(Budget,@DESCENDANTS(East))
       CALC DIM(Year, Measures, Product);
    ENDFIX
  • Terminez chaque instruction EXCLUDE par une instruction ENDEXCLUDE.

Lorsque vous écrivez un script de calcul à l'aide de l'interface Web Essbase, vous pouvez utiliser le vérificateur de syntaxe pour le valider.

Utiliser des commentaires dans les scripts de calcul

Vous pouvez inclure des commentaires pour annoter les scripts de calcul. Les commentaires sont ignorés lors de l'exécution du script de calcul.

Pour inclure un commentaire, commencez le commentaire par /* et terminez le commentaire par */. Exemple :

/* This calculation script comment
   spans two lines. */

Vérification de la syntaxe

L'éditeur de script de calcul de l'interface Web Essbase inclut une validation de syntaxe qui signale les erreurs de syntaxe (telles qu'un nom de fonction mal saisi) dans un script de calcul.

Si aucune erreur de syntaxe n'est trouvée, Essbase indique que la vérification de la syntaxe a réussi.

Si des erreurs de syntaxe sont détectées, Essbase indique que la vérification de la syntaxe a échoué et affiche une erreur à la fois, indiquant où l'erreur s'est produite.

Remarques :

Le vérificateur de syntaxe ne peut pas déterminer les erreurs sémantiques, qui se produisent lorsqu'un script de calcul ne fonctionne pas comme prévu. Pour rechercher des erreurs sémantiques, exécutez le calcul et vérifiez les résultats pour vous assurer qu'ils sont conformes à vos attentes.