Heute gab es wieder eine interessante Knobelaufgabe aus dem Cognos Analytics Forum zum Frühstück. Die Aufgabe lautet wie folgt: In einer Kreuztabelle soll die erste Zeile einen Startwert darstellen, der sich aus den Werten der vorherigen Spalten zusammensetzt, ähnlich einem Übertragungswert. Die Summenzeile unten ist dann die Summe über den gesamten Zeitraum bis zu der jeweiligen Spalte. Rechts unten in der unteren Summenzeile steht der Gesamtwert über die gesamte Kreuztabelle.
Auch hier hängt der Lösungsweg davon ab, welches Modell gewählt wurde. In diesem Fall erweist sich die dimensionale Modellierung als vorteilhaft, da über diese dimensionalen Funktionen die beiden Berechnungen sehr einfach erstellt werden können.
Formel für Startwert:
total( [Menge] within set periodsToDate( [Absatz (Analyse)].[Zeitangabe].[Zeitangabe].[Zeitangabe] ; prevMember(currentMember( [Absatz (Analyse)].[Zeitangabe].[Zeitangabe] ) ) ) )
Formel für Endwert:
total( [Menge] within set periodsToDate( [Absatz (Analyse)].[Zeitangabe].[Zeitangabe].[Zeitangabe] ; currentMember( [Absatz (Analyse)].[Zeitangabe].[Zeitangabe] ) ) )
Hier die Reportspezifikation dimensional als XML: DOWNLOAD
Relational kann eine Lösung so aussehen:
Endwert:
running-total( [Enrollment] )
Startwert:
[End]-total( [Enrollment] for [Year] )
Hier die Reportspezifikation relational als XML: DOWNLOAD