Formeln in Aggregate Storage-Modellstrukturen schreiben
Erstellen Sie MDX-Formeln in Essbase Aggregate Storage-(ASO-)Modellstrukturen mit dem Formeleditor. Mit Formeln können Sie grundlegende mathematische Gleichungen anwenden, Dimensionswerte berechnen, bedingte Tests durchführen und auf benutzerdefinierten Attributen (UDAs) filtern.
Formeln in Aggregate Storage-Modellstrukturen
Formeln sind Nur-Text. Sie können die Formeln direkt in den Formeleditor eingeben oder eine Formel in einem beliebigen Texteditor erstellen und den Text in den Formeleditor einfügen.
Die MDX-basierte Syntaxprüfung informiert Sie über Syntaxfehler in Formeln, z.B. einen falsch eingegebenen Funktionsnamen oder ein nicht vorhandenes Element. Unbekannte Elementnamen können anhand einer Liste von Funktionsnamen validiert werden. Wenn Sie nicht mit der Serviceinstanz oder der mit der Modellstruktur verknüpften Anwendung verbunden sind, stellt Essbase möglicherweise eine Verbindung her, um unbekannte Namen zu validieren.
Die Syntaxprüfung erfolgt, wenn eine Formel validiert oder gespeichert wird. Fehler werden in der Benutzeroberfläche angezeigt. Wenn ein Fehler auftritt, speichern Sie die Formel. Wenn Sie eine Formel mit Fehlern speichern, werden Sie beim Speichern der Gliederung gewarnt. Wenn Sie eine Formel mit Fehlern berechnen, wird die Formel ignoriert, und dem Element wird der Wert $MISSING zugewiesen.
Eine Syntaxprüfung kann Sie nicht vor semantischen Fehlern in einer Formel warnen. Semantische Fehler treten auf, wenn eine Formel nicht wie erwartet funktioniert. Eine Möglichkeit, semantische Fehler in einer Formel zu finden, besteht darin, den numerischen Wertausdruck, der die Formel definiert, in eine MDX-Abfrage zu platzieren und sie auszuführen, um zu überprüfen, ob die Ergebnisse wie erwartet sind.
Sie können Formeln in eine Datenquelle für die Dimensionserstellung aufnehmen. Siehe Feldtypinformationen für Dimensionserstellung festlegen.
Grundlegende Gleichungen für Aggregate Storage-Modellstrukturen
Sie können eine mathematische Operation auf eine Formel anwenden, um eine grundlegende Gleichung zu erstellen. Beispiel: Die folgende Formel wird auf das Element "Durchschn. Einheiten/Transaktion" im Cube "ASOsamp Basic" angewendet:
[Units]/[Transactions]Die Formel in "Durchschn. Einheiten/Transaktion" dividiert die Anzahl der Einheiten durch die Anzahl der Transaktionen, die zur durchschnittlichen Anzahl der Einheiten pro Transaktion eingehen.
In Aggregate Storage-Modellstrukturen können Elemente nicht als Spesenpositionen gekennzeichnet werden. Daher sind Funktionen in Calc, wie @VAR und @VARPER, die den Unterschied zwischen zwei Elementen unter Berücksichtigung von Spesentags bestimmen, in Aggregate Storage-Modellstrukturen nicht relevant.
Der MDX Subtraktionsoperator kann verwendet werden, um die Differenz zwischen zwei Elementen zu berechnen. Beispiel: Die folgende Formel kann auf ein neues Element, das in ASOsamp Basic als Preisdifferenz bezeichnet wird, angewendet werden, um die Differenz zwischen dem bezahlten Preis und dem ursprünglichen Preis zu berechnen:
[Price Paid]-[Original Price]Dimensionsübergreifende Elemente in Aggregate Storage-Modellstrukturen
ASOsamp Basic bietet eine Formel für ein Element mit dem Namen % of Total. Diese Elementformel gibt den Prozentsatz der Kennzahlensumme an, die von Transaktionen produziert wird. Die Formel für den Prozentsatz der Summe:
Transactions/
(Transactions,Years,Months,[Transaction Type],[Payment Type],
Promotions,Age,[Income Level],Products,Stores,Geography)Die Formel gibt ein Element (Transaktionen) geteilt durch ein Tupel (Transaktionen, Jahre, ...) an. Die Formel listet ein oberstes Element aus jeder Dimension auf, um alle Transaktionsdaten im Cube zu berücksichtigen. Das heißt, nicht Transaktionsdaten für das Element "Währungsjahr", sondern Transaktionsdaten für alle Elemente der Years-Dimension, nicht Transaktionsdaten für Monate in den ersten beiden Quartalen, sondern Transaktionen für alle Monate usw. Auf diese Weise stellt der Wert von % of Total den Prozentsatz der Gesamtsumme der Kennzahlen dar, die von Transaktionen produziert werden.
Bedingte Tests in Formeln für Aggregate Storage-Modellstrukturen
Sie können eine Formel definieren, die einen Bedingtest oder eine Reihe von Bedingtests verwendet, um den Wert für ein Element zu bestimmen. Verwenden Sie die IIF-Funktion, um einen Test mit einer anderen Bedingung durchzuführen. Sie können IIF-Funktionen verschachteln, um eine komplexere Abfrage zu erstellen.
Das Beispiel gibt eine Formel für ein Mitglied an, die den Preis darstellt, den das Unternehmen für Kreditkartentransaktionen bezahlen muss, einschließlich einer Gebühr von 5%. Im folgenden Beispiel wird davon ausgegangen, dass das Element "Kreditpreis" der Measures-Dimension des Cubes "ASOsamp Basic" hinzugefügt wurde. Der Kreditpreis hat die folgende Formel, die dem bezahlten Preis 5% hinzufügt, wenn der Zahlungstyp eine Kreditkarte ist.
IIF (
[Payment Type].CurrentMember=[Credit Card],
[Price Paid] * 1.05, [Price Paid]
)Mit dem Konstrukt CASE, WHEN, THEN können Sie Formeln mit mehreren Tests und anderen Bedingungen erstellen.
Die Filterfunktion gibt die Tupel des Eingabesets zurück, die den Kriterien der angegebenen Suchbedingung entsprechen. Beispiel: Um einen Basisplan (100) für alle Produkte festzulegen, können Sie ein Basisplanelement hinzufügen und eine Formel dafür erstellen:
Count(Filter(Descendants([PersonalElectronics],
[Products].Levels(0)),[Qtr1] > 100.00))UDAs in Formeln in Aggregate Storage-Modellstrukturen
UDAs sind Wörter oder Formulierungen, die Sie für ein Mitglied erstellen. Beispiel: Top-Level-Elemente der Market-Dimension haben in Sample.Basic den UDA Small Market oder den UDA Major Market.
Das Beispiel "Hauptmarkt" in diesem Thema zeigt, wie Sie eine Formel für ein Mitglied erstellen, in der die Umsatzsumme für alle wichtigen Marktteilnehmer angezeigt wird. Im Beispiel wird davon ausgegangen, dass ein neues Mitglied (Major Market Total) zu Sample.Basic hinzugefügt wurde.
-
MDX bietet eine boolesche Funktion, IsUDA, die TRUE zurückgibt, wenn ein Element das zugehörige UDA-Tag hat. Die folgende Syntax gibt TRUE zurück, wenn das aktuelle Element der Market-Dimension das UDA "Major Market" aufweist:
IsUda([Market].CurrentMember, "Major Market") -
Eine Filterfunktion, die mit IsUDA verwendet wird (wie in der folgenden Syntax gezeigt), durchläuft jedes Element der Market-Dimension und gibt einen Wert für jedes Element zurück, das das Major Market UDA aufweist:
Filter([Market].Members, IsUda([Market].CurrentMember, "Major Market")) -
Die Funktion "Summe" fügt die von der Funktion "Filter" zurückgegebenen Werte hinzu. Für das Beispiel "Hauptmarkt" wird die folgende Formel erstellt:
Sum (Filter([Market].Members, IsUda([Market].CurrentMember, "Major Market")))Diese Formel ist dem Hauptelement "Marktsumme" zugeordnet.