Frage zum "Bulk import" + [ETL] / [SQL] / [DWH] - Vielleicht auch Talend? ;)

Noukz

Cadet 4th Year
Registriert
Okt. 2011
Beiträge
78
Hallo zusammen,

heute kam ich in Verbindung mit Talend (ETL-Tool) bei der Verarbeitung von Daten für ein Data Warehouse, an meine Grenzen.
DB-System: MS SQL Server 2014

Die Fehlermeldung war die folgende:

Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row X, column Y.
Die Column war tatsächlich meine ID, welche inkrementell bei jedem Insert hinzugefügt & nicht NULL sein kann.

Laut Google kommt dieser Fehler sau oft zustande, wie zum Beispiel wenn man falsche Field oder Row-Seperatoren nimmt.. oooder die "letzte Zeile mal spackt".

Ich habe:
- den Job auf eine Row begrenzt und mir die Bulkfile angesehen, um eventuell einen Korrupten Datensatz zu identifizieren.. sah alles einwandfrei aus.
- Den Bulk Import händisch per SQL-Befehl auf alle Datensätze abgefeuert.. Hier kam diese Fehlermeldung 10x und brach dann ab, da er's 10x versucht hatte
- Den SQL-Profiler angemacht und versucht "genau zu sehen, was passiert" - Kam nicht wirklich was bei raus..
- Die Datentypen von Quell und Ziel-DB verglichen
- Innerlich geweint :D

Nun zu meiner Hauptfrage:
Gibt es eine Möglichkeit, wenn ich einen Bulk Import händisch im MS SQL Studio Management abfeuer, diesen bis auf den Kern zu debuggen und genau zu sehen, was denn sein Problem ist? Ja..... das Problem ist: Type mismatch =)..

Anscheinend gibt es so ein "SSIS" Tool.. Damit kam ich aber einfach nicht klar :p.


Anderes Thema, die Chance ist zwar sehr gering - jedoch versuche ich's mal!

Gibts es hier zufällig Menschen, die generell mit Data-Warehouse Themen und vielleicht sogar Talend zu tun haben?
Ich frage hier, da Talend ein Java basiertes suuuuper ETL-Tool ist und man teilweise tief in die Trickkiste greifen muss.

Vielleicht könnte man sich per pn's bei Gelegenheit austauschen! :king:
 
Talend kenn ich zwar nicht.
Aber kannst du die einzelnen offensichtlich fehlerhaften Datensätze nicht extrahieren und in eine Textdatei oder eine andere Tabelle wegschreiben lassen? Dann werden die jeweiligen "kaputten" Datensätze zwar nicht importiert aber du kannst nachvollziehen wo/warum es den Fehler produziert.

Außerdem kannst du dem Ganzen dann noch die jeweilige Error Beschreibung mitgeben: https://msdn.microsoft.com/en-us/library/ms141788.aspx#Anchor_3

So hab ich das immer gemacht.
 
(... invalid character for the specified codepage)
Vielleicht sind in den Daten Steuerzeichen enthalten, die man nicht direkt sehen kann, beliebt sind auch falsche Codierungen für ä,ö,ü, und sonstige diakritische Zeichen.
 
Nun hab ich die eigentliche Tabelle mal neu erstellt und die Daten dorthin befüllen lassen.
Funktioniert... Meine einzige Vermutung ist, dass die "bestehenden" Daten bzw die Tabelle, damals mit MSSQL 2008 erstellt wurden.
Vielleicht gibt's ne interne Abweichung der Tabellenstruktur, zwischen den Versionen.

Bin am Ende.. Keine Ahnung -.-
 
Noukz schrieb:
Gibts es hier zufällig Menschen, die generell mit Data-Warehouse Themen und vielleicht sogar Talend zu tun haben?
Ich frage hier, da Talend ein Java basiertes suuuuper ETL-Tool ist und man teilweise tief in die Trickkiste greifen muss.

Ein "Data-Warehouse" habe ich bei uns mit aufgebaut, wir verwenden auch ein java-basiertes ETL-Tool, nämlich Pentaho Data Integration. Sind soweit auch ganz zufrieden, für OpenSource wirklich brauchbar. Mit ein paar wenigen Anpassungen läuft das ganze jetzt schon seit 2-3 Jahren ziemlich rund.
Nur in wirklich großen ETL-Prozessen kommt es an seine Grenzen, da jeder Verarbeitungsschritt einen eigenen Thread bekommt -> bei über 2.000 Steps ist unser Server fast nur noch mit Thread-Handling beschäftigt :D
 
Wir sind noch im "Beginn" des DWH's. Meine Jobs laufen mit 10+ GB, da der GC bei 6GB zu wenig bekam und starb..

Kurze Zwischenfrage, wie groß isn euer DWH-Team? Mein Chef denkt, dass ich das ganz einfach "allein" aufbauen kann, neben den Standardentwicklungen.

PS: Gibt's Ärger, wenn man jetzt so Randsachen diskutiert? Gern auch per pn :D
 
Speicher kann man nie genug haben, gerade bei java :) Wir hatten am Anfang alles auf einer virtuellen Maschine (Datenbank, ETL, Webserver, Auswertung, ...), das war für die Entwicklung ganz praktisch, aber im Produktivbetrieb ist uns auch immer der Speicher ausgegangen. Jetzt hat allein der Datenbankserver sein halbes TB RAM :D

Wenn du noch ganz am Anfang stehst: Ich kann das Buch "Data-Warehouse-Systeme" von Bauer/Günzel im dpunkt-Verlag empfehlen, das hat uns ganz gut geholfen.

Unser Team besteht aus 2 Leuten, die nebenbei auch andere Dinge erledigen - dafür kaufen wir uns aber bei Bedarf ein wenig Beratung dazu. Ganz allein, neben anderen Aufgaben, ist das je nach Anwendungsfall schwierig bis unmöglich, ein komplettes DWH aufzubauen, gerade wenn man keine Ahnung von Thema hat.
 
Danke für den Buchtipp!

Wtf.. halbes TB RAM :o - Unser größter Job verarbeitet 2.3 Mio Datensätze - Darf man ne Hausnummer von euch erfahren? =)
 
2,3 mio ist schon ne Hausnummer! Aber die Zahl alleine sagt ja auch nicht viel aus, es kommt ja auch immer auf die Komplexität der Datenstruktur an. Wir haben einige Tabellen im DWH, wo der PK über einen normalen int hinausläuft - soviel kann ich zur Größe sagen.

Zum halben TB RAM: Wir sind mittlerweile an einem Punkt angekommen wo wir sagen, die Optimierung der Anwendung würde mehr Zeit (= Geld) verschlingen als einfach die Hardware aufzurüsten. Wenn du sämtliche Fakten- und Dimensionstabellen ständig im Speicher halten kannst und evtl. notwendige temporäre Tabelle auf RAM-Discs/SSDs auslagerst, dann bringt dir das mehr Performancegewinn als wenn du noch weiter versuchst, Bottlenecks in der Applikation zu finden. Das ist einfach eine Kosten-/Nutzenrechnung.

Ich glaube das wird jetzt doch zu sehr offtopic - wenn du weitere Fragen hast, gerne per PN :)
 
Noukz schrieb:
Kurze Zwischenfrage, wie groß isn euer DWH-Team? Mein Chef denkt, dass ich das ganz einfach "allein" aufbauen kann, neben den Standardentwicklungen.

Die Frage ist ja, was macht das DWH Team alles, wie häufig werden Anpassungen/Weiterentwicklung/neue Reports etc. benötigt. Ich war auch mal in dem Bereich tätig, die Datenmenge war noch wesentlich größer als Eure und aus verschiedensten Quellen. Dabei waren

- 3 interne Datenbankentwickler, bis zu 2 externe
- 4 Softwareentwickler und bis zu 2 externe, die aber nicht nur DWH Sachen entwickelt haben
- ein BI Team, also Reportentwicklung, das waren glaub ich um die 8 Mann und bis zu 3 externe
 
Zurück
Oben