@LEVMBRS
plutôt que @RELATIVE
dans le cadre de la dimension entière.@CHILDREN
au lieu de @RELATIVE
, le cas échéant.@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
:
(@ROUND ("End Date",-4) - @ROUND ("Start Date",-4))/10000*12Le résultat du calcul
(20200000 – 20190000)/10000 *12
est 12.(@ROUND ("End Date",-2) - @ROUND ("End Date",-4))/100Le résultat du calcul
(20200600 – 20200000)/100
est 6.(@ROUND ("Start Date",-2) - @ROUND ("Start Date",-4))/100Le résultat du calcul
(20191100 – 20190000)/100
est 11.(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.