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.@MacroName

    Beispiel:

    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:

  1. Erstellen oder öffnen Sie ein vorhandenes Berechnungsskript oder eine vorhandene Formel.
    • Wenn es lokal registriert wurde, müssen Sie ein Berechnungsskript oder eine Formel in der Anwendung verwenden, in der das Makro erstellt wurde.

    • Wenn es global registriert wurde, können Sie jedes Berechnungsskript oder jede Formel in einer beliebigen Anwendung auf dem Essbase-Server verwenden.

  2. Fügen Sie das CDM dem Berechnungsskript oder der Formel hinzu.

    Beispiel: Um das zuvor in diesem Kapitel gezeigte benutzerdefinierte Makro @COUNTRANGE zu verwenden, erstellen Sie das folgende Berechnungsskript:

    CountMbr = @COUNTRANGE(Sales, Jan:Dec);

    Verwenden Sie dieses Berechnungsskript mit der Sample.Basic-Datenbank, oder ersetzen Sie "Sales, Jan:Dec" durch einen Bereich von Elementen in einer Testdatenbank.

  3. Speichern Sie das Berechnungsskript oder die Formel, und führen Sie sie dann wie gewohnt aus.

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:

  1. Stellen Sie fest, ob das Makro lokal oder global registriert ist.
  2. Um die Makrodefinition zu aktualisieren, verwenden Sie die create macro-Anweisung MaxL.

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:

  1. Stellen Sie fest, ob das Makro lokal oder global registriert ist.
  2. Stellen Sie sicher, dass keine Berechnungsskripte oder Formeln das CDM verwenden.
  3. Um das Makro aus dem Makrokatalog zu entfernen, verwenden Sie die drop macro-MaxL-Anweisung.
  4. Starten Sie alle Anwendungen neu, die mit dem Makro verknüpft sind.

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;