Talend & Palo – tPaloDimensionList und tPaloDimension

Montag, 06. Februar 2012, 22:14 Uhr

3 Kommentare

Nachdem im ersten Teil dieser kleinen Serien zu den Komponenten des Talend Open Studio for Data Integration zur Kommunkation mit dem Palo- bzw. Jedox-OLAP-Server die Verbindung zum OLAP-Server hergestellt und Datenbank angelegt wurden, geht es nun um das Anlegen sowie die Auflistung von Dimensionen. Die Dimensionen sind nötig, um daraus später sog. Cubes (Datenwürfel) zu erstellen.

Dieser Artikel ist der 2. Teil einer kleinen Serie, in der Komponenten des Talend Open Studio for Data Integration vorgestellt werden, mit deren Hilfe mit dem OLAP-Server der Palo BI-Suite oder der Jedox BI-Suite kommuniziert werden kann. Auch wenn zumeinst nur von “Palo” die Rede ist, so gelten die Beschreibungen in analoger Weise auf für die (kommerzielle) Jedox BI Suite (weitere Informationen zur Abgrenzung von Jedox und Palo).

tPaloDimensionList – Liste aller Dimensionen einer Palo-Datenbank oder eines Cubes

Mit Hilfe der Komponente tPaloDimensionList lassen sich alle Dimensionen auslesen, die innerhalb einer Palo-Datenbank existieren. Zusätzlich zur Verbindung ist nun auch noch der Name einer Datenbank anzugeben. Wenn in einer Datenbank „TutorialTalendPalo“ wie bei der Beschreibung der Komponenten tPaloDimension die Dimensioen angelegt wurden dann ließe sich folgender Output erzeugen:

  • dimension_id – interne (technische) ID der Dimension
  • dimension_name – Name der Dimension
  • dimension_attribute_cube – Name des zugehörigen Attributswürfels
  • dimension_rights_cube – Name des zugehörigen Cubes, in dem die Berechtigungen verwaltet werden
  • dimension_elements – Anzahl der Elemente
  • dimension_max_level – maximale Hierarchiestufe (0 bei Dimension ohne Hierarchie)
  • dimension_max_indent – maximale Einrückungsebene eines Elements (1 bei Dimension ohne Hierarchie)
  • dimension_max_depthder genaue Unterschied zu dimension_max_indent ist mir noch nicht schlüssig geworde, kennt ihn jemand?!
  • dimension_type – Dimesionstyp, 0 für „normal“, 1 für „system“, 2 für „attribute“, 3 für „user info“

Der dafür nötige Job ist wieder einmal sehr simpel:

Liste aller Dimension einer Datenbank ausgeben

Standardmäßig liefert die Komponente tPaloDimensionList alle Dimensionen zurück, die in der angegebenen Datenbank vorhanden sind. Alternativ kann die Check vor „Retrieve cube dimensions“ aktiviert werden und nach Angabe eines existierenden Cubes werden ausschließlich die Dimensionen zurückgeliefert, aus denen sich der angegebene Cube definiert.

tPaloDimension – Dimension anlegen, ergänzen oder überschreiben

Die Komponente tPaloDimension dürfte die am öftesten verwendete Komponente sein wenn Palo mit Hilfe von Talend mit Daten gefüttert wird. Bei der Anlage von Dimensionen gibt es mehrere Möglichkeiten: das Anlegen von Dimensionen mit oder ohne Hierachie sowie das reine Befüllen einer bereits bestehenden Dimension.

Anlegen einer Dimension ohne Hierarchie

„Ohne Hierarchie“ bedeutet, dass es keine Aggregationen gibt und allen Elemente auf ein und derselben Ebene sind. Ein Beispiel für eine Dimension ohne Hierarchie ist beispielsweise eine Kennzahlen-Dimension. Zumindest fällt mir spontan keine sinnvolle Anwendung für die Summe aus IST- und PLAN-Zahlen ein… Um eine solche ganz einfache Dimension anzulegen bedarf es mindestens noch eine weitere Komponente, z.B. tFixedFlowInput. Innerhalb der dieser Komponente wird ein neues Schema mit den beiden Spalten „ist“ und „plan“ (ohne Anführungszeichen) angelegt. Beide Spalten sind vom Typ „String“ und haben ihren Namen auch als Wert:

Simples Schema als Datengrundlage für eine Dimension ohne Hierarchie

Der Ausgang der Kompenent tFixedFlowInput wird schließlich mit der tPaloDimension verbunden, für die folgende Einstellungen zu wählen sind:

Die Dimension "Kennzahl" wird ohne Hierarchie angelegt und mit befüllt

Nach dem Ausführen des Jobs – voilá! – gibt es die erste Dimension in der Datenbank „TutorialTalendPalo“ des OLAP-Servers.

Anlegen einer Dimension mit Hierarchie

Als Beispiel einer Dimension mit Hierarchie soll eine sehr einfache Dimension „Land“ dienen. Das oberste Element soll „DACH“ heißen, unter dieser Abkürzung verbergen sich die Länder „Deutschland“, „Österreich“ und die „Schweiz“. Hierfür benötigen wir ein zweispaltiges Schema mit den Spalten „Region“ und „Land“. Auch hierfür ließe sich die Komponente tFixedFlowInput nutzen, welcher im Modus “Use inline content (delimited file)” folgender Inhalt im Textfeld übergeben wird (manuelle Anpassung des Schemas nicht vergessen!):

DACH;Deutschland
DACH;Österreich
DACH;Schweiz

Auch hier wird der Datenstrom mit wieder mit der tPaloDimension-Komponente verbunden, wobei in diesem Fall als „Consolidation Type “ die Option „normal“ eingestellt wird und die Einstellungen wie folgt vorgenommen werden:

Die 2-stufige Dimension "Land" wird neu angelegt und mit Daten befüllt

Entscheidend ist hier Reihenfolge der beiden Spalten weil beim Einfügen in die Dimension die Spalte in der ersten Zeile automatisch zum Eltern-Element der Spalte in der zweiten Zeile wird. Beim einer mehr als zweistufigen Hierarchie funktioniert das analog: jede Zeile beinhaltet das Eltern-Element der Spalte darunter.

Dimension „nur“ befüllen bzw. um neue Elemente ergänzen

Bitte beachten: Ein Leser hat mich in den Kommentaren darauf aufmerksam gemacht, dass das Ergänzen einer hierarchischen Dimension nicht fehlerfrei ist. Beim Ergänzen geht die Hierarchie der bisher vorhandenen Element verloren. Eine Lösung außer die Dimension immer komplett neu zu laden steht momentan leider aus…

Ohne dass ich explizit darauf hingewiesen habe, zeigen die vorherigen Bilder, dass die Dimension immer neu erzeugt wurde falls sie noch nicht existiert. Wenn es aber nur darum geht in einer bereits bestehenden Dimension neue Elemente Hinzuzufügen ist bei „Action on dimension“ die Option „Keine“ zu wählen. Darüber hinaus sind die Einstellungen den jeweiligen Anforderungen entsprechend wie bereits beschrieben vorzunehmen – unabhängig ob es sich um eine Dimension mit oder ohne Hierarchie handelt.

Als Beispiel soll die zuvor erstellte Dimension „Land“ um die BeNeLux-Staaten erweitert werden, d.h. wir haben das Eltern-Element „BeNeLux“ und die Länder „Belgien“, „Niederlande“ und „Luxemburg“. Der Komponente tFixedFlowInput übergeben wir dafür folgenden Inhalt im Modus „Use inline content (delimited file)“:

BeNeLux;Belgien
BeNeLux;Niederlande
BeNeLux;Luxemburg

Die Einstellungen der Komponente tPaloConnection unterscheiden sich gegenüber der vorherigen Abbildung lediglich in der „Action on dimension“:

Die 2-stufige Dimension "Land" um neue Elemente ergänzt

Bei der gewählten Option „Keine“ muss natürlich sichergestellt sein, dass die Dimension bereits existiert und das die Strukturen zum Schema des Datenstroms passen damit es keinen Abbruch gibt.

Tags: , , , , ,

Kommentare zu diesem Beitrag

  1. Roger_X sagt:

    Meine Erfahrung hat gezeigt, dass wenn in Dimension BeNeLux die Länder Belgien und Niederlande schon existieren und dann neu Luxemburg hinzugefügt werden soll, dass die vorherige Struktur von Belgien und Niderlande in BeNeLux verlorgen geht. Ein Bug dazu habe ich gemeldet. Workaround ist immer die ganze Dimension neu zu laden. Das ist sehr ärgerlich…

  2. Christian Kolodziej sagt:

    Hallo Roger_X,

    danke für den Hinweis. Ich bin erst jetzt dazu gekommen deinen Fall noch einmal nachzuspielen und stoße auf denselben Fehler. Scheinbar habe ich da nicht genau genug aufgepasst als ich das Tutorial erstellt habe. Trotzt einiger Versuche konnte ich auch mit anderen Einstellungen leider keine andere Lösung als der von dir genannte „Workaround“ finden. Hoffen wir, dass Talend diesen Fehler demnächst behebt. Oder liegt der Fehler vielleicht im OLAP-Server?!

    Viele Grüße, Christian

  3. Roger_X sagt:

    Hallo Christian,

    das Problem wurde in 5.1.0 M2 gelöst und wird für 5.0.x nach gezogen. Alles bestens!
    Ich wünsche schöne Ostern.

    Grüße

    Roger

Jetzt einen neuen Kommentar abgeben



(optional, Ihr Name wird entsprechend verlinkt)