In der letzten Wochen hatten wir in der PASS Regionalgruppe KölnBonnDüsseldorf mal wieder das Glück Sascha Lorenz zu Besuch gehabt zu haben. In seinem Vortrag “The Developer Side of Business Intelligence” hat Sascha gezeigt, wie man verschiedene Lösungen des Microsoft BI Stacks programmatisch erstellen kann. Hierbei wurde für die Integration Services besonders auf den in der MSDN Library beschriebenen Bereich “Building Packages Programmatically” eingegangen. Allen Mitgliedern des PASS Deutschland e.V. steht der Vortrag von Sascha in unserem Repository zur Verfügung.
Wer in der Programmierung mit .NET nicht so bewandert ist aber dennoch SSIS Templates oder auch gesamte Pakete “programmatisch” erstellen möchte, dem empfehle ich einen Blick auf Biml, die Business Intelligence Markup Language, und dem BIDS Helper.
Die Firma Varigence bietet mit Biml seit einiger Zeit eine XML basierte Sprache an, um Business Intelligence Lösung auf der SQL Server Plattform zu generieren. Seit der neusten Version des BIDS Helper 1.4.4 beta, können Biml Dateien mit dem Visual Studio erstellt und daraus SSIS Pakete generiert werden.
Mit der Biml Language Reference stellt Varigence eine umfangreiche Dokumentation zur Verfügung, die ich allerdings im ersten Anlauf ein kleines bisschen gewöhnungsbedürftig fand. Die Entwickler des BIDS Helper haben aber mal wieder eine sehr gute Integration ins Visual Studio respektive BIDS geschaffen, so dass man vieles auch direkt über die IntelliSense erfährt.
Der BIDS Helper erweitert das Kontextmenü einer Integration Services Solution um den Eintrag “Add new Biml File”. Über diesen Menüpunkt wird eine neue BimlScript Datei (*.biml) im Verzeichnis Sonstiges erstellt. Die Datei enthält entsprechende XML Elemente für ein Biml Schema.
Ein einfaches SSIS Paket oder Template kann nun mit wenigen Zeilen XML Code erstellt werden. Um aus dem BimlScript später ein SSIS Paket zu generieren, erweitert der BIDS Helper das Kontextmenü zusätzlich um den Eintrag “Expand Biml File”.
Beim Erstellen des Paketes prüft der Biml Parser das BimlScript und zeigt ggf. alle Fehler innerhalb der XML Datei an. Über den Eintrag “Check Biml for Errors” kann das BimlScript während der Entwicklung auch direkt auf Fehler geprüft werden.
Eine einfache Biml Datei um Daten aus der AdventureWorks Datenbank zu lesen und in eine Multicast Component laufen zu lassen sieht in Biml wie folgt aus:
1: <Biml xmlns="http://schemas.varigence.com/biml.xsd">
2: <Connections>
3: <Connection Name="AdventureWorks" ConnectionString="Server=.;Initial Catalog=AdventureWorks;Integrated Security=SSPI;Provider=SQLNCLI10"/>
4: </Connections>
5: <Packages>
6: <Package Name="Biml Sample" AutoCreateConfigurationsType="None" ConstraintMode="Linear">
7: <Tasks>
8: <Dataflow Name="AdventureWorks">
9: <Transformations>
10: <OleDbSource Name="PersonContact" ConnectionName="AdventureWorks">
11: <DirectInput>SELECT * FROM [Person].[Contact]</DirectInput>
12: </OleDbSource>
13: <Multicast Name="UNION" />
14: </Transformations>
15: </Dataflow>
16: </Tasks>
17: </Package>
18: </Packages>
19: </Biml>