SSIS & Microsoft Live Labs Pivot

September 8, 2010 08:58 by till

Nachdem ich vor einigen Wochen einen sehr guten Vortrag zum Thema BI mit SQL Server und Sharepoint von Oliver Engels und Markus Fischer gehört habe, bin ich ziemlich angetan von einem dabei ebenfalls vorgestelltem Produkt: Microsoft Live Labs Pivot. Irgendwie quält mich auch seit dem die Idee einen kleinen Beitrag zu SSIS und Pivot zu schreiben.

In den letzten paar Tagen habe ich an meiner SSIS Komponente SSIS ImageSource ein paar Änderungen an der internen Verarbeitung vorgenommen und dem ganzen auch mal ein User Interface geschenkt. Noch reicht es zwar nicht um ein neue Release bei Codeplex zu veröffentlichen, aber für eine kleine Demo zusammen mit Microsoft Live Labs Pivot reicht es.

image image


Pivot ist eine Software der Microsoft Live Labs, die es ermöglicht in großen Datenmengen schnell und einfach zu navigieren und zu suchen. Der Kern hinter Pivot basiert auf dem ursprünglichen Projekt Seadragon, jetzt unter zoom.it zu finden. Für die Darstellung von Daten verwendet Pivot sogenannte Collections von Bildern. Beschreibende Daten innerhalb einer Collection, wie z.B. ein Änderungsdatum oder eine Dateigröße bei einem Bild, werden in Facets zusammengefasst. Der große Vorteil ist die konsistente Benutzerführung. Je nach Datentyp werden die einzelnen Facets in Pivot über spezielle Controls dargestellt, so können Zahlen z.B. über Schieberegler ausgewählt werden, Datumswerte über Gruppierungen (Jahr, Monat-Jahr) oder Kalender-Controls.

image image

Pivot eignet sich aber natürlich nicht nur für Urlaubsfotos. Microsoft zeigt dies mit den Beispiel-Collections: Sportler-Fotos, ähnlich der bekannten Sammelbilder, zusammen mit den wichtigsten Kennzahlen (dargestellt als Facet) ergeben tolle Collections, die natürlich besondere Wirkung in Verbindung mit so statistisch geprägten Sportarten wie Football oder Basketball haben. Ich finde das gute alte Quartett beschreibt sehr gut was Collections sind bzw. darstellen.

Nun aber zu meiner kleinen Spielerei mit SSIS & Pivot.

Auf der Microsoft Live Labs Pivot Seite gibt es im Bereich Developer Info die sogenannten Sample Code for Creating Just in Time Pivot Collections Beispiele. Die darin enthaltenen PivoServerTools sind eigentlich alles was man benötigt um selber Just in Time eine Pivot Collection zu erstellen.

Für die Demo habe ich knapp 700 Urlaubsfotos als Originalgröße und als Thumbnails vorliegen. Mit der SSIS ImageSource Komponente habe ich die Thumbnails geladen und dabei die entsprechenden EXIF Daten ausgelesen. Über eine abgeleitete Spalte habe ich mir zusätzlich für jedes einzelne Bild den Pfad zu dem original Bild generieren lassen und diesen dem Datenfluss hinzugefügt.

 image

Hat man das heruntergeladene JiT Collection Projekt mit dem .NET Framework 3.5 (die voreingestellte Version 4 wird nicht von der Script Komponente innerhalb der SSIS unterstützt) kompiliert, so muss die erstellte PivotServerTools Assembly noch dem GAC hinzugefügt werden und innerhalb der SSIS Script Komponente die entsprechende Assembly referenziert werden.

Die einzelnen Eingabespalten werden innerhalb der Script Komponente auf Nullwerte überprüft und dann jeweils in eine Varibale “_NAME DER SPALTE” – siehe Spalte _Artist, _ColorSpace, _Compression – geschrieben und daraus die entsprechenden Facets erstellt.

