Bei der Modellierung eines OLAP-Würfels spielt die Zeit eine große Rolle. Üblicherweise strukturieren wir diese Information in einer Hierarchie nach den Ebenen Jahr, Quartal, Monat und Tag. Auch die Einteilung in Kalenderwochen ist nicht unüblich. Hier und da kommt es aber vor, dass man Tertiale abbilden muss. Unser Modellierungstool DeltaMaster Modeler bringt zwei Drittel der oben genannten Möglichkeiten schon mit. Für die Tertiale allerdings benötigt es noch ein wenig Handarbeit.
Anpassungen in der relationalen Datenbank
Die Funktion dbo.F_BC_DateID errechnet aus dem Datum das Jahr, den Monat oder die Kalenderwoche. Im DeltaMaster Modeler bildet diese Funktion die Grundlage für die Befüllung der ID-Spalte (Bericht Level Attribute Source Columns, Spalte Source Column for Attribute).
Um nun das Tertial errechnen zu können, muss diese Funktion um folgenden Teil erweitert werden:
WHEN @datepart like 'x%' THEN CASE WHEN Datepart(m,dateadd(m, @FYOffset*-1,@date)) <=4 THEN Datepart(yy,dateadd(m, @FYOffset*-1,@date)) * 1000 + 1 WHEN Datepart(m,dateadd(m, @FYOffset*-1,@date)) >8 THEN Datepart(yy,dateadd(m, @FYOffset*-1,@date)) * 1000 + 3 ELSE Datepart(m,dateadd(m, @FYOffset*-1,@date)) * 1000 + 2 END
Für die Bezeichnung des Tertials wird eine neue Funktion erstellt:
Create Function [dbo].[F_BC_DateTertialBEZ](@datepart varchar(10), @date
smalldatetime, @FYOffset smallint)
returns varchar(20) BEGIN RETURN CASE WHEN @datepart like 'x%' THEN CASE WHEN Datepart(m,dateadd(m, @FYOffset*-1,@date)) <=4 THEN convert(varchar(20), Datepart(yy,dateadd(m, @FYOffset*-1, @date))) + ' Tertial 1' WHEN Datepart(m,dateadd(m, @FYOffset*-1,@date)) >8 THEN convert(varchar(20), Datepart(yy,dateadd(m, @FYOffset*-1, @date))) + ' Tertial 3' ELSE convert(varchar(20), Datepart(yy, dateadd(m, @FYOffset+-1, @date)))+ ' Tertial 2' END ELSE NULL END END
Modellierung mit dem Modeler
Um eine additionale Hierarchie für das Tertial erstellen zu können, müssen mehrere Attribute angelegt werden:
- Jahr_Tertial
- Jahr_Tertial_BEZ
- Tertial
- Tertial_BEZ
- Monat_Tertial
- Monat_Tertial_BEZ
Im Bericht „Level attribute aource columns“ greifen wir auf die vorher angelegten Funktionen zurück:
Abbildung 4: Bericht Level attribute source columns
Unter „Advanced Modeling“ wird im Bericht „Additional hierarchies“ eine neue Hierarchie mit dem Namen Periode_Tertiale angelegt:
Unter „Additional hierarchy levels“ erfolgt dann die Zuordnung der vorher angelegten Attribute:
In DeltaMaster ist nun in der Periodendimension eine weitere Hierarchie auswählbar: