Wir präsentieren hier ein Beispiel für sehr fortgeschrittenes MDX, auf das wir bei einem unserer Kunden gestoßen sind. Beachten Sie, dass es eine Funktion von ICCube verwendet, die es ermöglicht, dass für ein Tupel dieselbe Hierarchie mehrfach definiert wird.
Der Anwendungsfall
Der Anwendungsfall beinhaltet mehrere Zeithierarchien innerhalb einer einzigen Zeitdimension auf eine nicht standardmäßige Weise.
Die vereinfachte Struktur lautet wie folgt:
- Dimension: Kalender
- Hierarchie: Jahr
- Stufe: Jahr
- Hierarchie: Zeitraum
- Ebene: Periodenwert (PV)
- Stufe: Zeitraum (P)
- Hierarchie: Jahr
Beispiel für eine Periodenhierarchie (PV- und P-Kinder):
- 1
- P1 2024
- P1 2025
- P1 2026
- 2
- P2 2024
- P2 2025
- P2 2026
- ...
Ziel ist es, den Umsatz für das Vorjahr zu berechnen und gleichzeitig Jahr, PV und P anzuzeigen. Hier ist die erste Abfrage:
MIT
MITGLIED [Maßnahmen]. [Umsatz im Vorjahr] AS ([Kalender]. [Jahr] .CurrentMember.prevMember, [Maßnahmen]. [Umsatz])
WÄHLEN
{[Maßnahmen]. [Umsatz], [Maßnahmen]. [Umsatz im Vorjahr]} auf 0
[Kalender]. [Jahr]. [Jahr] *
[Kalender]. [Zeitraum]
. [PV] *
[Kalender]. [Zeitraum]
. [P] auf 1
[Produkt]. [Produkt]. [Produkt] auf 2
VON [Cube]
In unserem Beispiel suchen wir nach etwas wie:
Aber was wir haben:
Was ist hier passiert?
Da Jahr und Periode separate Hierarchien sind, ist der Ausdruck
wird (nach Fertigstellung aus dem aus den Achsen definierten Kontext):
Warum?
Wir haben:
Optisch:
Was wir tun müssen
Lösung
Geben Sie das CurrentMember der Periode an, um die Standardeinstellung zu überschreiben:
Wie gelesen in der Dokument „Aktuelles Mitglied“:
Seit ICCube 4.8 gibt diese Funktion eine Menge von Elementen zurück, wenn das Tupel zwei Mitglieder derselben Hierarchie enthält. Für diese Funktion muss die ICCube-Eigenschaft 'DimensionalityCheck' auf False gesetzt sein.
Dinge, die es zu berücksichtigen gilt:
- Sie können dieselbe Hierarchie in einer oder mehreren Achsen verwenden, dies kann jedoch Ihre Berechnungen erschweren.
- In diesem Szenario gibt CurrentMember eine Menge zurück.
Dieses subtile, fortgeschrittene Szenario zeigt, wie Hierarchie-Interaktionen unbemerkt Ergebnisse verzerren können. Tools wie ein MDX-Debugger sind von unschätzbarem Wert, um solche Berechnungen Schritt für Schritt nachvollziehen zu können.