Wichtige Hinweise zur Syntax

  • Verwenden Sie für die gesamte Dimension immer @LEVMBRS anstatt @RELATIVE.
  • Verwenden Sie ggf. @CHILDREN anstatt @RELATIVE.
  • Verwenden Sie @REMOVE und @LEVMBRS, wenn Sie nur bestimmte Elemente aus einer FIX-Anweisung ausschließen möchten.

Berechnungen mit in Planning gespeicherten Daten durchführen

Planning ermöglicht Ihnen die Eingabe von Datenwerten. Beispiel: Mit dem Format MM/TT/JJJJ kann ein Startdatum als 11/01/2019 und ein Enddatum als 06/01/2020 eingegeben werden. Oracle Essbase speichert als Datum formatierte Werte als numerische Werte. Beispiel: Das oben genannte Startdatum wird als 20191101 und das Enddatum als 201200601 gespeichert. Mit Essbase-Funktionen, wie z.B. @ROUND, @INT oder @TRUNCATE, können Sie die Anzahl an Monaten zwischen einem Startdatum und einem Enddatum berechnen. Das folgende Beispiel zeigt, wie die Anzahl der Monate zwischen einem Startdatum und einem Enddatum mit der Funktion @ROUND berechnet wird:

  1. Berechnen Sie die Anzahl der Monate zwischen dem Jahr des Enddatums und dem Jahr des Startdatums wie folgt:
    (@ROUND ("End Date",-4) - @ROUND ("Start Date",-4))/10000*12
    Das Ergebnis dieser Berechnung (20200000 - 20190000)/10000 *12 lautet "12".
  2. Berechnen Sie die Anzahl der Monate zwischen dem Beginn des Jahres für das Enddatum und dem Enddatum, und addieren Sie diese Anzahl.
    (@ROUND ("End Date",-2) - @ROUND ("End Date",-4))/100
    Das Ergebnis dieser Berechnung (20200600 - 20200000)/100 lautet "6".
  3. Berechnen Sie die Anzahl der Monate zwischen dem Beginn des Jahres für das Startdatum und dem Startdatum, und subtrahieren Sie diese Anzahl.
    (@ROUND ("Start Date",-2) - @ROUND ("Start Date",-4))/100
    Das Ergebnis dieser Berechnung (20191100 - 20190000)/100 lautet "11".
  4. Kombinieren Sie die vorherigen Schritte in einer Formel (12+6-11), um die Anzahl der Monate (7) zwischen dem Startdatum und dem Enddatum zu berechnen.
    (((@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))

Funktion @CURRMBR verwenden

Die Funktion @CURRMBR, die den Namen des aktuell berechneten Dimensionselements zurückgibt, ist vor allem nützlich, um den Umfang komplexer Berechnungen zu definieren und komplexe Berechnungen zu verwalten. Sie müssen jedoch die Auswirkungen auf die Performance bedenken.

Die Performance wird nicht beeinträchtigt, wenn die Funktion @CURRMBR in einer dünn besetzten Dimension verwendet wird, da der Block nur einem Element einer dünn besetzten Dimension entspricht. Die Performance dieser Funktion ist jedoch niedriger, wenn sie in einer dicht besetzten Dimension verwendet wird, da Berechnungen auf der Blockebene und nicht auf der Zellenebene ausgeführt werden. Mit dieser Funktion werden also alle Elemente einer dicht besetzten Dimension berechnet, auch wenn ein bestimmtes Element der dicht besetzten Dimension nicht in der Abfrage vorhanden ist. Daher sollte diese Funktion bei dicht besetzten Dimensionen sparsam eingesetzt werden.

Bei Verwendung der Funktion @CURRMBR in dicht besetzten Dimensionen können außerdem unerwartete Ergebnisse oder Fehler auftreten, wenn die Funktion in Verbindung mit anderen Funktionen wie @CONCATENATE verwendet wird. Beispiel: Wenn ein dynamisch berechnetes Element in einer Abfrage die Formel "Actual"->@MEMBER(@CONCATENATE(@NAME (@CURRMBR ("Account")),"_Total")) enthält und die Account-Dimension dünn besetzt ist, wird die Abfrage ohne Fehler ausgeführt, sofern das Konto in der Abfrage ein gültiges Modellstrukturelement generiert. Wenn die Account-Dimension jedoch dicht besetzt ist, führt die Abfrage zu folgendem Fehler, selbst wenn das Konto in der Abfrage ein gültiges Modellstrukturelement generiert.

Fehler beim Ausführen der Formel für [Elementname] (Zeile 0): Es wurde versucht, ein @-Nullelement an Funktion [@X]

Dieser Fehler wird erzeugt, da die Funktion @CURRMBR die Berechnung auf der Blockebene durchführt und somit alle Konten im dicht besetzten Block berechnet werden. Nicht alle Konten im Block generieren ein gültiges Modellstrukturelement, was zu der oben genannten Fehlermeldung führt. Weitere Informationen zur Funktion @CURRMBR finden Sie unter @CURRMBR in der Dokumentation Technische Referenz zu Oracle Essbase.