SOG-Helpcenter Logo SOG Business - Software

Aufbau eines Cubes


Die Verwendung eines Adhoc-Cubes (oder SOG ERP (VACOS) Desktop Cubes) ist nur solang empfehlenswert, wie eine bestimmte Anzahl von Datensätzen nicht überschritten wird. Die Grenze liegt bei ca. 100.000 Datensätzen. Sollen größere Datenmengen ausgewertet werden, so ist es erforderlich, einen Cube im Microsoft Analysis Service (Bestandteil von Microsoft SQL Server) aufzubauen. Beachten Sie, dass für den Zugriff auf einen solchen Analysis-Service entsprechende Laufzeitlizenzen von Microsoft für den SQL Server erforderlich sind.

Im Nachfolgenden wird beschrieben, wie mit Hilfe von SOG ERP (VACOS)-Funktionen ein solcher SQL Server Analysis-Cube aufgebaut werden kann. Als Beispiel dient hier der SQL-Server 2008.

Design der Cube-Daten



Verwenden Sie die SOG ERP (VACOS) -Cube-Funktionen "vgcube", "abucube" und "statcube2" um das Design Ihres SQL-Server-Cubes zu planen.
Legen Sie in den Selektor-Auswahlen jeweils die gewünschte Datenmenge und in den Listansichten jeweils die gewünschten Datenfelder fest, die an den Cube übergeben werden sollen.
Über die Einschränkung der Daten auf einen Artikel, einen Kunden oder/und einen kleinen Zeitraum, können die Daten im allgemeinen soweit eingeschränkt werden, dass das Cube-Design über einen Adhoc-Cube (SOG ERP (VACOS) Desktop Cube) getestet und ausprobiert werden kann.
Speichern Sie die gewünschten Ansichten nach Fertigstellung Ihres Cube-Designs.

Werte im SOG ERP (VACOS) Desktop Cube


Für einen SOG ERP (VACOS) -Desktop-Cube gilt: Solche Datenfelder, die in der Feldkonfiguration des ListControls in der Kategorie namens "Werte" gespeichert werden, werden im SOG ERP (VACOS) -Desktop-Cube in der Strukturhirarchie ebenfalls unterhalb von "Werte" angezeigt, und können somit für die Summierung der Daten in das Werte-Panel des Cubes gezogen werden.
Alle anderen Kategorien werden als Hirarchien dargestellt und führen somit zu einer Gruppierung der möglichen Cube-Dimensionen.
Verwenden Sie für einen Wert einen Namen, der ein "/" beinhaltet, so werden unterhalb der Werte Unterverzeichnisse gebildet, die Werte gruppieren.
Beispiel: "Deckungsbeträge/Db1" Erstellt eine Gruppe namens "Deckungsbeiträge" die den Wert "Db1" enthält.

Verwendung von Relationen


Die Verwendung von Relationen in der Festlegung der Datenfelder des Cubes ist möglich. Beachten Sie aber, dass später bei jeder Datenaktualisierung des Cubes jeweils die aktuellen Relationen verwendet werden.
Das heißt: Gehört ein Artikel im Jahr 2007 zu einer Warengruppe "1", werden die Cube-Datensätze bei diesem Artikel jeweils mit der Warengruppe "1" versehen.
Wird der Artikel nun Anfang 2008 in die Warengruppe "2" verschoben, und anschließend der SQL-Server-Cube vollkommen neu aufgebaut, oder der Desktop-Cube einfach neu geladen, so werden sich auch die Statistikdaten der Warengruppe "1" durch die Verlagerung des Artikels, um die Artikelsummen auf Warengruppe "2" verlagert.
Dies gilt genauso für z.B. Vertreterumsätze, wenn die Kunden-Vertreter Zuordnung verändert wird. Wird der Cube neu aufgebaut, so werden dabei auch die Vertreterumsätze vergangener Jahre verändert, da es keine Relationshistorie gibt, aus der eine frühere Relationszuordnung entnommen werden könnte.

Anlegen einer eigenen Datenbank für den SQL-Server Cube


Der SQL-Server Cube sollte im Allgemeinen auf einem eigenen physikalischen oder virtuellen Server installiert werden, um die Performance sowohl des Cubes als auch der "normalen" SOG ERP (VACOS) -Datenbank sicherzustellen.
Legen Sie auf dem Cube-Server eine eigene Datenbank an.
Starten Sie dazu das "SQL Server Managment Studio", geben Sie als "Servertyp" "Datenbankmodul" an und verbinden Sie sich mit dem Server.
Legen Sie nun unterhalb der Gruppe "Datenbanken" eine Datenbank z.B. namens "vacos_dwh" (für Datawarehouse) an.
Legen Sie die Größen der Datenbank sowie die Berechtigungen für diese Datenbank so fest, wie es Ihr Umfeld erfordert.

