Talend & Palo – tPaloOutput, tPaloOutputMulti und tPaloCheckElements

Montag, 13. Februar 2012, 21:09 Uhr

2 Kommentare

Sobald das Datenmodell aus Dimensionen und Cubes in einer Palo- oder Jedox-OLAP-Datenbank steht, dann kann dieses endlich mit Leben – sprich: mit Daten – gefüllt werden. Auch das Beladen von Cubes lässt sich auf einfache Weise mit dem Talend Open Studio for Data Integration bewerkstelligen. Im Fokus steht dabei insbesondere die Komponente tPaloOutputMulti. Um Fehler und Abbrüche aufgrund falscher Daten schon vor dem Einfügen zu vermeiden leistet zudem die Komponente tPaloCheckElements gute Dienste.

Dieser Artikel ist der 5. 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).

tPaloOutput – Bitte nicht mehr verwenden!

Die Komponente tPaloOutput war die erste Komponente in Talend, mit der es möglich war, Daten in einen Palo-Cube zu schreiben. Die übrigen Komponenten sind erst in der Version 4.1 hinzugekommen. tPaloOutput ist aus diesem Grund sehr rudimentär und sollte insbesondere für Neuentwicklungen nicht mehr verwendet werden.

Mit der Komponente tPaloOutputMulti existiert ein Nachfolger, der einfacher zu bedienen ist und deutlich mehr Funktionen bietet.

tPaloOutputMulti – Daten in den Cube einfügen

Sobald ein Cube innerhalb einer Palo-Datenbank existiert kann dieser über die Komponente tPaloOutputMulti mit Daten gefüllt werden. Zu beachten ist dabei, dass das Schema der Daten zur Struktur des Cubes passen muss. Das bedeutet, dass die Spaltenanzahl um 1 höher sein muss als die Anzahl der Dimensionen. Während die Reihenfolge der Spalten egal ist, muss deren Benennung mit den Namen der Dimensionen übereinstimmen. Die Spalte mit der abzuspeichernden Kennzahl kann einen beliebigen Namen tragen.

Der Einfachheit halber sollen in diesem Beispiel auch die Daten wieder von der Komponente tFixedFlowInput kommen. Ansonsten ist natürlich vollkommen egal auf welche Weise die Daten entstehen so sie denn dem korrekten Schema entsprechend und zum Cube „passen“. Wichtig an dieser Stelle ist, dass alle Elemente bereits in den jeweiligen Dimensionen vorhanden sein müssen. Für das Beispiel wurde die Dimension wie bei der Beschreibung der Komponente tPaloDimension angelegt und es werden in den Einstellungen der Komponente tFixedFlowInput folgende Daten übergeben (Modus „Use inline content (delimited file)“):

Deutschland;ist;100.3
Deutschland;plan;90.2
Österreich;ist;40.5
Österreich;plan;42.3
Schweiz;ist;19.1
Schweiz;plan;20.0
Belgien;ist;65
Belgien;plan;70
Niederlande;ist;70.2
Niederlande;plan;60.7
Luxemburg;ist;22
Luxemburg;plan;20

Nachdem sichergestellt ist, dass auch das Schema adäquat ist wird schließlich der Ausgang mit dem Eingang der Komponente tPaloOutputMulti übergeben, die folgende Parameter erwartet:

Daten in einen Palo-/Jedox-Cube schreiben mit tPaloOutputMulti

Die Daten landen beim Ausführen des Jobs im Cube.

tPaloCheckElements – Existenz von Elementen überprüfen

Beim Einfügen von Daten mit der Komponente tPaloOutputMulti habe ich weiter oben bereits erwähnt, dass sichergestellt sein muss, dass alle Elemente auch definitiv existieren. Existiert ein Element nicht, so bricht die Beladung mit einer Fehlermeldung ab, die in etwa wie folgt aussieht:

4004 element not found element with identifier 4294967295 not found in dimension 'Land'

Wir wissen damit, dass in der Spalte „Land“ ein Element angegeben ist, welches aber nicht in der Dimension „Land“ vorhanden ist. Leider erfahren wir nicht, um welches Element es sich handelt. Vielleicht aber noch schlimmer ist, dass in einem solchen Fall alle Datensätze des aktuellen Commits nicht in die Datenbank geschrieben werden. Um dies zu verhindern, kann vor die Komponente tPaloOutputMulti noch zusätzlich die Komponente tPaloCheckElements eingefügt werden:

Unbekannte Elemente abfangen mit tPaloCheckElements

Die Komponente tPaloCheckElements prüft dann für jeden Datensatz ob alle Elemente in den jeweiligen Dimensionen vorhanden sind oder nicht. Über den Ausgangs-Datenstrom „Main“ lassen sich die korrekten Datensätze an die Komponente tPaloOutputMulti weiterleiten, während sich die fehlerhaften Datensätze über den Datenstrom „Reject“ separat behandeln lassen. Diese Trennung von schlechten Datensätzen ist die Standardeinstellung, die sich aber auch ändern lässt. Eine Möglichkeit ist, unbekannte Element durch einen anderen Standard-Wert für diese Dimension zu ersetzen oder an dieser Stelle abzubrechen. Das gewünschte Verhalten lässt sich in der Auswahlbox neben „On element error“ festlegen.

In den Einstellungen der Komponente tPaloCheckElements müssen dann wie so oft neben der Verbindung noch der Name der Datenbank sowie des Cubes angegeben werden. Das Schema sollte automatisch übernommen und tabellarisch aufbereitet dargestellt werden. Wichtig ist an dieser Stelle, dass der tatsächliche einzufügende Wert markiert wird, indem als „Element type“ die „Option“ Measure gewählt wird. Steht in diese Spalte „Element“ so wird in der Dimension danach gesucht, die wie der Spaltenname heißt. Wenn als gewünschtes Verhalten im Fehlerfall die Ersetzung mit einem Standardwert gewählt wurde, so kann dieser in der gleichnamigen Spalte angegeben werden. Auch für den Ersatzwert gilt natürlich, dass er innerhalb der Dimension existieren muss.

Einstellungen der Komponente tPaloCheckElements

Tags: , , , , , ,

Kommentare zu diesem Beitrag

  1. Keine Angabe sagt:

    Sehr gute Beschreibung und wirklich super Tipps! Vielen Dank!

  2. Christian Kolodziej sagt:

    @Keine Angabe: Sehr gerne doch. Damit habe ich es auch endlich geschafft etwas mehr Praxis in den OSBI-Blog zu bringen. Fortsetzung folgt hoffentlich…

Jetzt einen neuen Kommentar abgeben



(optional, Ihr Name wird entsprechend verlinkt)