OLAP: Unterschied zwischen den Versionen

Aus OrgaMon Wiki
Zur Navigation springen Zur Suche springen
Zeile 26: Zeile 26:


== OLAP - Parameter ==
== OLAP - Parameter ==
Parameter sind im Skript defnierbare Platzhalter. Einmal zugewiesene Parameter können im ganzen Skript als Konstanten ausgewertet werden.
=== Reservierte Parameter ===
$KopieSpeichernUnter=
#
# geben Sie 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.
#
=== Vorbelegte Parameter ===


neben eigenen Parametern, sind folgende Standard-Parameter immer definiert.
neben eigenen Parametern, sind folgende Standard-Parameter immer definiert.

Version vom 16. März 2011, 17:45 Uhr

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


In der Regel benötigtt 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]
  • Modellrechnungen für Ausblicke in zukünftige Entwicklungen: http://oksimo.inm.de/

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

Im wesentlichen wird eine OLAP Anfrage mit einem Programmscript gesteuert. Als Kommentarzeilen werden mit "--" und "//" beginnende Zeilen interpretiert. An verschiedenen Stellen im Programm können Ergebnisse aus OLAP Abfragen wiederum im OrgaMon 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. Einmal zugewiesene Parameter können im ganzen Skript als Konstanten ausgewertet werden.

Reservierte Parameter

$KopieSpeichernUnter=
#
# geben Sie 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.
#

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

OLAP - Beispiele

http://olap.orgamon.de/

Funktionsreferenz


  • select SQL Statement
  • data* SQL Statements an die Datenbank
  • cast Feld-Typen anpassen
  • join 2 Ergebnistabellen verbinden
  • consult eine externe Tabelle konsultieren
  • extent 2 Ergebnistabellen erweitern
  • excel Ergebnistabelle im EXCEL(tm) Format speichern
  • integrate identische Spalten andere addieren
  • integrate2 identische Spalten andere addieren
  • include an ein anderes Skript übergeben
  • sort Spalten sortieren
  • complete fehlende Spalten komplettieren
  • replace fehlende Spalten komplettieren
  • table zwei Auswertungen zu einer Tabelle kombinieren
  • default Variable werden nur gesetzt wenn nicht schon vorbelegt
  • assign Punkte einem Zeitstrahl zurordnen
  • subtract aus 2 Ergebnistabellen die Differenzmenge bilden
  • list einzelnen Spalten werden Kommaseperiert aufgelistet
  • save speichert das Ergebnis in der Datenbank ab
  • nop* "No Operation" keine Aktion, zählt aber den Context um eins weiter
  • spread macht aus dem Inhalt der 2. Spalte neue Spalten
  • spread2 Summiert über Spalte 2 die Spalte 3
  • repeat führt SQL Statements wiederholt aus.
  • load lädt einzelne Spalten aus einer csv in eine Datenbank Tabelle.
  • return verlässt im Servermodus das Script an dieser Stelle.
  • delete löscht Spalten.
  • story listet Felder mit identischem Anker nach rechts auf.
  • add fügt einzelne Zeilen hinzu.
  • append* schreibt die aktuelle Tabelle einfach weiter.
  • basic führt das folgende BASIC - Programm aus
  • html Lädt, füllt und speichert eine html-Vorlage

* kein '-' am Ende notwendig

Ergebnismenge als XLS

Das Endergebnis wird im Standard Tabellenformat (c)Microsoft(r,tm)XLS(r,tm) ausgegeben, das durch LibreOffice verwendet werden kann.

System OLAPs

  • OLAP-Abfragen können automatisiert im Rahmen des Tagesabschlusses durchgeführt werden. Dazu muss der OLAP-Datename einem gewissen Muster entsprechen:

Tagesabschluss.*.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
System.Prorata.Artikel.OLAP.txt
System.Prorata.Belege.OLAP.txt
System.Prorata.Person.OLAP.txt
System.Prorata.Posten.OLAP.txt
System.Prorata.Verlagsmodus.Artikel.OLAP.txt
System.Prorata.Verlagsmodus.Person.OLAP.txt

Neu: CLUB

In Zukunft sollen Parameter Eingabedialoge abfragbar sein. (Ev. mit Historie und default Belegungen)

In Zukunft sollen Dimensionen vordefiniert sein (Artikel,Belege, Verkäufe, Personen).

In Zukunft sollen Attribute angebbar sein (Artikel.Anlage > -3 Monate, Person.Alter > 40).

In Zukunft sollen Betriebsbegriffe vordefinierbar sein.
Umsatz(eines Artikel) (select MENGE_GELIEFERT from POSTEN-Club)
Umsatz(einer Person) (select DAVON_BEZAHLT from BELEG-Club)

der POSTEN-Club kann dann einfach * sein, oder wieder selektiert. n-Idee: Jede Dimension hat üben, in die manden Abfrage-Faden flechten kann. OLAP-Admins definieren Clubs, Dimensionen und en. Zeiträume sollten nun (Jahrgenauer |Taggenauer | Monatgenauer | Wochengenauer) kummuliert werden. Das ist die Granularität Summe ist die größe Körnung.

Club: A (maybe empty) List of Members
Rule: A piece of deterministic logical code that decides, if a record is a Member or not. Club uses Rules to define if one is  a member or not.
Mem ber: A Record that is a part of one ore more clubs
isMember(): Answer the Question if a En
Field: space in a Record that can store a value , or can be empty
Record: One Line in a Table
Table: The Collection of Lines
Welcome: Somewhat happend, you are now gain membership of a club
Dependencies: A stored hint, that the system has to check again some rules to say welcome or good bye
transformer: a piece of code that calculates a in64 from a key of 
Transaction: a of atoms
atom: a single changing operation done to the base

Neu: Begriff

Begriffe wie "Kunde" und "Umsatz" oder "Sortimentsbewegung" werden als OLAP-Statements definiert. Ein zentrale OLAP Abfrage könnte nun Fragestellungen mit Hilfe von "Begriffen" formulieren. Beispiel:

  • Alle Kunden mit Sortimentsbewegung in den Sortimenten "A" und "B" im Zeitraum Januar bis März 2010

Die Auflösung würde so erfolgen, dass zunächst die Begriffe

# 1. Schritt: Begriffstabellen bilden
Kunden('01.01.2010','31.03.2010')
Sortimentsbewegung('01.01.2010','31.03.2010')

ausgelöst werden. Diese Begriffs-Eregbnise werden in temporären Ergebnistabelle zuwischengespeichert. Alles über EIN zentrales online SQL-Statement lösen zu wollen hat sich als unwirtschaftlich herausgestellt.

# 2. Schritt 
select PERSON_R from Kunden
join Sortimentsbewegung where
(Kunden.PERSON_R=Sortimentsbewegung.PERSON_R) and
(
 (Sortimentsbewegung.SORTIMENT_R='A') or
 (Sortimentsbewegung.SORTIMENT_R='B') or
)

würde man bei firebird alles in eine gemeinsame Transaktion packen, so könnte man "CREATE GLOBAL TEMPORARY TABLE ON COMMIT DELETE" machen.