Anlegen einer SOG ERP (VACOS)-Firma für diese Datenbank


Legen Sie eine Firmensteuerdatei an, die den Zugriff auf die Datawarehouse-Datenbank ermöglicht.
Die Steuerdatei kann z.B. den Namen "env\${HHENVDOMAIN}\vacos_dwh.env tragen, und folgenden Inhalt haben:

sel FIRM - vacos_dwh

env OleDbGlobal (sqlsrv|SERVERNAME|vacos_dwh|BENUTZERNAME|KENNWORTSTRING)
env GlobalPath (${MSS7PATH})
env GlobalPathD (${MSS7PATHD})
env MSSHOST (SERVERNAME)
env MSSDB (vacos_dwh)
env MSSNOPWD (0)
env IFXHOST ()
env IFXDB ()

Registrieren Sie die Firma mit dem Kommando "regenv".

Anlegen einer Cube-Daten-Konfigurationsdatei


Legen Sie eine Cube-Daten-Konfigurationsdatei an. Die Datei muss in einem der durch die Variable FRMCFGPATH definierten Verzeichnisse liegen, sollte den Namen "SOGOlap_vacos_Artikelbuchungen_cfg.xml" tragen und etwa folgenden Inhalt haben:

<?xml version="1.0" encoding="utf-8" ?>
<Config>
  <SOGOlapDefinition
    SrcObj=":SOG.ERP.Modules.SOGERPOlap.Dialog:SOG.ERP.Modules.SOGERPOlap.Dialog.DlgOlapArtikelbuchungen2:NewDlgOlapArtikelbuchungen2"
    SrcFun="DynamicSql"
    SelectorConfigName="OlapArtikelbuchungen2.sel1"
    SelectorView="default"
    GridConfigName="global.olap"
    GridView="default"
    BuildRadarCube="false"
    />
</Config>

Die Parameter habe folgende Bedeutung:

 

SrcObj

Zeiger auf eine SOG ERP (VACOS)-Klasse, die das Entladen der Daten durchführt.

SrcFun

Funktionsname innerhalb der Klasse für das Entladen der Daten.

SelectorConfigName

Name der SQL-Selector-Konfiguration, die den Umfang der zu entladenden Daten festlegt.

SelectorView

Name der SQL-Selector-View, die den Umfang der zu entladenden Daten festlegt.

GridConfigName

Name der Konfiguration, die den Aufbau der zu entladenden Daten festlegt.

GridView

Name der View, die den Aufbau der zu entladenden Daten festlegt.

BuildRadarCube

true, wenn auch eine Radar-Cube Desktop-Datendatei erzeugt werden soll.

Anlegen einer Cube-Zugriffs-Konfigurationsdatei


Legen Sie eine Cube-Zugriffs-Konfigurationsdatei an.
Die Datei kann z.B. den Namen ${PROJ}\d1\cubes\vacos_Artikelbuchungen.sogcubexml tragen, und folgenden Inhalt haben:

<Config>
    <SOGCubeXml ConnectString="Provider=MSOLAP;Data Source=&quot;SERVERNAME&quot;;Catalog=vacos_Artikelbuchungen;"
       Cube="vacos dwh"
       Type="Artikelbuchungen2"
       DataDate="00000000000000"
       EnableDrill="true"
       DrillProj="ENVDOMAIN/vacos/01"
   />
</Config>

Bedeutung der Parameter:

 

ConnectString

Verbindungsstring, mit dem später die Verbindung zu dem SQL-Server-Cube aufgebaut werden kann. Legen Sie hier über "Catalog" den Namen des SQL-Kataloges fest, in dem Sie den Cube aufbauen.

Cube

Name des Cubes im Katalog.

Type

SOG ERP (VACOS)-Datentyp

DataDate

Datum der letzten Datenübernahme aus dem Cube.

EnableDrill

true: Es soll ein Drill-Down auf Datensatzebene ermöglicht werden.

DrillProj

Name des Env-Domain, des Projektnamens und der Firma, für die ein Datensatz-Drill-Down funktionieren wird.

Entladen und Laden der Cube-Daten


Führen Sie nun im SOG ERP (VACOS) -Projektverzeichnis das folgende Kommando aus:

    prc\SqlServerCube.bat -unload 01 vacos_dwh vacos_Artikelbuchungen d1\cubes\vacos_Artikelbuchungen

Für diese Funktion ist das SOG ERP (VACOS)-Recht "olapadmin" notwendig. Bitte weisen Sie dieses Recht nun den Personen/Sachbearbeitern zu, die wirklich das Laden des SQL-Cubes durchführen sollen. Mit diesem Sachbearbeiter sollte auch das Design der Cube-Daten durchgeführt worden sein.

Die Funktion entlädt die Daten aus der Firma "01" in eine ".sogolap"-Datei im Verzeichnis "d1\cubes". Anschließend wird ein Create-Table-Script aufgebaut und über die Firma "vacos_dwh" ausgeführt. Letztlich werden die Daten in die neu angelegte Tabelle geladen, und anschließend ein eindeutiger Schlüssel für die Daten aufgebaut.
Sollte die Funktion abbrechen, können die einzelnen Phasen des Kommandos über die Parameter "-create", "-load" und "-key1" gezielt angesteuert werden.
Die Option "-upd" erreicht eine Aktualisierung von Datensätzen auf Basis des hhupd-Datums der Quelltabelle.

Nach dem Kommando befinden sich in dem Verzeichnis "d1\cubes" für den neuen Cube Dateien mit den Endungen:

 

sogcubexml

Verbindungs-Konfiguration. Diese Datei wird später in ActiveSkin geöffnet, um eine Verbindung zum Cube aufzubauen.

sogolap

Datendatei. Hier befinden sich alle entladenen Daten, die in den Cube geladen wurde. Die Datei kann nach Fertigstellung des Ladevorgangs wieder gelöscht werden.

_key.sql

Script zum Anlegen eines eindeutigen Schlüsselbegriffs. Die Datei kann nach Fertigstellung des Ladevorgangs wieder gelöscht werden.

_tab.sql

Script zum Anlegen der Tabelle. Die Datei kann nach Fertigstellung des Ladevorgangs wieder gelöscht werden.

Erstellen des SQL-Server Cubes


Auf dem SQL-Server, starten Sie das "SQL Server Business Intelligence Development Studio".
Wählen Sie aus dem Menü den Punkt "Neu" - "Neues Projekt".
Als Vorlage wählen Sie "Analysis Services-Projekt".
  Wählen Sie den Speicherort, und benennen Sie das Projekt, wie in der Zugriffskonfiguration unter "Katalog" definiert.

* Klicken Sie im Projektmappen-Explorer auf "Datenquelle" mit der rechten Maustaste, und wählen Sie "Neue Datenquelle erstellen".
** Wählen Sie "Datenquelle basierend auf einer vorhandenen oder neuen Verbindung erstellen".
**** Klicken Sie auf die Schaltfläche "Neu".
****** Anbieter: OLEDB Systemeigen\SQL Server Native Client 10.0
****** Servername: Wählen Sie den eigenen Server.
****** Wählen Sie die gewünschte Authentifizierung. (z.B. SQL-Server, Benutzer: "sa", Kennwort: SA-Kennwort).
****** Wählen Sie den Datenbanknamen "vacos_dwh".
****** Identitätwechselinformationen: Dienstkonto
* Klicken Sie nun im Projektmappen-Explorer auf "Datenquellensichten" mit der rechten Maustaste und wählen Sie "Neue Datenquellensicht."
** Wählen Sie den Katalog "SOG ERP (VACOS) dwh".
**** Wählen Sie die Tabelle "sogolap_vacos_artikelbuchungen"
**** "fertig"
* Klicken Sie nun im Projektmappen-Explorer auf "Cube" mit der rechten Maustaste, und wählen Sie "Neuer Cube".
** Wählen Sie "Vorhandene Tabellen verwenden".
** Measuregruppentabellen: "sogolap_vacos_artikelbuchungen"
** Measures auswählen:
**** Wählen Sie hier, welche Werte in den Cube als Summierungsspalten aufgenommen werden sollen.
**** Aktivieren Sie auch das Datenfeld "Sogolap SOG ERP (VACOS)-Artikelbuchungen Anzahl" um auch eine Anzahl von Datensätzen ermitteln zu können.
** Neue Dimensionen auswählen
**** Wählen Sie "sogolap_vacos_artikelbuchungen"
** "fertig"
* Doppel-Klicken Sie im Projektmappen-Explorer den neuen Cube, um die Cube-Struktur anzuzeigen.
** Stellen Sie in den Eigenschaften der "Measures" den Formatstring auf "#,##0" oder "0". (Anzeige mit Tausender-Punkten. 0=Anzeige ohne Tausender Punkte.)
** Bearbeiten Sie die Dimensionsstruktur.
**** Fügen Sie alle Datenfelder der Tabelle, außer denen, die als "Measure" definiert wurden in die Struktur ein.
**** Erzeugen Sie auf Wunsch für Datumsfelder, oder Staat/Plz-Beziehungen Hierarchien.
* Legen Sie im Projektmappen-Explorer Rollen an, die den Zugriff auf die Cube-Daten regeln.
** Um den Zugriff auf alle Daten freizuschalten, sollten Sie mindestens eine Admin-Rolle anlegen, und die Mitglieder dieser Rolle definieren.
* Klicken Sie nun im Projektmappenexplorer auf das oberste Element. Wählen Sie dort "Verarbeiten".
** Klicken Sie auf "Ausführen".
* Testen Sie nun den Cube.
** Verwenden Sie die SOG ERP (VACOS) -Funktion "cube". Öffnen Sie die Datei "${PROJ}\d1\cubes\vacos_Artikelbuchungen.sogcubexml"

