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
Daten bewegen
03.06.2010, 23:26
Beitrag: #1
Daten bewegen
Hallo zusammen,
ich bin gerade dabei, meine ersten Schritte im TOS zu machen.
Leider komme ich immer wieder ins stocken. Mein aktuelles Problem:
ich versuche die Daten zwischen zwei Datenbanken zyklich zu übertragen. Nur
möchte ich nicht immer alles aus der Quelltabelle auswählen müssen, sondern nur die Datesätze, die in der Zieltabelle noch nicht vorhanden sind. Das Kriterium ist hier nicht wichtig. Als Beispiel nehme ich das Timestamp. Mit MAX(Timestamp) bekomme ich schon den Wert in TOS, den ich für das SELECT von der Quelle verwenden kann. Aber wie beue ich es ein? Alles aus der Quelle selektieren und dann in tMap ausfiltern macht bei 100mln Sätze wenig Sinn. Hat jemand Idee.
Danke im Voraus
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.06.2010, 13:36
Beitrag: #2
RE: Daten bewegen
Hi Roman,

bei Deinem Problem handelt es sich um einen CDC (Change Data Capture). Aus Deiner Schilderung entnehme ich, dass es sich nur um ein Fortschreiben handelt? D.h. Du möchtest nur Inserts bzw. Updates durchführen?
Hierfür gibt es immer zwei einfache Möglichkeiten:
1.Erkennung neuer Datensätze anhand einer ID (fortlaufende Nummerierung in der Quelle Tabelle)
2.Erkennung geänderter Datensätze durch einen Zeitstempel
Wie Du richtig erkannt hast, müssen beide Verfahren mittels einem „SELECT MAX(...) AS OFFSET FORM TARGET“ eingeleitet werden.
   

Bitte auf den NVL bzw. IFNULL achten!


Dieser ermittelte Wert wird intern in einer Variable abgelegt. Ich behelfe mir hierbei mittels einem „tFlowToIterate“.
   

Der in dieser Variable gespeicherte Wert kann anschließend in eine Query als Offset übernommen werden. „SELECT * FROM SOURCE WHERE ID >“ + <TARGET_MAX_VARIABLE>
   

Bei einem Offset mit einem Datum muss natürlich auf die Formatierung des „WHERE-Values“ geachtet werden.


Alternativ können aber die Offset werde auch in einer zusätzlichen Tabelle abgelegt und von hier wieder verwendet werden.
Wichtig! Beide Verfahren erkennen keine gelöschten Datensätze. Hierfür müssten an der Quelle entweder Trigger oder z.B. in Oracle der Logminer aktiviert werden.

Job im Anhang.

martin


Angehängte Datei(en)
.zip  tos_job_cdc_1.zip (Größe: 39,25 KB / Downloads: 47)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.06.2010, 17:24
Beitrag: #3
Smile RE: Daten bewegen
Hallo Martin,

das ist es. GlobalMap heißt also das Zauberwort.
Werde gleich ausprobieren und berichten.
Ich habe Tausend Jobideen, mit der ich meine tägliche Arbeit vereifachen und automatisieren könnte. Das ist bestimmt nicht meine letzte Frage gewesen.

Danke nochmal.
R
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.06.2010, 22:10
Beitrag: #4
RE: Daten bewegen
Hallo Martin,

ein Problem habe ich noch mit dem Datumformat. Bei der Abfrage bekomme ich
   

Wenn ich es so in die Select Anweisung intregiere, bekomme ich natürlich einen Fehler. Was ich brauche ist das Format dd.mm.jjjj HH.mm.ss.fff. Wie mache ich das?
Danke im Voraus

R
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.06.2010, 09:14
Beitrag: #5
RE: Daten bewegen
Also doch keinen numerischen CDC? Glücklicherweise hat Talend bereits die notwendigen Funktionen hierfür enthalten. Wichtig ist, dass es sich hierbei um die Java-Notation handelt. http://java.sun.com/j2se/1.4.2/docs/api/...ormat.html

In Deinem Fall sollte die Query wie folgt umgesetzt werden:

"SELECT * FROM WHERE <DATUMS_WERT> > '" + TalendDate.formatDate("dd.MM.yyyy HH.mm.ss.S", <TOS_DATUMS_VARIABLE>) + "'"

Bei Datums- und Stringwerten müssen die Umwandlungen in ' ' gesetzt werden. Anderenfalls macht die Query schwierigkeiten.

martin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.06.2010, 20:19
Beitrag: #6
Smile RE: Daten bewegen
http://www.talendforum.de/images/icons/smile.gif
Danke, jetzt klappt wunderbar. Der erste Job wäre getan.
Jetzt habe ich ein Problem, die ausführbare jar zu erstellen.
Aber das wäre das Thema für den nächsten thread.

Grüße
R
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu: