Utilisation du script de calcul Essbase

Le script de calcul Essbase est le langage dont vous disposez pour écrire une logique métier personnalisée dans Financial Consolidation and Close. Cette section présente des constructions Essbase de base, ainsi que les restrictions appliquées à Financial Consolidation and Close. Pour plus de détails sur le script de calcul Essbase, reportez-vous à Mise en route sur Essbase Cloud pour les administrateurs.

Syntaxe commune

  • Point-virgule
    • Requis à la fin de chaque instruction
    • Exemple : Sales = Sales * 1.50;
    • Inutile après FIX et ENDFIX
  • Guillemets
    • Noms de membre contenant des espaces/caractères spéciaux ou commençant par un numéro
    • La meilleure méthode est de toujours indiquer un nom de membre entre guillemets
    • Exemple : "Cash Ratio" = "Cash"/"Current Liabilities";
  • Opérateur inter-dimensionnel
    • Utilisez -> pour indiquer les croisements de plusieurs dimensions.
    • Exemple : "Sales"->"Changes In Net Income"->"Product1";

Commentaires

Les commentaires débutent par /* et se terminent par */.

Les commentaires multi-ligne ou à une seule ligne sont pris en charge.

Vous pouvez utiliser l'icône de barre d'outils pour définir ou enlever des blocs de commentaires.

FIX/ENDFIX

FIX/ENDFIX fait partie des blocs de construction de base des scripts de calcul. Pour effectuer un calcul, vous devez définir une section FIX/ENDFIX, puis y placer les calculs métier réels.

Exemple : supposons que "Products" est votre dimension libre et que vous voulez calculer le nombre de télévisions vendues. Vous pouvez utiliser la syntaxe suivante :

FIX("Televisions")

"Units_Sold" = "LED_TVs" + "UHD_TVs";

ENDFIX

Le calcul métier réel est :

"Units_Sold = "LED_TVs" + "UHD_TVs";, qui calcule le nombre de télévisions vendues.

Remarque :

Vous devez placer un point-virgule à la fin de chaque instruction de calcul, sauf FIX et ENDFIX.

La section FIX/ENDFIX applique une limite aux membres des différentes dimensions qui participent aux calculs qu'elle contient. Dans cet exemple, les calculs portent seulement sur "Televisions".

Vous pouvez également définir des instructions FIX imbriquées, par exemple :

Exemple d'instruction imbriquée Essbase 1

Le calcul ci-avant peut également être écrit de la manière suivante :

Exemple d'instruction imbriquée Essbase 2

Par exemple, @List est une fonction Essbase. Essbase offre de nombreuses fonctions. Toutefois, Financial Consolidation and Close ne les prend pas toutes en charge. Reportez-vous à la section "Liste des fonctions Essbase" pour obtenir la liste des fonctions prises en charge.

Instruction FIX sur les dimensions Financial Consolidation and Close

Une application Financial Consolidation and Close peut contenir 13 dimensions, selon les fonctionnalités d'application activées. Parmi les 13 dimensions possibles, vous n'êtes pas autorisé à utiliser l'instruction FIX sur les dimensions suivantes, car le système leur applique automatiquement une instruction FIX lorsqu'un utilisateur appelle le processus de consolidation.

  • Scénario

  • Année

  • Période

  • Vue

  • Entité

Supposons, par exemple, que nous ayons l'instruction suivante :

Exemple d'instruction FIX Essbase 3

Le système ne parvient pas à effectuer le déploiement et un message d'erreur est consigné dans la console de jobs avec les informations appropriées.

Toutefois, cela ne signifie pas que vous ne pouvez pas utiliser ces dimensions dans le script. Généralement, les calculs présentent une syntaxe semblable à celle indiquée ci-après :

Exemple d'instruction FIX Essbase 4

Vous ne pouvez utiliser aucun membre des dimensions Scénario, Année, Période, Entité et Vue dans l'instruction FIX et dans la partie gauche ("Left hand side"). Cette restriction ne s'applique toutefois pas à la partie droite ("Right hand side") de l'équation.

La syntaxe suivante est autorisée :

Exemple d'instruction FIX Essbase 5

Pour les huit dimensions restantes, si vous n'utilisez pas l'instruction FIX pour une dimension donnée, le système prend en compte tous les membres de cette dimension. Supposons, par exemple, que nous ayons l'instruction suivante :

Exemple d'instruction FIX Essbase 6

Dans cet exemple, toutes les dimensions restantes comportent une instruction FIX, sauf Compte. Essbase prend donc en considération tous les membres de la dimension Compte pour les calculs de la section FIX/ENDFIX.

Membres Financial Consolidation and Close restreints

Au sein de chaque instance Financial Consolidation and Close, certains membres système ne doivent pas être utilisés ou calculés dans le script de calcul. Si ces membres restreints sont utilisés dans le calcul, le système ne parvient pas à effectuer la validation ou le déploiement et un message d'erreur est consigné dans la console de jobs.

Rappel : si aucun membre n'est indiqué pour la dimension, le système prend en compte TOUS ses membres. Toutefois, les membres restreints ne devant pas être inclus dans le processus, vous devez explicitement les exclure des instructions de dimension FIX ou de la partie gauche de l'expression.

Le tableau suivant contient la liste complète des membres de dimension Financial Consolidation and Close restreints. Les membres restreints pour les dimensions Devise et Consolidation dépendent de la règle d'insertion utilisée. Chaque règle d'insertion prédéfinie comporte, dans la section Commentaire, des informations sur les membres des dimensions Devise et Consolidation pouvant être inclus.

Tableau 19-5 Membres de dimension restreints

Dimension Membre Expression Partie gauche Expression Partie droite
Scénario Tous les membres Non Oui
Année Tous les membres Non Oui
Période Tous les membres Non Oui
Vue Tous les membres Non Oui
Entité Tous les membres Non Oui
Compte FCCS_CSTATUS Non Oui
  FCCS_CSTATUS FILTER Non Oui
  Taux FX - Fin Non Oui
  Taux FX - Moyenne Non Oui
  Taux moyen Non Oui
  Taux de fin Non Oui
  SrcAverageRate Non Oui
  TgtAverageRate Non Oui
  SrcEndingRate Non Oui
  TgtEndingRate Non Oui
  FCCS_Balance Non Oui
  FCCS_CTA Non Oui
  FCCS_CICTA Non Oui
  FCCS_Percent Control Non Oui
  FCCS_Current Ratio Non Oui
  FCCS_Quick Ratio Non Oui
  FCCS_Cash Ratio Non Oui
  FCCS_Inventory Turnover Non Oui
  FCCS_Asset Turnover Non Oui
  FCCS_Days Sales In Receivables Non Oui
  FCCS_Days Sales In Inventory Non Oui
  FCCS_Gross Profit Margin Non Oui
  FCCS_Return on Sales Non Oui
  FCCS_Return on Equity Non Oui
  FCCS_Debt to Equity Ratio Non Oui
  FCCS_Debt Ratio Non Oui
Source de données FCCS_System Types Non Oui
  FCCS_Rate Override Non Oui
  FCCS_Account Override Non Oui
  FCCS_PCON Non Oui
  FCCS_Driver Source Non Oui
Mouvement FCCS_Opening Balance Non Oui
  FCCS_OpeningBalance_Cash Non Oui
  FCCS_FX_Total_NonCash Non Oui
  FCCS_ClosingBalanceCash Non Oui

Instruction FIX sur tous les membres d'une dimension à l'exception des membres restreints

Il arrive fréquemment que vous deviez utiliser l'instruction FIX sur tous les membres de niveau 0 d'une dimension pouvant comporter des membres restreints. Cet exemple montre comment utiliser l'instruction FIX de manière optimale sur tous les membres de niveau 0 d'une dimension à l'exception de ses membres restreints.

Par exemple, la dimension Compte comporte le nombre de membres restreints le plus élevé.

Le fragment de code de script de calcul suivant permet d'utiliser l'instruction FIX sur tous les membres Compte de niveau 0 à l'exception des membres restreints :

@REMOVE( @LEVMBRS( "Account", 0 ), @LIST( @RELATIVE( "FCCS_System Account", 0 ),@RELATIVE( "FCCS_Drivers", 0 ),@RELATIVE( "FCCS_Ratios", 0 ),@RELATIVE( "Exchange Rates", 0 ) ) )

Instruction FIX sur les dimensions dispersées et sur les dimensions denses

L'instruction FIX est plus efficace sur les dimensions dispersées. Essbase n'extrait alors des blocs que pour la combinaison de membres de dimension dispersée définie dans l'instruction FIX et ignore le reste.

Les combinaisons dispersées font office d'index pour Essbase, qui recherche les blocs de données correspondants et les extrait en vue des calculs. Le système n'a pas besoin que tous les blocs soient extraits pour fonctionner.

Si l'instruction FIX est utilisée sur une dimension dense, des membres denses sont présents dans chaque bloc de données d'Essbase. Une utilisation incorrecte peut donc nuire aux performances. Lorsque l'instruction FIX est appliquée à une dimension dense, Essbase extrait tous les blocs de données sans en restreindre le nombre et ne se limite qu'à une portion de chaque bloc. Plusieurs passes dans la base de données peuvent alors s'avérer nécessaires pour renvoyer les informations.

Par exemple, vous pouvez faire référence à "Sales" et à "PostSales" de la dimension Compte avec les instructions suivantes :

Exemple d'instruction FIX Essbase 7

Lorsque le système traite la première instruction FIX, qui concerne "Sales", Essbase extrait tous les blocs de données de la dimension Compte, mais utilise seulement le compte "Sales".

Ensuite, avec l'instruction FIX relative à "PostSales", Essbase extrait de nouveau tous les blocs de données de la dimension Compte, mais utilise seulement le compte "PostSales". Dans cet exemple, deux passes dans la base de données sont effectuées pour les deux comptes.

Pour ne pas nuire aux performances, vous pouvez éviter d'appliquer l'instruction FIX à la dimension Compte et utiliser plutôt IF...THEN pour les dimensions denses.

Exemple d'instruction FIX Essbase 8

Dans cet exemple où vous n'utilisez pas l'instruction FIX, une seul passe dans la base de données Essbase est nécessaire.

Afin d'optimiser les performances de calcul, il est recommandé d'utiliser l'instruction FIX sur les dimensions dispersées et IF...THEN sur les dimensions denses.

Bloc de membres

Les blocs de membres sont également appelés blocs de calcul. Le terme "ancrage" est parfois utilisé pour les blocs de membres. La syntaxe des blocs de membres est la suivante :

Exemple de bloc de membres Essbase 1

L'exemple suivant présente des instructions de bloc de membres :

Exemple de bloc de membres Essbase 2

Dans cet exemple, "My Total Opening Balance" est appelé membre de bloc de calcul ou ancrage. Si possible, ce membre doit appartenir à une dimension dense.

Dans le calcul ci-avant, la limite concerne uniquement le membre "My FX Opening" et les calculs sont effectués sur le membre indiqué dans l'instruction FIX.

En cas d'utilisation d'instructions IF, un bloc de membres est nécessaire. Vous ne pouvez pas écrire d'instructions IF en dehors des blocs de membres.