=====Die SQL Model Clause in der Oracle Datenbank verwenden=====
{{ :images:malcesine_gardasee.sql.png?direct|Malcesine am Gardasee - zu schön für SQL .-) }}
Mit der Model Clause können erweiterte Analysen und Funktionen auf der Ergebnis Menge einer SQL Abfrage durchgeführt werden.
Übersicht Syntax:
**SQL Abfrage** \\
**MODEL** \\
**PARTITION BY ()** \\
**DIMENSION BY ()** \\
**MEASURES()** \\
**RULES()** \\
Ein erstes Beispiel für eine SQL Abfrage für eine dynamischen Kalender für den gerade aktuellen Tag:
column key heading "Stunde"
column row_val heading "Datum und Stunde"
select * from (select dummy as key, dummy as row_val from dual)
MODEL
DIMENSION BY (0 as key)
MEASURES( cast( null as date ) as row_val )
RULES ITERATE (24)
( row_val[ITERATION_NUMBER] = trunc(sysdate)+(1/24*ITERATION_NUMBER) )
/
Die obige SQL Abfrage mit DUAL dient nur dazu im ersten Schritt nur eine Zeile zu erzeugen, diese wird aber erst gar nicht ausgewertet. Mit der **RULES ITERATE (24)** Angabe wird eine Liste mit 24 Zeilen erzeugt.
Mit dieser Technik läßt sich dann eine komplexe dynamische universelle Zeit Dimension erstellen.
Demnächst mehr ...
----
====Quellen====
Oracle 10g:
* http://docs.oracle.com/cd/B19306_01/server.102/b14223/sqlmodel.htm
Oracle 12c:
* https://docs.oracle.com/database/121/DWHSG/sqlmodel.htm
Allgemein:
* http://www.oracle.com/technetwork/database/bi-datawarehousing/wp-in-database-analytics-12c-2132656.pdf
Web:
* https://apex.oracle.com/pls/apex/germancommunities/apexcommunity/tipp/4461/index.html