Der eigentlich Code für die Generierung der Pivot Collection sieht dann wie folgt aus:

   1: string extension = Path.GetExtension(_FullName);
   2:         bool isJpeg = (0 == string.Compare(".jpg", extension, true));
   3:         bool isPng = (0 == string.Compare(".png", extension, true));
   4:             
   5:         FileInfo info = new FileInfo(_FullName);
   6:         coll.AddItem(Path.GetFileNameWithoutExtension(_FullName)
   7:                         , _FullName
   8:                         , _ImageDescription
   9:                         , new ItemImage(_FullName_gross)
  10:                         , new Facet("File name", _FileName
  11:                             , isJpeg ? "*.jpg" : null
  12:                             , isPng ? "*.png" : null)
  13:                         , new Facet("File size", info.Length / 1000)
  14:                         , new Facet("Creation time", _CreationTime)
  15:                         , new Facet("Link:", new FacetHyperlink("click to view image", _FullName))
  16:                         , new Facet("Artist", _Artist)
  17:                         , new Facet("Color Space", _ColorSpace)
  18:                         , new Facet("Compression", _Compression)
  19:                         , new Facet("Copyright", _Copyright)
  20:                         , new Facet("Exif Version", _ExifVersion)
  21:                         , new Facet("GPS", _GPS)
  22:                         );


Die Verarbeitung der knapp 700 Fotos mit 45 Facets hat ca. 7 Sekunden gedauert und schon war meine Pivot Collection erstellt:

SSIS & Microsoft Live Labs Pivot


In den nächsten Wochen werde ich mich ein bisschen intensiver mit Pivot beschäftigen, vielleicht findet sich dann auch noch eine Demo mit besseren Daten oder es springt vielleicht eine SSIS PivotDestination Komponente heraus.


SSIS ShapeFileSource 1.0

September 2, 2010 06:54 by till

ShapeFileSourceGestern habe ich eine neue Version der Komponente SSIS ShapeFileSource bei Codeplex veröffentlicht. Bei der aktuellen Version habe ich einige Fehler behoben und die Performance wesentlich verbessern können; zusätzlich habe ich der Komponente jetzt auch einen Installer “geschenkt”.

Im Download-Bereich ist ein Demo SSIS Paket zu finden, mit dem einige Daten des Projektes DIVA-GIS geladen und im SQL Server über einen Script Task gespeichert werden.

Im folgenden Screenshot sind beispielhaft die italienischen Verwaltungsgebiete aus dem DIVA-GIS Projekt mit dem Report Builder 3.0 visualisiert.

ShapeFileSource008


Die Komponente funktioniert weiterhin nur unter x86, wer also ein x64 System verwendet, muss im Visual Studio in den Projekteigenschaften des SSIS Projektes explizit die 64Bit Runtime auf false setzen und das Paket später entsprechend über dtexec.exe aus dem x86 Verzeichnis aufrufen.


image


Währungsumrechnung mit datenfabrik.currency

August 27, 2010 01:49 by Till

Als neustes Produkt im Rahmen unserer Datenqualitätskomponenten haben wir nun datenfabrik.currency aufgenommen. Die SSIS Komponente ermöglicht es, Beträge jeglicher Art, wie Umsätze oder Preise, während des Ladevorgangs direkt von verschiedenen Währungen in eine einheitliche Zielwährung umzurechnen.

 

imageimageimage

Die Komponente kann für die Währungsumrechnung derzeit zwei verschiedene Datafeeds verarbeiten. Zum einem den kostenfreien Datafeed der Europäischen Zentralbank und zum anderen einen kommerziellen Datafeed der Firma XE.com.
Die EZB bietet in ihrem Datafeed ca. 37 Währungen rückwirkend bis zum Jahr 1999 an und ermöglicht die Umrechnung aus einer Währung in den Euro. Über den kommerziellen Datafeed von XE.com können bis zu 171 verschiedene Währungen abgedeckt werden. Die Umrechnung kann dabei in verschiedene Zielwährungen stattfinden. Zusätzlich bietet XE auch die Möglichkeit Daten stundengenaue oder historische Daten zu beziehen.

Die Komponente ermöglicht es über eine gesonderte Spalte oder Variable das Datum des Währungskurs zu definieren, somit können z.B. Verkaufszahlen der letzten 10 Jahre während des Imports mit dem Währungskurs zum jeweiligen Datum der Rechnungsstellung umgerechnet werden. Sollten für einen bestimmten Zeitpunkt keine Umrechnungsdaten zur Verfügung stehen, so kann datenfabrik.currency die Ausführung abbrechen, ein Ausweichdatum oder einen fixen Umrechnungswert verwenden.

Trial-Versionen und Demodaten zu datenfabrik.currency sind auf unserer Webseite http://www.datenfabrik.com zu finden, ebenso wie unsere Produktbroschüre in der auch Informationen in englischer Sprache zu finden sind.