Suchen...
Generic filters
Exact matches only
Search in title
Search in excerpt
Search in content

Quartal, Tertial, egal…

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:

Abbildung 1 Ändern der Funktion

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:

Abbildung 2 Erstellen einer neuen Funktion

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


Abbildung 3 Bericht Level Attributes

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:

Abbildung 5 Bericht Additional hierarchies

Unter „Additional hierarchy levels“ erfolgt dann die Zuordnung der vorher angelegten Attribute:

Abbildung 6 Bericht Additional hierarchy levels

In DeltaMaster ist nun in der Periodendimension eine weitere Hierarchie auswählbar:

Abbildung 7 Einstellungen in der Dimension Periode und der Hierarchie Tertiale

Abbildung 8 Dimension Periode im DeltaMaster