Remarques concernant la syntaxe

  • Utilisez toujours @LEVMBRS plutôt que @RELATIVE dans le cadre de la dimension entière.
  • Utilisez @CHILDREN au lieu de @RELATIVE, le cas échéant.
  • Utilisez @REMOVE et @LEVMBRS si vous voulez uniquement exclure certains membres de l'instruction FIX.

Exécution de calculs à l'aide de dates stockées dans Planning

Planning vous permet de saisir des valeurs de date. Par exemple, en utilisant le format MM/DD/YYYY, vous pouvez saisir la date de début 11/01/2019 et la date de fin 06/01/2020. Oracle Essbase stocke les valeurs de date formatées comme des valeurs numériques. Par exemple, la date de début précédente est stockée sous la forme 20191101 et la date de fin sous la forme 20200601. Vous pouvez utiliser des fonctions Essbase, comme @ROUND, @INT ou @TRUNCATE, pour calculer le nombre de mois entre n'importe quelle date de début et date de fin. L'exemple suivant montre comment calculer le nombre de mois entre une date de début et une date de fin à l'aide de la fonction @ROUND :

  1. Calculez le nombre de mois entre l'année de la date de fin et l'année de la date de début comme suit :
    (@ROUND ("End Date",-4) - @ROUND ("Start Date",-4))/10000*12
    Le résultat du calcul (20200000 – 20190000)/10000 *12 est 12.
  2. Calculez le nombre de mois entre le début de l'année de la date de fin et la date de fin, puis ajoutez-le.
    (@ROUND ("End Date",-2) - @ROUND ("End Date",-4))/100
    Le résultat du calcul (20200600 – 20200000)/100 est 6.
  3. Calculez le nombre de mois entre le début de l'année de la date de début et la date de début, puis soustrayez-le.
    (@ROUND ("Start Date",-2) - @ROUND ("Start Date",-4))/100
    Le résultat du calcul (20191100 – 20190000)/100 est 11.
  4. Combinez les étapes précédentes dans une formule (12+6-11) pour calculer le nombre de mois (7) entre la date de début et la date de fin.
    (((@ROUND ("End Date",-4) - @ROUND ("Start Date",-4))/10000*12) + 
    ((@ROUND ("End Date",-2) - @ROUND ("End Date",-4))/100)-
    ((@ROUND ("Start Date",-2) - @ROUND ("Start Date",-4))/100))

Utilisation de la fonction @CURRMBR

La fonction @CURRMBR, qui renvoie le nom du membre de dimension en cours de calcul, est particulièrement utile pour définir la portée des calculs complexes et les gérer. Cependant, vous devez prendre en considération son impact sur les performances.

Les performances ne sont pas affectées lorsque vous utilisez la fonction @CURRMBR dans une dimension dispersée car le bloc correspond à un seul membre de dimension dispersée uniquement. Cependant, les performances de cette fonction sont ralenties lorsqu'elle est utilisée dans des dimensions denses car elle exécute des calculs au niveau du bloc et non au niveau de la cellule. Par conséquent, cette fonction calcule tous les membres de dimension dense, même si un membre de dimension dense spécifique n'est pas présent dans la requête. Utilisez donc cette fonction avec parcimonie dans les dimensions denses.

De plus, lorsqu'elle est utilisée dans des dimensions denses, la fonction @CURRMBR peut générer des erreurs ou des résultats inattendus si elle est employée conjointement avec d'autres fonctions telles que @CONCATENATE. Par exemple, si un membre calculé dynamiquement dans une requête contient la formule "Actual"->@MEMBER(@CONCATENATE(@NAME (@CURRMBR ("Account")),"_Total")) et que la dimension de compte est dispersée, la requête est exécutée sans erreur tant que le compte dans la requête génère un membre d'outline valide. Cependant, si la dimension de compte est dense, la requête génère l'erreur suivante même si le compte dans la requête génère un membre d'outline valide.

Erreur lors de l'exécution de la formule pour [nom de membre] (ligne 0) : tentative de franchissement d'un membre @ NULL dans la fonction [@X]

Cette erreur s'est produite car la fonction @CURRMBR effectue le calcul au niveau du bloc et calcule donc tous les comptes du bloc dense. Tous les comptes au sein du bloc ne génèrent pas un membre d'outline valide, ce qui génère le message d'erreur précédent. Pour plus d'informations sur la fonction @CURRMBR, reportez-vous à la section @CURRMBR du guide Référence technique d'Oracle Essbase.