OLAP
OLAP ermöglicht es Ihnen, wichtige Kennzahlen aus Ihren OrgaMon Daten herauszufiltern. OLAP hilft Ihnen Fragen an den OrgaMon zu stellen. Hier typische Fragestellungen:
- Anzahl der Kunden, die in den letzten 3 Monaten etwas gekauft haben
- Der durchschnittliche Umsatz pro Kunde. Average Revenue per User (ARPU)
- Liste der Artikel, die seit einem Jahr ohne Verkauf sind
- Liste der Artikel, sortiert nach dem Verkaufsrang
- Belege, die älter als 10 Jahre sind
- Kunden die vor 5 Jahren etwas gekauft haben, dann aber nicht mehr
In der Regel benötigt man eine externe Datenhaltung in einem Datawarehouse, um solch leistungsstarke Analysen von Unternehmensdaten durchzuführen. OrgaMon OLAP arbeitet OnLine und ist dadurch echtzeitfähig. Allerdings ist bei der Erstellung der Abfragen ein internes Verständnis der Datenbank Tabellen hilfreich.
- OLAP ist recht komplex, reine Anwender finden in Auswertungen mundgerechtes OLAP.
- Einen Überblick über den OLAP-Begriff finden Sie hier : [1]
- Einen Überblick über den Datawarehouse-Begriff finden Sie hier: [2]
Der nächste Schritt werden Modellrechnungen im OrgaMon sein, also das Weiterführen von Unternehmenszahlen in die Zukunft und entsprechende Auswertungen. Dadurch kann rechtzeitig vor schadhaften Entwicklungen gewarnt werden.
OrgaMon Anwender kommen selten mit der OLAP Definition in Berührung, sie verwenden in der Regel den OLAP Arbeitsplatz.
Das Befüllen der Datenbasis kann durch ein FTP Script erfolgen.
Funktionsüberblick
Eine OLAP- Anfrage ist ein Script, das schrittweise von oben nach unten abgearbeitet wird. In jedem Block erfolgt eine Definition einer OLAP-Dimension. In weiteren Schritten erfolgt eine Kombination/Aggreditierung der entstandenen Dimensionen. Am Ende des Scriptes steht das Ergebnis heruntergebrochen auf eine .csv Tabelle zur Verfügung.
-- Parameter -- $Start='01.01.2020' $Ende='01.01.2021'
-- 1. Dimension wird definiert -- select ... -- 2. Dimension wird definiert -- select ...
-- 2. Dimension wird erweitert -- add 3;2;1 - -- Verarbeitung der 1. und 2. Dimension zu einem Ergebnis -- subtract - -- Konvertierung des Ergebnisses nach xls -- excel -
- Als Kommentarzeilen werden mit "--" beginnende Zeilen interpretiert.
- An verschiedenen Stellen im Programm können Ergebnisse aus OLAP- Abfragen wiederum eingelesen und weiterverarbeitet werden.
- Mit Hilfe von Parametern ganz am Anfang kann es Endusern einfach ermöglicht werden, die Anfrage zu parametrisieren.
OLAP - Parameter
Parameter sind im Skript defnierbare Platzhalter (Konstanten). Sie müssen durch ein "$" (Dollar-Zeichen) eingeleitet werden. Einmal zugewiesene Parameter können im ganzen Skript als Konstanten angewendet werden. Beispiel:
$PERSON_R=92281 select * from PERSON where RID=$PERSON_R append select * from BELEG where PERSON_R=$PERSON_R
SQL "select ..."
- Parameter lassen sich durch den Rückgabewert eines SQL-Skriptes belegen
$ANZAHL=slect count(RID) from Beleg where ANLAGE>'01.01.2018'
Reservierte Parameter
$KopieSpeichernUnter= # # <Pfadangabe> # # gebe hier einen Verzeichnisnamen an. In dieses Verzeichnis werden alle Ausgabe-Tabellen des # aktuellen OLAP-Skripts kopiert. Der Dateinname ist dabei der selbe wie bei der Original-Speicherung. # Die Pfadangabe muss mit einem "\" enden. # # Wollen Sie Ergebnisdateien einen festen eigenen Dateinamen geben, # so verwende dafür "store" #
$Silent= # # "JA"|"NEIN" # # Im Silentmodus wird bei Treffen auf die Zeile mit dem Eintrag # # return # # das Script beendet. Dieser Parameter findet sich meist nicht im Skript # sondern wird als Parameter vom aufrufenden Programm mitgegeben. Wird OLAP # aus der Entwicklungsumgebung heraus aufgerufen, wird der Wert auf # NEIN gesetzt.
$ExcelOpen= # # "JA"|"NEIN" # # Der Befehl "open" wird nur dann ausgeführt, wenn ExcelOpen den # Wert "JA" hat (default). Bei Auswertungen und bei der Skriptausführung # bei Tagwache und Tagesabschluss ist ExcelOpen "NEIN" (default). #
$NAMESPACE= # # "TMP"|~AlternativerNamespace~ # # default ist "TMP". OLAP erstellt während der Skript-Auswertung # Dimensionen (die Seiten des OLAP-Würfels) physikalisch werden # diese Werte in einer Tabelle gespeichert. # Diese Tabelle werden automatisch durchnummeriert und heissen # OLAP$TMP0, OLAP$TMP1, OLAP$TMP2, ... # Da diese Tabellen immer wiederverwertet werden, kann es sein dass # die Metadaten, die gerade benötigt werden (Struktur der Tabelle) # nicht in der aktuellen Tabelle korrekt sind. Um sicherzustellen # dass die Wiederverwertung funktioniert setzt man einen anderen # Namespace, dadurch wird der Tabellenname eindeutig. Bei # # $NAMESPACE=XYZ # # werden die OLAP-Dimensionen als OLAP$XYZ0, OLAP$XYZ1, usw. # bezeichnet.
Vorbelegte Parameter
neben eigenen Parametern, sind folgende Standard-Parameter immer definiert.
$Datum=01.01.2009 $Datum8=01.01.09 $Datum10=01.01.2009 $Skript=Umsatz $Diagnose=~PfadDesDiagnoseVerzeichnisses~ $SEQ_TAGESABSCHLUSS=~WertDerSequenz(GEN_BACKUP)~ $SEQ_TAGWACHE=~WertDerSequenz(GEN_TAGWACHE)~
Funktionsreferenz
- $ Parameter Vorbelegen von Konstanten
- $ numerischer Parameter Erstellen und Laden von SQL Includes
- add fügt einzelne Zeilen hinzu. Kann Spaltenwerte addieren
- append* schreibt die aktuelle Tabelle einfach weiter.
- assign Punkte einem Zeitstrahl zurordnen
- basic führt das folgende BASIC - Programm aus
- cast Feld-Typen anpassen
- complete fehlende Spalten komplettieren
- connect an andere Datenbank als die aktuelle verbinden (Weggefallen)
- consult eine externe Tabelle konsultieren
- default Variable werden nur gesetzt wenn nicht schon vorbelegt
- delete löscht Spalten.
- data* SQL Statements an die Datenbank
- extent 2 Ergebnistabellen erweitern
- excel Ergebnistabelle im EXCEL(tm) Format speichern
- header Tauscht den aktuellen Header aus
- html Lädt, füllt und speichert eine html-Vorlage
- integrate identische Spalten andere addieren
- integrate2 identische Spalten andere addieren
- integrate3 identische Spalten andere addieren
- include an ein anderes Skript übergeben
- join 2 Ergebnistabellen verbinden
- list einzelnen Spalten werden Kommaseperiert aufgelistet
- load lädt einzelne Spalten aus einer csv in eine Datenbank Tabelle.
- nop* "No Operation" keine Aktion, zählt aber den Context um eins weiter
- Oc OrientationConvert
- repeat führt SQL Statements wiederholt aus.
- replace fehlende Spalten komplettieren
- return verlässt im Servermodus das Script an dieser Stelle.
- save speichert das Ergebnis in der Datenbank ab
- select SQL Statement
- sort Spalten sortieren
- spread macht aus dem Inhalt der 2. Spalte neue Spalten
- spread2 Summiert über Spalte 2 die Spalte 3
- store speichert das aktuelle Ergebnis in eine Datei.
- story listet Felder mit identischem Anker nach rechts auf.
- subtract aus 2 Ergebnistabellen die Differenzmenge bilden
- table zwei Auswertungen zu einer Tabelle kombinieren
* kein '-' am Ende notwendig
System OLAPs
- OLAP-Abfragen können automatisiert im Rahmen des Tagesabschlusses durchgeführt werden. Die OLAP-Skripte müssen sich im System-OLAP-Verzeichnis befinden (Grüner Ordner). Dazu muss der OLAP-Dateiname einem gewissen Muster entsprechen:
#
# Für eine Durchführung im Rahmen des Tagesabschlusses:
#
Tagesabschluss.*.OLAP.txt
#
# Für eine Durchführung im Rahmen der Tagwache:
#
Tagwache.*.OLAP.txt
- Die Verwendung von gewissen OLAP-Abfragen ist in den OrgaMon integriert, so ist es einfach möglich auf besondere Benutzerwünsche einzugehen.
System.Beleg.Aktion.OLAP.txt
- Auftrag.Sperre um ein Jahr verschieben
update # AUFTRAG set # SPERRE_VON = SPERRE_VON + 365, # SPERRE_BIS = SPERRE_BIS + 365 where # BAUSTELLE_R=355
Beispiele
Lastschriftvolumen
// // Lastschriftvolumen im Jahr // select DATUM, (BETRAG * -1.0) as BETRAG from BUCH where (NAME='1200') and (BETRAG<0) order by DATUM integrate DATUM=Year(DATUM) - excel BETRAG=MONEY open -