TableComparison einer datetime-Spalte über eine ODBC Verbindung

Ich hatte heute folgendes Problem in einem SAP DataServices (aka BusinessObjects DataIntegrator) Ladejob :

Ein enthaltener TableComparison hat jede, in der Zieltabelle existierende, Zeile als UPDATE detektiert, auch wenn auf den ersten Blick keine Änderungen erkennbar waren.

Verursacht wurde das Problem durch eine Timestamp/DateTime-Spalte, welche einen Timestamp inklusive Millisekunden enthielt.

Bsp.: 2012-02-02 19:19:19.135478658

Beim Schreiben dieses Wertes in die Zieltabelle, wurde der Millisekunden-Anteil vom ODBC-Treiber abgeschnitten und der Wert als

2012-02-02 19:19:19.000000000

in die Zieltabelle geschrieben.

Wird dieses Ergebnis nun später wieder verglichen, stellt der TableComparison „korrekter Weise“ fest, dass der Timestamp geändert wurde:

DB:    2012-02-02 19:19:19.000000000

Input: 2012-02-02 19:19:19.135478658

und markiert die Zeile als Update.

Abhilfe bringt folgende Konvertierung vor dem TableComparison (wenn der Millisekunden-Anteil nicht benötigt wird):

to_date( to_char( TABLE.COLUMN, 'YYYYMMDDHHMISS' ), 'YYYYMMDDHHMISS' )

So wird der Millisekunden-Anteil schon beim Vergleich entfernt und keine Änderung mehr detektiert.

markiert , , , , , , ,

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.