Banner

Prozessdatenmanagement in der Entwicklung

Auch die Entwicklung von Produkten oder Verfahren kann als Prozess gesehen werden. Warum also nicht, die Daten die dabei anfallen, als Prozessdaten bezeichnen? In diesem mehrteiligen Artikel steht das Zusammenführen heterogener Prozessdatenquellen und deren einfache Analyse im Vordergrund. Besonderer Wert wird auf Skalierbarkeit, Durchgängigkeit von R&D bis Fertigung, Nutzen und niedrige Kosten gelegt. Wobei in den Kosten nicht nur die Investitionskosten, sondern auch die Ausbildungskosten in das Know-how inkludiert sind.

Inhalt

Teil 1: Prozessdatenmanagement in der Entwicklung, Zielvorstellung
Teil 2: Datensammlung von formatierten Files mit MS
Teil 3: Datensammlung von XML-Files mit MS
Teil 4: Datenbereitstellung
Teil 5: Zusammenfassung Prozessdatenmanagement mit MS
Teil 6: Alternative Open Source
Teil 7: Resümee

Teil 3: Datensammlung von XML-Files mit MS

Ein zentrale Aspekt ist das Zusammenführen heterogener Datenquellen in ein einheitliches Datenformat. Der Anwender möchte alle möglichen Datenquellen importieren können. Die Bandbreite reicht dabei von Flat Files bis zu relationalen Datenbanken.

Datenquellen
Abb 2.1: Palette von möglichen Datenquellen

In Teil 2 wurde als erstes Beispiel der Import eines Fixed-Width-File beschrieben. Als zweites Beispiel wird in diesem Teil der Import eines XML-Files in einem Microsoft-Umfeld durchgespielt. Weitere Beispiele sind in den Folgeabschnitten zu finden.

XML-File eines BG-Analysators

Der XML-File ist in Struktur und Inhalt fiktiv. Er enthält nur wenige Kernelemente, die das Prinzip demonstrieren sollen. Der XML-File kann mit jedem Browser geöffnet werden. Die Baumanzeige lässt sich auf- und zuklappen.

Datenquellen
Abb 2.2: XML-File eines fiktiven Blood Gas Analyzers

Download BGA XML-File

Setup Microsoft-Umfeld

Es wird dasselbe Setup, wie in Teil 2, verwendet. Das SSIS-Paket wird mit Visual Studio erstellt. Alternativ könnten auch die SS Data-Tools ( SSDT-BI) verwendet werden, die nur den Kern von Visual Studio enthalten. Aber wozu die Teilversion verwenden, wenn auch die Vollversion free ist? Die BGA-Daten werden in die in Teil 2 erstellte DB „LabDB“ importiert.

BGA XML-File importieren

Leider unterstützt der SQL Server-Import-Assistent keine XML-Files. Microsoft bietet mehrere Alternativen, mit unterschiedlichen Qualifikationsanforderungen, an. Davon ist die Erstellung von SSIS-Paketen für mich die einfachste Methode. Am Ende dieses Artikels wird noch kurz ein Tool von einem Dritthersteller vorgestellt, mit dem es deutlich einfacher geht.

BGA Tabellen in SSMS erstellen

(1) Starte SSMS als LabAdmin
(2) "Databases" und ""LabDB" aufklappen
(3) Rechtsklick auf "Tables"/New/Table…

Die Tabellen DIM_Analyzers und FACT_MeasData nach u.a. Abb. erstellen:

Tabellen

(4) Rechtsklick auf Schlüsselzeile/SetPrimary Key
(5) Speichern und Tabellennamen vergeben

Nun ist noch die Beziehung zwischen den Tabellen zu definieren:

