In ORACLE BI EE gibt es zwei sehr nützliche Zeitreihen-Funktionen (AGO & ToDate), um z.B. den aufgelaufenden Umsatz (Year to Date YTD) vom 01.01. bis 01.03. mit dem Umsatz im gleichen Zeitraum vom Vorjahr zu vergleichen.
Bei einem Vergleich in dem ein Schaltjahr enthalten ist, führt dies jedoch zu einem Versatz von einem Tag.
Beispiel:
Ich habe in 2012 einen YTD Umsatz von 60T€ zum 01.02. und 70T€ zum 02.03.
Ich habe in 2012 einen YTD Umsatz von 90T€ zum 29.02. und 100T€ zum 01.03.
Ich habe in 2013 einen YTD Umsatz von 80T€ zum 28.02. und 110T€ zum 01.03.
Bericht 1
Auswertungsdatum 01.03.2013
YTD 2013: 110T€
YTD 2012: 90T€
Bericht 2
Auswertungsdatum 01.03.2012
YTD 2012: 100T€
YTD 2011: 70T€
Lege ich die Berichte nebeneinander erhalte ich für den gleichen Auswertungszeitraum zwei unterschiedliche YTD Umsatz Werte für 2012.
Wie ermittelt ORACLE BI EE die Werte?
Bei der YTD Ermittlung nummeriert ORACLE die Tage bis zum angegebenen Datum von 1 bis 365 bzw. 366 durch und merkt sich die Tagesnummer. Bei der Funktion AGO geht dann ORACLE ein Jahr zurück bis zur ermittelten Tagesnummer. Dies führt bei einem Schaltjahr in Verbindung mit einem Vorjahresvergleich zur zur Abweichung von einem Tag.
Lösung
Um das Problem zu lösen, muss die Zeitdimension geändert werden. Jedes Jahr hat nun 366 Tage, dass bedeutet für nicht Schaltjahre wird ein DUMMY-Datensatz eingeführt!
In der Zeittabelle DT_TIMES gibt es die Spalten
DT_DATE vom Typ DATE,
DT_ID vom Typ NUMBER als Primäschlüssel
DT_NOT_USED vom Typ VARCHAR2(1)
Für ein nicht Schaltjahr wird nun der 28.02. doppelt angelegt, dabei erhält der Primärschllüssel 20NN0229 (NN-Jahr) und die Spalte DT_NOT_USED den Wert = Y. Die Spalte DT_NOT_USED markiert diesen Datensatz als DUMMY-Datensatz, dies ist notwendig für den ETL-Prozess und für die Filterung im BI z.B. bei den Dashboards-Prompts.
Einstellungen im DWH
Beim ETL-Prozess in einem Data Warehouse wird in der Regel der Primärschlüssel der Dimension in die Faktentabelle geschrieben. Da der 28.02. bei nicht Schaltjahren doppelt vorkommt, muss bei der Ermittlung des Dimension-Keys die Spalte DT_NOT_USED = 'N' mit geprüft werden. Es wird verhindert, dass die Fakten des 28.02. nicht auf zwei Datensätze verteilt werden!
Einstellungen im BI
Im BI Metamodell muss die Spalte DT_NOT_USED (Bez.: ungültiges Datum) in der Präsentationsschicht mit aufgenommen werden. Bei der Zeitdimension sollte der Primärschlüssel der untersten Ebene (Tagesebene) auf die ID umgestellt werden.
Damit das DUMMY- Datum bei den Berichten & Prompts nicht erscheint, macht es Sinn einen Filter in die Berichte bzw. Prompts mit aufzunehmen.
Einen Filter anlegen und in die Berichte zu referenzieren vereinfacht die Arbeit.
Hinweis
Da im DWH die Fakten-Daten immer nur die gültige ID des 28.02. zugewiesen bekommen haben, kann es nicht zu doppelten Daten kommen.