Eine alternative Möglichkeit zur Erstellung eines Datenbank-Cubes besteht darin, eine vollständige Datenbank mit Hilfe von XmlInfo-Definitionen zu beschreiben, und über die Funktion "XmlInfoToDbJob" einen Datenabgleich zwischen der SOG ERP (VACOS)-Datenbank und der beschriebenen Cube-Datenbank durchzuführen.
Pro Tabelle in der Cube-Datenbank muss dabei eine XmlInfo-Beschreibung erstellt werden. Der Datenabgleich erfolgt jeweils Tabelle für Tabelle.
Die XmlInfo-Beschreibungen definieren dabei die Herkunft der Daten, und gleichzeitig den Aufbau der Zieldatenbank, inkl. der Beschreibung der Datenformate der einzelnen SQL-Datenfelder. XmlInfo bietet dabei die Möglichkeit ein Datenfeld praktisch beliebig oft in die Zieldatenbank zu laden, und dabei jeweils andere Formate im Ziel zu definieren.
Während des Ladens können für Alpha-Begriffe numerische Platzhalter - Surrogates - ermittelt werden, die es später der Cube-Datenbank erlauben, sehr effizient auf Datensätze zuzugreifen.
Die grundsätzliche Beschreibung von XmlInfo entnehmen Sie bitte dem XmlInfo-Handbuch. Im Nachfolgenden sind nur die zusätzlich im Bereich "Cube" zu definierenden Erweiterungen beschrieben.
Legen Sie pro Tabelle in der Zieldatenbank eine XmlInfo-Konfigurationsdatei an. Für den Bereich "Cube" verwenden Sie dafür das Verzeichnis "${PROJ}\cube\Structur". In dem dort befindlichen Unterverzeichnis "Basis" finden Sie die Beschreibung eines SOG ERP (VACOS) -Standard-Cubes. Neben dem Unterverzeichnis "Basis" werden Beschreibungen aber auch in den Unterverzeichnissen "Vorort" und "Proj" gesucht. Damit kann der SOG ERP (VACOS) Standard-Cube durch Hinterlegung gleichnamiger Beschreibungen verändert oder ergänzt werden.
Die Beschreibungsdateien müssen den Namen "Tabelle_xmlinfo.xml" tragen, und legen damit auch den Namen der Zieldatenbank-Tabelle fest.
Innerhalb der XmlInfo-Beschreibungen wird neben den "normalen" Feld-Definitionen, eine Datenquellendefinition abgelegt.
<?xml version="1.0" encoding="utf-8" ?>
<XmlDefinition Version="1.04" >
<SourceConfiguration Typ="DatabaseObject" Name="Kundenstamm" where="sa=1" />
<AusgabeDefinition Name="f010" >
<Class Name="Kundenstamm" />
<Feld NameIntern="m_key_1" NameExtern="key_1" IndexExtern="1"/>
<Feld NameIntern="m_hhupd" NameExtern="hhupd" Format="hhupd"/>
In diesem Beispiel wird über "SourceConfiguration" die SOG ERP (VACOS) -Datenbanktabelle "Kundenstamm" (f010) als Datenquelle verwendet. Über eine Where-Klausel können dabei einschränkende Bedingungen festgelegt werden.
Mit Hilfe des Typ "DatabaseObject" haben Sie Zugriff auf alle definierten SOG ERP (VACOS) -Datentabellen. Eine Liste der Klassennamen können Sie z. B. der Relationskonfiguration "sql\relation\relv2_base_cfg.xml" entnehmen. Hier finden Sie z. B. für die f010 den Eintrag:
<Class Table="f010" ObjectClass="#Kundenstamm" />
<?xml version="1.0" encoding="utf-8" ?>
<XmlDefinition Version="1.04" >
<SourceConfiguration Typ="Awl" Name="m_bewkz.awl" />
<AusgabeDefinition Name="bewkz" >
<Class Name="Dictionary" />
<Feld NameIntern="Schlüssel" NameExtern="bewkz" TypExtern="int" IndexExtern="1" />
<Feld NameIntern="Bewegungskennzeichen" NameExtern="txt" TypExtern="varchar(60)" />
<Feld NameIntern="Bewegungskennzeichen" NameExtern="txt_eng" TypExtern="varchar(60)" Translate="eng" />
In diesem Beispiel wird über "SourceConfiguration" die SOG ERP (VACOS) -Auswahlliste "m_bewkz.awl" als Datenquelle festgelegt. Dies ist vor allem für manuelle Auswahllisten zu verwenden, deren Quelldaten nicht bereits in der Datenbank vorhanden sind.
Die internen Feldnamen werden dabei durch die Auswahlliste (in deren 1. Zeile) festgelegt. Beachten Sie, dass Sie bei dieser Quelle die Feldtypen einzeln über "TypExtern" einstellen müssen.
<?xml version="1.0" encoding="utf-8" ?>
<XmlDefinition Version="1.04" >
<SourceConfiguration Typ="SqlFile" Name="${PROJ}\awl\abt.sql" />
<AusgabeDefinition Name="f010" >
<Class Name="Dictionary" />
<Feld NameIntern="Nummer" NameExtern="abtnr" TypExtern="int" IndexExtern="1" />
<Feld NameIntern="Abteilung" NameExtern="abt" TypExtern="varchar(30)" />
Mit dem Typ "SqlFile" können Sie eine SQL-Datei festlegen, die Daten aus der SOG ERP (VACOS) -Datenbank liefert. Die Feldnamen werden innerhalb der SQL-Datei durch Festlegung der Spaltennamen eingestellt. Beachten Sie, dass Sie bei dieser Quelle die Feldtypen einzeln über "TypExtern" einstellen müssen.
<?xml version="1.0" encoding="utf-8" ?>
<XmlDefinition Version="1.04" >
<SourceConfiguration Typ="Sql">
select
hhfield( Abteilung, hhsubstr(daten1,1,30) ),
hhfield( Nummer, hhsubstr(key_1,9,2) ),
hhfield( Unix, hhsubstr(key_1,9,2) )
from
f070o
where
hhsubstr(key_1,1,8) >= "${TBR}010120"
and hhsubstr(key_1,1,12) <= "${TBR}01012099999"
and hhsubstr(key_1,11,2) = "00"
order by hhfield( Abteilung );
</SourceConfiguration>
<AusgabeDefinition Name="f010" >
<Class Name="Dictionary" />
<Feld NameIntern="Nummer" NameExtern="abtnr" TypExtern="int" IndexExtern="1" />
<Feld NameIntern="Abteilung" NameExtern="abt" TypExtern="varchar(30)" />
Hier wird direkt die verwendete SQL-Anweisung als SourceConfiguration mitgegeben. Ansonsten funktioniert diese Quelle genau wie eine SQL-Datei.
<?xml version="1.0" encoding="utf-8" ?>
<XmlDefinition Version="1.04" >
<SourceConfiguration Typ="Function" Name="dbs:ListLandOhneBuland(#obj:TBR)" />
<AusgabeDefinition Name="land" >
<Class Name="Dictionary" />
<Feld NameIntern="m_nr" NameExtern="land" TypExtern="int" IndexExtern="1" />
<Feld NameIntern="m_bez" NameExtern="txt" TypExtern="varchar(60)" />
<Feld NameIntern="m_bez" NameExtern="txt_eng" TypExtern="varchar(60)" Translate="eng" />
<Feld NameIntern="m_staat" NameExtern="staat" TypExtern="varchar(3)" />
<Feld NameIntern="m_staat" NameExtern="staat_skey" TypExtern="surrogate" />
Mit dem SourceConfiguration Typ "Function" können Sie eine SOG ERP (VACOS) -Funktion aufrufen, die eine Liste von Datenobjekten liefert, die dann als Eingabedaten dienen sollen.
Geben Sie unter Name zuerst ein Basisobjekt, gefolgt von einem Doppelpunkt, und dann den Namen der Funktion und ggf. ihrer Parameter an.
Als Basisobjekte können Sie dabei zur Zeit verwenden:
Die SOG ERP (VACOS) Datenbank
Ein über c084/c083 "DynamicLogic" Typ = "class", festgelegtes, dynamisches Objekt.
Ein über ActiveSkin Scripting festgelegtes Script-Objekt des Typs "Klasse".
<?xml version="1.0" encoding="utf-8" ?>
<XmlDefinition Version="1.04" >
<SourceConfiguration Typ="ignore" Name="xxx" />
Wird in einer Beschreibung der Typ "ignore" gefunden, so wird die gesamte Tabelle nicht in die Zieldatenbank übertragen. Über diese Möglichkeit kann also z. B. eine SOG ERP (VACOS) -Standard-Cube-Tabelle abgeschaltet werden, wenn diese in dem Zielcube nicht verwendet wird.
Folgende externe Datentypen werden unterstützt:
Zeichenketten fester Länge
Zeichenketten variabler Länge
Eine vorzeichenlose einstellige Ganzzahl
Eine Ganzzahl zwischen -99 und 99.
Eine Zahl mit maximal 9 Stellen.
Eine Dezimalzahl mit einer maximalen Gesamtlänge P und einer Anzahl von Dezimalstellen S.
Eine Fließkommazahl.
Eine Zahl mit maximal 18 Stellen.
Datumstyp. Im Falle von Datumsfeldern können Sie zusätzlich über das Format-Attribut steuern, dass das Datum im hhupd-Format ausgegeben werden soll: Format="hhupd". Format="jjjjmmtt" legt fest, dass das Datum als 8-Stellige Zahl geliefert werden soll.
Kann für jeden Text verwendet werden, um an Stelle des Textes eine eindeutige Nummer zu bekommen. Der gleiche Text wird dabei immer wieder in die gleiche Nummer umgesetzt, ein anderer Text bekommt immer eine andere Nummer. Surrogates können verwendet werden, um Referenzen zwischen Tabellen, die eigentlich durch Alpha-Schlüssel hergestellt werden müssen, lieber über eine Platzhalter-Schlüssel herzustellen.
In der Datenbank wird eine int-Spalte angelegt, die automatisch mit einem eindeutigen Wert belegt wird.
In der Datenbank wird eine bigint-Spalte angelegt, die automatisch mit einem eindeutigen Wert belegt wird.
Angabe eines Datenfeldes aus dem die Typinformationen abgeleitet werden sollen.
Beispiel LIKE:f030.sa
Die Angabe eines Datentyps über das Attribut TypExtern wird dann erforderlich, wenn es sich um einen berechneten Ausdruck handelt, oder das Quelldatenfeld keiner Objekteigenschaft oder Tabellenspalte zuzuordnen ist.
Definieren zusätzlicher Indices
Über Attribute der Ausgabedefinition können zusätzliche Indices in den Tabellen erzeugt werden:
<Feld NameIntern="m_key_1" NameExtern="key_1" IndexExtern="1" />
Über die Angabe "IndexExtern" können für einzelne Datenfelder Indices angelegt werden. Der IndexExtern "1" ist dabei der Haupt-Zugriffsschlüssel der Tabelle.
<Feld NameIntern="artikel_skey,bestellartikel_skey,lieferant_skey" NameExtern="base1" TypExtern="namedindex"/>
<Feld NameIntern="vorgaenge_skey,bestellartikel_skey:firma,sa" NameExtern="base2" TypExtern="namedindex"/>
Durch Angabe des "TypExtern" = "namedindex" kann ein zusätzlicher Index angelegt werden, der sich über mehr als ein Datenfeld erstreckt.
Die Namen der genutzten Datenfelder müssen über "NameIntern" als kommaseparierte Liste von Feldnamen definiert werden.
Nach Angabe eines Doppelpunktes können darüber hinaus in gleicher Weise auch Includes definiert werden.
Der NameExtern legt einen innerhalb der Tabelle eindeutigen Indexnamen fest. Hier: "base1" für einen Index der in der Basiskonfiguration festgelegt wurde.