Biml Teil 6 – Variables & Expressions

Im 6. und letztem Teil meiner Serie über Biml werden die Variables & Expressions innerhalb der SSIS Pakete ein bisschen näher unter die Lupe genommen. Die bisherigen Teile der Biml Serie sind hier zu finden:

 

Variables

Die Definitionen von Variablen innerhalb der Biml Scripts kann in unterschiedlichen Bereichen wie <Package> oder <DataFlow> über die Collection <Variables> geschehen. Der verwendete Bereich definiert damit auch den Bereich, in dem auf die Variablen zugegriffen werden kann. Eine direkte Definition des Bereichs ist nicht möglich. Alle aus dem SSIS Designer bekannten Eigenschaften können einer Variable als Attribut zugeordnet werden. Ein vordefinierter Wert wird als InnerXML definiert.

   1: <Variables>

   2:    <Variable DataType="Int32" Name="intVar01" Namespace="File">100</Variable>

   3:    <Variable DataType="Int32" Name="intVar02" Namespace="File">200</Variable>

   4: </Variables>

Die einzelnen Werte werden bei der Erstellung des Pakets durch den Biml Parser anhand ihres Datentyps validiert. Ein kleiner Unterschied gegenüber dem BIDS ist, das für den Datentyp DBNull in Biml Script Empty verwendet wird.

 

Expressions

Expressions können auf Paketebene oder auf Taskebene gesetzt werden. Wiederum existiert hier eine Collection <Expressions>, in der die <Expression> definiert werden. Um eine Expression zu setzen, muss ihren genauen Namen kennen und diesen über das Attribut PropertyName definieren. Der Biml Script Parser akzeptiert jegliche Eingaben und führt an dieser Stelle keine Validierung auf die zu setzende Expression durch. Wobei ich hier auch erwähnen muss, dass das BIDS selber die Expressions auch eher schlecht validiert. Erst nach dem Setzen einer Expression und dem Verlassen des Property Dialogs, erscheint eine Fehlermeldung, die leider auch keinen direkten Aufschluss auf die fehlerhaft gesetzte Expression gibt.

SNAGHTML59bf8bd

Wichtig an dieser Stelle ist noch zu erwähnen, dass Zahlen direkt eingegeben werden müssen, Strings jedoch in doppelte Anführungszeichen gesetzt werden müssen. Dies entspricht der genauen Syntax wie auch im Expression Editor im BIDS. Beachtet man dies nicht, erhält man nach dem übersetzen des Biml Script beim Öffnen des DTSX Paketes eine ähnliche Fehlermeldung wie im Screenshot.

Variablen können entsprechend der Expression Syntax mit @[SendMail::Email] angegeben werden, wobei das @-Zeichen die Variable einleitet, SendMail den Namespace der Variable definiert und Email der eigentliche Name der Variable ist.

   1: <Biml xmlns="http://schemas.varigence.com/biml.xsd">

   2:    <Connections>

   3:       <SmtpConnection Name="Example" SmtpServer="mail.example.com" />

   4:    </Connections>

   5:    <Packages>

   6:       <Package Name="Variables" AutoCreateConfigurationsType="None" ConstraintMode="Linear">

   7:          <Variables>

   8:             <Variable DataType="String" Name="Email" Namespace="SendMail">ich@example.com</Variable>

   9:          </Variables>

  10:          <Tasks>

  11:             <SendMail Name="SendMail Example" ConnectionName="Example" FromLine="sender@example.com" ToLine="sender@example.com" Subject="Biml Demo">

  12:                <Expressions>

  13:                   <Expression PropertyName="MessageSource">"DIES IST EIN WERT AUS EINER EXPRESSION"</Expression>

  14:                   <Expression PropertyName="ToLine">@[SendMail::Email]</Expression>

  15:                </Expressions>

  16:                <DirectInput>Dies ist ein Wert aus dem Element DirectInput</DirectInput>

  17:             </SendMail>

  18:          </Tasks>

  19:       </Package>

  20:    </Packages>

  21: </Biml>

 

imageDen Erfolg einer gesetzten Expression kann man dank des BIDS Helper auch direkt im BIDS erkennen.

 

Wer noch mehr über Biml Script erfahren möchte, dem empfehle ich noch einmal die BIML Language Reference von Varigence und den Blog von John Welch, der auch einige Praxisbeispiele jenseits der SSIS zu Biml Script – wie z.B. Creating Tables using Biml and BimlScript – in seiner Serie zu Biml veröffentlicht hat.