(6) Unterhalb von LabDB, Rechtsklick auf „Database Diagrams“/New
(7) Die Tabellen DIM_Analyzers und FACT_MeasData auswählen/Add/Close
(8) Schlüssel von DIM auf AnaSNo von FACT ziehen
(9) OK, OK
(10 Speichern und Namen vergeben

Tabellenbeziehungen

(11) fertig

BGA Import-Projekt in VS anlegen

In Visual Studio gibt es zwei Vorlagen für ein SSIS-Projekt: (i) Integration Services-Projekt und (ii) Integration Services-Assistent. Der Assistent in Visual Studio ist ident zum Assistenten in SSMS, den wir in Teil 2 kennengelernt haben. Zum Import von XML-Daten kann der Assistent leider nicht verwendet werden, wir müssen ein Projekt anlegen

(12) Visual Studio (VS) starten
(13) Im Menü oder auf der Startseite: "Neues Projekt"
(14) Vorlagen Integration Services-Projekt, Namen geben:

Vorlagenauswahl

(15) OK
(16) Im Projektmappen-Explorer (En: Solution Explorer) rechtsklick auf „Package.dtsx“/ Umbenennen auf „Basic_BGA_Imp.dtsx“

Paket benennen

Datenquelle definieren

(17) Ziehe einen neuen Datenflusstask auf den Designbereich und benenne ihn sinnvoll:

Datenflusstask benennen

(18) Doppelklick auf den Datenflusstask um die Details festzulegen / „XML-Quelle“ (unter Weitere Quellen) in den Designbereich ziehen / umbenennen:

Datenquelle benennen

(19) Doppelklick die Quelle um die Details festzulegen: (i) Datenzugriffsmodus, (ii) Speicherort und (iii) XSD-Speicherort. Da wir keinen XSD-File haben, erzeugen wir einen (Taste XSD-Code generieren…):

Datenquelle Details

(20) OK
(21) Es wird einen Warnung ausgegeben, die auf die fehlenden String-Längen-Spezifikationen hinweist. Wir ignorieren das vorerst – schau‘n wir mal.

Warnungen

(22) OK
(23) Als nächstes können die gelesenen Spalten überprüft werden. Das schaut gut aus: die Hierarchien werden korrekt erkannt und unterschiedlichen Tabellen zugeordnet. Auch die Attribute werden korrekt zugeordnet:

Spaltenzuordnungen

(24) OK

Datenziele definieren

In diesem Beispiel enthält die XML-Quelle zwei Datengruppen (Analyzer und MeasData), die auch in zwei getrennten Datentabellen abgelegt werden sollen. Dementsprechend sind auch im SSIS-Paket zwei Datenziele zu definieren.

(25) „OLE DB-Ziel“ zweimal in den Design-Bereich ziehen und sinnvoll benennen:

Datenziele

(26)Zielverbindung herstellen. Dazu den blauen Pfeil von der Quelle auf das Ziel ziehen. Im sich öffnenden Auswahlfenster unter Ausgabe: „Analyzer“ bzw. „MeasData“ selektieren. Dasselbe kann man mit dem roten Pfeil – definiert den Fehlerpfad – machen. In diesem einfachen Beispiel erwarten wir aber keine Fehler und lassen den Fehlerpfad daher undefiniert.

Datenziele verbinden

(27) Beim Ziehen auf das zweite Ziel, wird die Ausgabe-Auswahl bereits automatisch vervollständigt. Ergebnis:

Datenziele verbunden

(28) Im letzten Schritt sind noch die Ziele zu konfigurieren. Doppel-Klick auf das Ziel Analyzers öffnet den Ziel-Editor. Hier ist der Verbindungsmanager, der Datenzugriffsmodus und die Tabelle auszuwählen:

Datenziele konfigurieren

(29) Abschließend noch die Zuordnungen überprüfen:

Zuordnungen prüfen

(30) Dasselbe auch für das Ziel „MeasData“. Den Warnhinweis bezüglich Abschneidens von UnitsBG ignorieren wir, es wird nicht passieren.

BGA-Import starten

Der Import wird im Projekt-Explorer mit Rechtsklick auf das Paket „Basic_BGA_Imp“ gestartet. Die Anzeige wechselt in den Debug-Modus und das Ergebnis wird angezeigt:

Ablaufergebnis

Ablauf ist ok und …

befüllte Tabellen

… die Tabellen sind gefüllt. Das ist ja suuuper, alles hat geklappt!

Troubleshooting SSIS-Paket

Im Schritt 21 sind wir schon auf den String-Fehler gestoßen. Der Fehler ist sehr häufig, da der selbst generierte XSD-File keine String-Längen definiert. Das Problem lässt sich einfach durch Ergänzen im XSD-File lösen. Im u.a. Beispiel für „UnitsBG“ hab ich die erste Zeile auskommentiert und durch einen Textblock ersetzt (siehe auch: XML Schema Tutorial ):

XSD mit maxLength

Und schon ist der Warnhinweis Geschichte:

Ablauf ohne Warnung

Sehr häufig sind auch Datentypfehler. Wenn z.B. im XSD-File ein unsigned Integer definiert wird, in der SS-Tabelle aber ein signed Integer (Typ: „int“) erwartet wird. Korrektur wieder im XSD-File mit:

  • unsignedInt --> int

Resümee SSIS

Die grafische Oberfläche des SSIS-Designers sorgt für eine niedrige Einstiegsschwelle. Die Benutzerführung ist gut umgesetzt, sodass einfache Aufgaben schnell und sicher gelöst werden können. Die enorme Funktionsvielfalt birgt natürlich auch einiges an Komplexität, das Schöne ist aber: man kann einfach beginnen und mit der Aufgabe wachsen.

Der in Teil 2 eingesetzte Import-Assistent kann ohne besondere Qualifikation sinnvoll verwendet werden. Das trifft für SSIS-Designer - trotz der grafischen Oberfläche und der guten Anwenderführung - nicht zu. Ein Anfänger in Sachen SSIS wird etwas Schulung benötigen, die Grundbegriffe sind aber sicher in einem Tag erlernbar. Bei etwas Übung ist das BGA- Importpaket in ca. 15 min erstellt.

Alternative zu SSIS: Data Pump

Devart dbForge Data Pump for SQL Server ist ein Add-In für das SSMS. Der Assistent unterstützt den Daten-Transfer zwischen externen Datenquellen und SS-Tabellen. Das Tool ist genauso einfach zu bedienen, als der in SSMS integrierte Assistent, unterstützt jedoch auch XML-und JSON-Files. Das Tool kostet ca. 150$.

(1) In SSMS Data Pump starten:

Ablauf ohne Warnung

(2) In Source File: Quelle angeben:

Ablauf ohne Warnung

(3) In Destination: Existing Tables Analyzers auswählen
(4) In Options: Tag Analyzers und Consider tag attributes … auswählen
(5) In Data formats: Decimal seperator “.“ auswählen
(6) In Mapping: sollte alles passen
(7) In Modes: Append und Use bulk insert auswählen
(8) In Output; Import data directly to the database auswählen
(9) Errors handling: Prompt user
(10) Import und Save Template als „Ana_import.dit“:

Ablauf ohne Warnung

(11) Import more
… dasselbe noch einmal für „MeasData“
(20) Import und Save Template als „MeasData_import.dit“
(21) fertig.

Das ganze hat nur 4 Minuten benötigt, das ist 1/5 der Zeit um das SSIS-Projekt zu erstellen. Der Zeitgewinn ist so signifikant, dass man es immer zuerst mit dem Assistenten versuchen sollte. Wenn die Leistungsfähigkeit nicht ausreicht, kann man immer noch ein SSIS-Projekt starten.

Data Pump kann nur 1 XML-Tag pro Durchgang importieren. Es gibt jedoch die Möglichkeit, die Templates in einem Batch-File auszuführen. Beispiel:

@echo off set ap="F:\Program Files (x86)\Devart\DataDump4SS\datapump.com"
%ap% /dataimport /templatefile:"C:\Import\Ana_import.dit"
%ap% /dataimport /templatefile:"C:\Import\MeasData_import.dit"
Pause
Ablauf ohne Warnung

Resümee Data Pump

Das GUI des Assistenten ist logisch aufgebaut und sehr einfach zu bedienen. Besondere Qualifikationen sind nicht erforderlich. Data Pump hat gegenüber dem im SSMS integrierten Assistenten mehrere Vorteile:

  • Unterstützt XML
  • Einfach editierbar
  • Automatisierbar

Nachteilig sind die Kosten mit ca. 150$. Die Leistungsfähigkeit eines SSIS-Projektes ist natürlich bei weitem größer, aber die Schnelligkeit mit der einfachen Migrations-Aufgaben in Data Pump gelöst werden können, sind ein Wert für sich.

 

< Teil 2 ∧ Seitenanfang Teil 4 >