Einrichten einer automatischen Aktualisierung des Cubes


Legen Sie eine BAT-Datei an, die das Entladen und Laden der Cube-Daten aus SOG ERP (VACOS) regelt.
Der Name der Datei kann z.B. "c:\local\vacos_Artikelbuchungen_cube.bat" lauten, und folgenden Inhalt haben:

hhlogmsg "vacos_Artikelbuchungen_cube gestartet"
net use s: \\VACOSSERVER\sog /y
cd /d s:\vacos
call prc\SqlServerCube.bat -unload 01 vacos_dwh vacos_Artikelbuchungen d1\cubes\vacos_Artikelbuchungen
hhlogmsg "vacos_Artikelbuchungen_cube beendet"

* Starten Sie das "Microsoft SQL Server Management Studio".
* Verbinden Sie sich mit dem "SQL Server".
* Unter "Sicherheit" - "Anmeldeinformationen", richten Sie ein Konto z.B. "sogadm" ein, und hinterlegen Sie Identität und Passwort.
* Öffnen Sie "SQL Server-Agent".
** Unter "Aufträge" Wählen Sie "Neuer Auftrag".
**** Vergeben Sie den Namen "Aktualisieren vacos_Artikelbuchungen".
**** Fügen Sie einen Schritt hinzu:
****** Name: Entladen/Laden
****** Typ: Betriebssystem (CmdExec)
****** Ausführen als: sogadm
****** Befehl: c:\local\vacos_Artikelbuchungen_cube.bat
**** Fügen Sie einen weiteren Schritt hinzu:
****** Name: Cube aufbauen
****** Typ: SQL Server Analysis Services-Befehl
****** Ausführen als: Konto des SQL-Server-Agent-Diensts
****** Server: localhost
****** Befehl:

<Batch xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
  <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/2" xmlns:ddl100_100="http://schemas.microsoft.com/analysisservices/2008/engine/100/100">
    <Object>
      <DatabaseID>vacos_Artikelbuchungen</DatabaseID>
    </Object>
    <Type>ProcessFull</Type>
    <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
  </Process>
</Batch>

* Testen Sie den Auftrag über rechte Maus, "Auftrag starten ab Befehl ...".
* Fügen Sie dem Auftrag nun einen "Zeitplan" hinzu.

Teilaktualisierung eines SQL-Server Cubes


Soll die Datentabelle eines SQL-Server Cubes nicht immer vollständig neu aufgebaut, sondern nur in Form von aktualisierten Datensätze auf Basis des hhupd-Datums der Quelltabelle einen Update erfahren, so ist das Kommando "prc\SqlServerCube.bat" nicht mit der Option "-load" sonder mit "-upd" aufzurufen.
Dies kann also z.B. in der Datei c:\local\vacos_Artikelbuchungen_cube.bat so eingetragen werden.

Achtung: Daten, die sich in per Relation verknüpften Tabellen verändern, also z.B. Daten aus dem Kundenstamm oder Artikelstamm, werden bei dieser Variante nicht automatisch erfasst. Ausschlaggebend ist hier nur das Datum des Datensatzes in der Quelltabelle. Nur wenn sich dieses ändert, wird der Datensatz erneut aktualisiert.
Soll bei dieser Variante eine Komplettaktualisierung für z.B. den nächsten automatischen Durchlauf vorgeplant werden, so ist in der "${PROJ}\d1\cubes\vacos_Artikelbuchungen.sogcubexml" die Eigenschaft "DataDate" zu löschen.

Eine Komplettaktualisierung ist immer dann notwendig, wenn sich das Design der Cube-Daten geändert hat, oder wenn Datenveränderungen aus relational verbundenen Tabellen berücksichtig werden sollen.

SQL-Server-Cube und Rechteverwaltung


Bitte beachten Sie, dass SOG ERP (VACOS) keine Rechteeinstellungen im SQL-Server Cube durchführt.
Verwenden Sie die "normalen" SQL-Server Rechteabsicherungen, um die Zugriffsrechte auf den SQL-Server-Cube festzulegen.