Hallo, Gast!

- Anmelden
- Registrieren

Neuigkeiten!
Willkommen zum ersten deutschspachigen Forum rund um die Open Source Softwarelösungen der Firma Talend. Dieses Forum ist fü alle Anwender die Fragen und/oder Antworten zum Thema Talend haben oder suchen.


Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Tyumwandlung im tMap Modul
13.09.2011, 15:39
Beitrag: #1
Tyumwandlung im tMap Modul
Hallo,
wenn ich mit der tMap Komponente probiere einen ETL Job von Sybase auf Orale zu erstellen, dann macht TOS aus dem vorhandenen Numeric Feld immer ein BigDecimal Feld. Ein funktionierende Umwandlung habe ich bisher noch nicht hinbekommen im Ausdruckseditor.

Ebenfalls habe ich noch ein Problem mit Float auf BigDecimal, wobei ich da noch nicht verstehe, warum TOS aus dem Numeric Feld der Sybase ein Float Feld erstellt.

Hat einer eine Idee welcher Ausdruck für die Umwandlung geeignet ist.

Vielen Dank im Voraus.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.09.2011, 10:42
Beitrag: #2
RE: Tyumwandlung im tMap Modul
Habe die Antwort übrigens aus dem englischspachigem Forum bekommen.
Falls es für andere interessant sein sollte....

Die 1. Lösungsmöglichkeit ist unter den Einstellungen Talend > Specific Settings > Metadata of Talend den DB Typ in der Datei mapping_Sybase.xml anzupassen. Unter <dbType type="NUMERIC"> wechselt man den default auf BigDecimal. Danach ist nach einem Neuaufbau der Datentyp BigDecimal und er matcht richtig.

Ansonsten kann man dei EInzelfelder auch mit BigDecimal.valueOf(<your double>) und die floats mit BigDecimal.valueOf(<your float>.doubleValue()) umwandeln.

Natürlich ist die erste Lösung perfekt bei einer Tabelle von 120 zeilen muss ich nur einmal eine EInstellung anpassen und der Rest ist OK.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.09.2011, 11:39
Beitrag: #3
RE: Tyumwandlung im tMap Modul
(22.09.2011 10:42)TOS_Expert schrieb:  Habe die Antwort übrigens aus dem englischspachigem Forum bekommen.
Falls es für andere interessant sein sollte....

Die 1. Lösungsmöglichkeit ist unter den Einstellungen Talend > Specific Settings > Metadata of Talend den DB Typ in der Datei mapping_Sybase.xml anzupassen. Unter <dbType type="NUMERIC"> wechselt man den default auf BigDecimal. Danach ist nach einem Neuaufbau der Datentyp BigDecimal und er matcht richtig.

Ansonsten kann man dei EInzelfelder auch mit BigDecimal.valueOf(<your double>) und die floats mit BigDecimal.valueOf(<your float>.doubleValue()) umwandeln.

Natürlich ist die erste Lösung perfekt bei einer Tabelle von 120 zeilen muss ich nur einmal eine EInstellung anpassen und der Rest ist OK.
Es ist möglich Datenkonvertierungen innerhalb der Metadata XML anzupassen bzw. zu modifizieren. Allerdings sollte das nur im Extremfall durchgeführt werden, da bei einem TOS-wechsel die Datei nicht automatisch mit konvertiert wird. Ferner ist eine Metadatenbasierte Umwandlung nicht in der Dokumentation ersichtlich.

Weitere Möglichkeiten:
1. Verwendung Java-Routinen/Methoden (wurden bereits aufgeführt)
2. Komponente tConvertType. Allerdings sind hier nur rudimentäre Eingriffsmöglichkeiten vorhanden
3. Export der Daten in ein CSV Dokument mit anschließendem Lesen wobei das Schema bereits aus der Zielstruktur verwendet wird. Empfehlenswert bei großen Datenmengen.

martin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu: