SSIS 2 Power Query > Integration Service als ODATA Feed

Tillmann und ich sind immer auf der Suche nach interessanten Komponenten für Integration Services. Vor Kurzem bin ich auf eine neue Komponente von Microsoft gestossen, welche im Download Center zum Download zur Verfügung steht, die sogenannte Data Streaming Desitination:

http://www.microsoft.com/en-us/download/confirmation.aspx?id=39931

Um was geht es in dieser Komponente? Grob gesagt, kann ich ein SSIS Package nutzen um einen Data Feed zu erzeugen und diesen dynamisch abfragen. Wie geht das?

DataFeed

Über den OLE DB Provider für SSIS kann man den Datenstrom der in die Data Streaming Desitination gesendet wird als normale Query via eines Linked Server abrufen. Das sieht jetzt auf den ersten Blick nicht so interessant aus, aber was passiert hier wirklich? Eine Abfrage triggert ein SSIS Package? Das bietet doch einige Möglichkeiten.

 

Teil 1: Installation und SSIS Package

Installation:

Die Komponente benötigt SQL Server 2012 und SSIS. Desweiteren brauchen wir SQL Server Datatools für VS2010 oder VS2012, sowie obigen Download in der entsprechenden 32 oder 64bit Version. Die Installation ist mit eins zwei Clicks durch und brauch hier nicht dokumentiert werden. Sie kann validiert werden in dem man unter Server Objects > Linked Servers prüft ob der OLE DB Provider für SSIS installiert wurde:

LinkedServer

Per Doppelklick muss noch die Einstellung “Allow inprocess” gesetzt werden:

LinkedServerSettings

 

SSIS Package:

Nun erstellen wir ein einfaches SSIS Package mit einer Datenquelle (Hier die Abfrage der Currency Tabelle aus AdventureWorks) und der Data Streaming Destination:

DataStreamingDestination

Die Data Streaming Destination muss nicht konfiguriert werden. Nun gilt es, das Package auf den entsprechenden Server zu deployen:

Catalog

Wenn das geschehen ist, folgt ein entscheidender Schritt, welcher die Daten dieses Packages via Linked Servers zu verfügung stellt. Unter: C:\Program Files\Microsoft SQL Server\110\DTS\Binn findet man den DataFeedPublishingWizard, diesen gilt es auszuführen. Es erscheint folgender Startscreen:

 

IntegratioFeedWizard

Im zweiten Schritt muss der Server und die Datenbank ausgewählt werden. Die Datenbank ist dabei unabhängig und muss nicht mit der Quelle im SSIS Package übereinstimmen (eigentlich klar… 🙂 )

WizardPackageSetup2

In den Settings kann ich dediziert einstellen wie das Timeout getacktet ist, ein SSIS Package kann und darf ja auch etwas komplexer sein ;), ob ich das Package nur 32bit mässig fahren kann und wie der Linked Server heisst. Wir lassen im Beispiel alles im Standard und gehen zum nächsten Schritt:

 

WizardPackageSetup3

In der Validierung bekommt man eine Alarmmeldung sofern der Linked Server noch nicht erstellt wurde, was in meinem Szenario der Fall ist. Hier wird er dann vom Wizard für mich erstellt.

 

WizardPackageSetup4

Der Wizard zeigt auch den entsprechenden SQL Befehl um das Package aufzurufen:

Selection

Das war der erste Schritt. Wir haben nun einen Datafeed auf Basis eines SSIS Packages. Eine kleine Anmerkung noch: Folgende Datentypen kann diese Technik bis dato noch nicht verarbeiten: text, ntext, image, nvarchar(max), varchar(max), und varbinary(max).

Nun möchten wir diese Datenquelle auf unserer Power BI Instanz nutzen. Wie das geht folgt im zweiten Teil.