27 Benutzerdefinierte Berechnungsmakros entwickeln
Mit benutzerdefinierten Essbase-Makros (CDMs) können Sie mehrere Berechnungsfunktionen zu einer einzigen Funktion kombinieren. Sie können sie in Berechnungsskripten oder Formeln verwenden.
Erstellen und testen Sie neue Makros lokal in einer Testanwendung. Registrieren Sie CDMs erst global, nachdem Sie sie in einer Testanwendung getestet haben und sie in einer Produktionsumgebung verwenden können.
Zum Erstellen und Verwalten von CDMs benötigen Sie mindestens die Berechtigung "Datenbankmanager".
CDMs werden nur für Blockspeicher-Cubes unterstützt.
Benutzerdefinierte Makros benennen
Essbase-Namen für benutzerdefinierte Makros (CDM) müssen eindeutig sein und mit dem @-Symbol beginnen. Lokale Makros werden mit dem Anwendungsnamen vorangestellt.
Befolgen Sie die folgenden Richtlinien beim Benennen von CDMs:
-
Starten Sie den Makronamen mit dem Symbol "@". Beispiel: @MYMACRO. Der Rest eines Namens kann Buchstaben, Zahlen und die folgenden Symbole enthalten: @, #, $ und _. Makronamen dürfen keine Leerzeichen enthalten.
-
Bei Makros, die nur von anderen Makros aufgerufen werden, starten Sie den Makronamen mit "@_", um ihn von Makros und Funktionen zur allgemeinen Verwendung zu unterscheiden.
-
Weisen Sie Makros eindeutige Namen zu. Außerdem muss sich ein Makroname von den Namen benutzerdefinierter Funktionen und von den Namen vorhandener Berechnungsfunktionen unterscheiden.
Hinweis:
Wenn eine Anwendung ein lokales Makro enthält, das denselben Namen wie ein globales Makro hat, hat das lokale Makro Vorrang und wird zur Berechnung verwendet.
-
Bei lokalen Makros müssen Sie den Anwendungsnamen dem Makronamen voranstellen und den Anwendungsnamen vom Makronamen durch einen Punkt trennen:
AppName.@MacroNameBeispiel:
Sample.@MYMACRO -
Da globale Makros für jede Anwendung verfügbar sind, die auf dem Essbase-Server ausgeführt wird, auf dem das Makro erstellt wurde, weisen Sie ihm keinen Anwendungsnamen zu.
Benutzerdefinierte Makros erstellen
Wenn Sie ein benutzerdefiniertes Makro (CDM) erstellen, registriert Essbase es in einem Katalog. Ihr Makro kann global oder lokal für eine Anwendung sein. Anschließend können Sie es in Formeln und Berechnungsskripten verwenden, bis das Makro aus dem Katalog entfernt wird.
Sie können ein CDM wie folgt registrieren:
-
Als lokal, in dem das Makro nur in der Essbase-Anwendung verfügbar ist, in der es erstellt wurde
-
Als global, in dem das Makro für alle Essbase-Anwendungen verfügbar ist, die auf dem Essbase-Server ausgeführt werden, auf dem das Makro erstellt wurde
So erstellen Sie ein CDM:
Verwenden Sie die create macro-Anweisung MaxL.
Die folgende MaxL-Anweisung erstellt ein lokales Makro namens @COUNTRANGE zur Verwendung in der Beispielanwendung:
create macro Sample.'@COUNTRANGE'(Any) AS
'@COUNT(SKIPMISSING, @RANGE(@@S))'
spec '@COUNTRANGE(MemberRange)'
comment 'counts all non-missing values';Die folgende MaxL-Anweisung erstellt ein globales Makro namens @COUNTRANGE:
create macro'@COUNTRANGE'(Any) AS
'@COUNT(SKIPMISSING, @RANGE(@@S))'
spec '@COUNTRANGE(MemberRange)'
comment 'counts all non-missing values';Benutzerdefinierte Makros implementieren
Verwenden Sie Ihre benutzerdefinierten Makros (CDMs) genauso wie Essbase-native Berechnungsbefehle: indem Sie sie in Berechnungsskripten aufrufen oder sie mit Modellstrukturformeln verknüpfen.
So verwenden Sie ein CDM:
Benutzerdefinierte Makros anzeigen
Zeigen Sie ein benutzerdefiniertes Makro (CDM) in Essbase an, um zu bestimmen, ob es erfolgreich erstellt wurde und ob es sich um ein lokales oder ein globales Makro handelt.
Um ein CDM anzuzeigen, verwenden Sie die display macro MaxL-Anweisung.
Beispiele
Die folgende MaxL-Anweisung zeigt nur Makros an, die in der Beispielanwendung definiert sind:
display macro on application Sample;Die folgende MaxL-Anweisung zeigt alle globalen und lokalen Makros an, sofern Sie dazu berechtigt sind:
display macro;Benutzerdefinierte Makros aktualisieren
Um die Syntax oder das Verhalten eines benutzerdefinierten Makros (CDM) in Essbase zu ändern, legen Sie zunächst fest, ob es sich um ein lokales oder ein globales Makro handelt, und verwenden Sie dann die MaxL-Anweisung create or replace macro, um die Definition zu aktualisieren.
So aktualisieren Sie ein CDM:
Beispiele
Die folgende MaxL-Anweisung ändert das lokale Makro @COUNTRANGE, das nur in der Beispielanwendung verwendet wird:
create or replace macro Sample.'@COUNTRANGE'(Any)
as '@COUNT(SKIPMISSING, @RANGE(@@S))';Die folgende MaxL-Anweisung ändert das globale Makro @COUNTRANGE:
create or replace macro '@COUNTRANGE'(Any)
as '@COUNT(SKIPMISSING, @RANGE(@@S))';Benutzerdefinierte Makros kopieren
Sie können benutzerdefinierte Makros (CDMs) in jeden Essbase-Server und jede Anwendung kopieren, auf die Sie Zugriff haben. Ihre Anwendungsberechtigungsebene muss Database Manager oder höher sein.
Um ein CDM zu kopieren, verwenden Sie die create or replace macro-Anweisung MaxL.
Beispiel
Die folgende MaxL-Anweisung erstellt eine Kopie des @COVARIANCE-Makros:
create macro Sample.'@COVARIANCE2'(single, single) as '@COVARIANCE'(single, single);Benutzerdefinierte Makros entfernen
Um ein benutzerdefiniertes Makro (CDM) aus Essbase zu entfernen, legen Sie zunächst fest, ob es sich um ein lokales oder ein globales Makro handelt, und verwenden Sie dann die MaxL drop macro-Anweisung.
So entfernen Sie ein CDM:
Mit der folgenden MaxL-Anweisung wird das lokale Makro @COUNTRANGE entfernt, das nur in der Beispielanwendung verwendet wird:
drop macro Sample.'@COUNTRANGE';Mit der folgenden MaxL-Anweisung wird das globale Makro @COUNTRANGE entfernt:
drop macro '@COUNTRANGE';Katalog benutzerdefinierter Makros aktualisieren
Aktualisieren Sie den Essbase-Katalog der benutzerdefinierten Makros (CDMs), nachdem Sie Makros hinzugefügt, aktualisiert oder entfernt haben. Verwenden Sie die MaxL-Anweisung Aktualisieren Sie benutzerdefinierte Definitionen, wenn die Änderungen lokal sind, oder starten Sie den Essbase-Server neu, wenn die Änderungen global sind.
Um den Katalog der CDMs für alle Anwendungen auf einem Server zu aktualisieren, starten Sie den Server neu. Unter Server starten, stoppen und prüfen finden Sie unabhängige Deployments oder Befehle zum Starten, Stoppen und Anzeigen des Status von Prozessen verwenden für das Stack-Deployment auf OCI.
Um den Katalog der CDMs für eine Anwendung zu aktualisieren, verwenden Sie die Anweisung Benutzerdefinierte Definitionen aktualisieren MaxL.
Beispiel: Die folgende MaxL-Anweisung aktualisiert den Katalog der CDMs für die Beispielanwendung:
refresh custom definition on application sample;