Biml for Beginners - Generating SSIS Packages with BimlScript (SQLSaturday Gothenburg)

Cathrine Wilhelmsen
Cathrine WilhelmsenData & Analytics Solutions Architect in Evidi | Microsoft Data Platform MVP
Biml for Beginners:
Generating SSIS packages with BimlScript
Cathrine Wilhelmsen
September 5th 2015
Session description
SSIS is a powerful tool for extracting, transforming and loading data,
but creating the actual SSIS packages can be both tedious and time-
consuming. Even if you use templates and follow best practices you
often have to repeat the same steps over and over again. There are
no easy ways to handle metadata and schema changes, and if there
are new requirements you might have to go through all the packages
one more time. It's time to bring the Don't Repeat Yourself principle
to SSIS development.
In this session I will use the free BIDS Helper add-in to show you the
basics of Biml and BimlScript, how to generate SSIS packages
automatically from databases, how easy those packages can be
changed, and how to move common code to separate files that can
be included where needed. See why they say Biml allows you to
complete in a day what once took more than a week!
@cathrinew
cathrinewilhelmsen.net
Data Warehouse Architect
Business Intelligence Developer
Cathrine Wilhelmsen
Who are you? (*)
SSIS and ETL Developer?
Easily bored?
Tired of repetitive work?
( * Probably not a cat )
Why are you here?
Long development time?
Many SSIS packages?
Slow GUI editor?
(Drag, drop, drag, drop, connect,
drag, drop, connect, resize, align,
drag, drop, resize, connect, align…)
job done!
new standards
yay
Have you ever experienced this?
Ready for a change?
Business Intelligence Markup Language
Easy to read and write XML dialect
Specifies business intelligence objects
Databases, schemas, tables, columns
SSIS packages
SSAS cubes, facts, dimensions (Mist only)
Highlights in Biml History
founded by Scott Currie, is born
Biml was extended with
Biml compiler added to
is launched
founded
is launched
2008:
2009:
2011:
2012:
2014:
2015:
How can Biml help you?
Timesaving: Many SSIS
Packages from one Biml file
Reusable: Write once and run
on any platform (2005 – 2014)
Flexible: Start simple, expand
as you learn
(Of course I can create 200 packages!
What do you need me to do after lunch?)
What do you need?
How does it work?
Generated packages are indistinguishable from manually created packages
Biml syntax
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Packages>
<Package Name="EmptyPackage1"></Package>
<Package Name="EmptyPackage2"/>
</Packages>
</Biml>
Biml syntax: Root Element
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Packages>
<Package Name="EmptyPackage1"></Package>
<Package Name="EmptyPackage2"/>
</Packages>
</Biml>
Biml syntax: Collection of Elements
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Packages>
<Package Name="EmptyPackage1"></Package>
<Package Name="EmptyPackage2"/>
</Packages>
</Biml>
Biml syntax: Elements
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Packages>
<Package Name="EmptyPackage1"></Package>
<Package Name="EmptyPackage2"/>
</Packages>
</Biml>
Biml syntax: Attributes
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Packages>
<Package Name="EmptyPackage1"></Package>
<Package Name="EmptyPackage2"/>
</Packages>
</Biml>
Biml syntax: Full vs. Shorthand Syntax
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Packages>
<Package Name="EmptyPackage1"></Package>
<Package Name="EmptyPackage2"/>
</Packages>
</Biml>
Demo – Biml
Getting started with Biml
1. Download and install BIDS Helper (http://bidshelper.codeplex.com)
2. Right-click on SSIS project and click Add New Biml File
Intellisense
Intellisense while typing
CTRL+Space to AutoComplete or show Intellisense
Errors
Red squiggly line: Error
Blue squiggly line: Missing attribute or child element
Error spelling
Missing attribute: ConstraintMode
Errors
Hovering over errors will show descriptive text
Missing attribute: ConstraintMode
Error spelling
Right-click to Check Biml for Errors
Your first SSIS Package from Biml
Right-click on Biml file and click Generate SSIS Packages
Packages will appear under SSIS Packages
From Biml to SSIS
From Biml to SSIS
.biml vs .dtsx:
human-readable vs ALL THE CODE!
(150% zoom) (20% zoom)
I create SSIS packages faster than that
But wait!
The magic is in the
Extend Biml with C# or VB.NET code blocks
Import database structure and metadata
Loop over tables and columns
Add expressions to replace static values
Allows you to control and manipulate Biml code
BimlScript code blocks
<#@ … #> Directives (Instructions to the BimlCompiler)
<# … #> Control Blocks (Control logic)
<#= … #> Expression Control Blocks (Replace block with string value)
<#+ … #> Class Feature Control Blocks (Create helper methods)
BimlScript syntax
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Packages>
<# foreach (var table in RootNode.Tables) { #>
<Package Name="Load<#=table.Name#>"></Package>
<# } #>
</Packages>
</Biml>
BimlScript syntax: Control Blocks
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Packages>
<# foreach (var table in RootNode.Tables) { #>
<Package Name="Load<#=table.Name#>"></Package>
<# } #>
</Packages>
</Biml>
BimlScript syntax: Expression Control Block
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Packages>
<# foreach (var table in RootNode.Tables) { #>
<Package Name="Load<#=table.Name#>"></Package>
<# } #>
</Packages>
</Biml>
How does it work?
Yes, but how does it work?
37
Yes, but how does it actually work?
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Packages>
<# foreach (var table in RootNode.Tables) { #>
<Package Name="Load<#=table.Name#>"></Package>
<# } #>
</Packages>
</Biml>
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Packages>
<Package Name="LoadCustomer"></Package>
<Package Name="LoadProduct"></Package>
<Package Name="LoadSales"></Package>
</Packages>
</Biml>
Demo – BimlScript
Basic for loop
<Packages>
<# for (int count = 1; count <= 5; count++) { #>
<Package Name="Load_Person_Person_<#=count#>">
</Package>
<# } #>
</Packages>
foreach (table in a database) loop
<#@ import namespace="Varigence.Hadron.CoreLowerer.SchemaManagement" #>
<# var conAW2014 = SchemaManager.CreateConnectionNode("AW2014", "Data Source...");
#>
<# var AW2014DB = conAW2014.ImportDB("","", ImportOptions.ExcludeViews); #>
<Packages>
<# foreach (var table in AW2014DB.TableNodes) { #>
<Package Name="Load_<#=table.Schema#>_<#=table.Name#>">
</Package>
<# } #>
</Packages>
Don't Repeat Yourself
Move common code to separate files
Centralize and reuse in many projects
Update code once for all projects
1. Split and combine Biml files
2. Include files
3. CallBimlScript with parameters
Split and combine Biml files
Solve logical dependencies and simulate manual workflows by using tiers
Tiers instruct the BimlCompiler to compile files from lowest to highest tier
<#@ template tier="1" #>
Higher tiers can use and might depend on objects from lower tiers
Tier 1 - Create database connections
Example: Tier 2 - Create loading packages
Tier 3 - Create master package to execute loading packages
Split and combine Biml files
1. Create Biml files with specified tiers
2. Select all the tiered Biml files
3. Right-click and click Generate SSIS Packages
1
2
3
Behind the scenes: Split and combine Biml files
RootNode
<#@ template tier="0" #>
<Connections>
<Databases>
<Schemas>
<#@ template tier="1" #>
<Tables>
<Columns>
<#@ template tier="2" #>
<Packages>
<Connections>
<Databases>
<Schemas>RootNode
<#@ template tier="0" #>
<Connections>
<Databases>
<Schemas>
<#@ template tier="1" #>
<Tables>
<Columns>
<#@ template tier="2" #>
<Packages>
compile
Behind the scenes: Split and combine Biml files
<Connections>
<Databases>
<Schemas>RootNode
<#@ template tier="0" #>
<Connections>
<Databases>
<Schemas>
<#@ template tier="1" #>
<Tables>
<Columns>
<#@ template tier="2" #>
<Packages>
use
Behind the scenes: Split and combine Biml files
<Connections>
<Databases>
<Schemas>
<Tables>
<Columns>
RootNode
<#@ template tier="0" #>
<Connections>
<Databases>
<Schemas>
<#@ template tier="1" #>
<Tables>
<Columns>
<#@ template tier="2" #>
<Packages>
compile
Behind the scenes: Split and combine Biml files
<Connections>
<Databases>
<Schemas>
<Tables>
<Columns>
RootNode
<#@ template tier="0" #>
<Connections>
<Databases>
<Schemas>
<#@ template tier="1" #>
<Tables>
<Columns>
<#@ template tier="2" #>
<Packages> use
Behind the scenes: Split and combine Biml files
<Connections>
<Databases>
<Schemas>
<Tables>
<Columns>
<Packages>
RootNode
<#@ template tier="0" #>
<Connections>
<Databases>
<Schemas>
<#@ template tier="1" #>
<Tables>
<Columns>
<#@ template tier="2" #>
<Packages> compile
Behind the scenes: Split and combine Biml files
<Connections>
<Databases>
<Schemas>
<Tables>
<Columns>
<Packages>
RootNode
<#@ template tier="0" #>
<Connections>
<Databases>
<Schemas>
<#@ template tier="1" #>
<Tables>
<Columns>
<#@ template tier="2" #>
<Packages>
generate
Behind the scenes: Split and combine Biml files
RootNode
<#@ template tier="0" #>
<Connections>
<Databases>
<Schemas>
<#@ template tier="1" #>
<Tables>
<Columns>
<#@ template tier="2" #>
<Packages>
Behind the scenes: Split and combine Biml files
Don't Repeat Yourself: Include files
Include common code in multiple files and projects
Can include many file types: .biml .txt .sql .cs
Use the include directive
<#@ include file="CommonCode.biml" #>
The include directive will be replaced by the content of the included file
Include pulls code from the included file into the main file
Don't Repeat Yourself: Include files
Don't Repeat Yourself: CallBimlScript with parameters
Works like a parameterized include
File to be called (callee) specifies the input parameters it accepts
<#@ property name="Table" type="AstTableNode" #>
File that calls (caller) passes input parameters
<#=CallBimlScript("CommonCode.biml", Table)#>
CallBimlScript pushes parameters from the caller to the callee, and the
callee returns code
Don't Repeat Yourself: CallBimlScript with parameters
Don't Repeat Yourself: CallBimlScript with parameters
Demo
View compiled Biml
Credits: Marco Schreuder (@in2bi)
http://blog.in2bi.eu/biml/viewing-or-saving-the-
compiled-biml-file-s/
Helper file with high tier (tier="100")
Saves output of RootNode.GetBiml() to file
What do you do next?
1. Download BIDS Helper
2. Identify your SSIS patterns
3. Rewrite one SSIS package to Biml to learn the basics
4. Expand with BimlScript
5. Get involved in the Biml community
Biml on Monday...
…BimlBreak the rest of the week 
More Biml!
Don't miss Rasmus Reinholdt's session
Building a meta-driven near realtime
ETL solution with BIML and SSIS
at 14:55!
…and come chat with us in the breaks 
Thank you! 
@cathrinew
cathrinewilhelmsen.net
no.linkedin.com/in/cathrinewilhelmsen
contact@cathrinewilhelmsen.net
cathrinewilhelmsen.net/biml
slideshare.net/cathrinewilhelmsenBiml resources
over there!
1 of 63

Recommended

Upgrading from SSIS Package Deployment to Project Deployment (SQLSaturday Den... by
Upgrading from SSIS Package Deployment to Project Deployment (SQLSaturday Den...Upgrading from SSIS Package Deployment to Project Deployment (SQLSaturday Den...
Upgrading from SSIS Package Deployment to Project Deployment (SQLSaturday Den...Cathrine Wilhelmsen
3.4K views90 slides
Biml for Beginners: Speed up your SSIS development (SQLSaturday Chicago) by
Biml for Beginners: Speed up your SSIS development (SQLSaturday Chicago)Biml for Beginners: Speed up your SSIS development (SQLSaturday Chicago)
Biml for Beginners: Speed up your SSIS development (SQLSaturday Chicago)Cathrine Wilhelmsen
2.7K views82 slides
Biml for Beginners: Speed up your SSIS development (SQLSaturday Iceland) by
Biml for Beginners: Speed up your SSIS development (SQLSaturday Iceland)Biml for Beginners: Speed up your SSIS development (SQLSaturday Iceland)
Biml for Beginners: Speed up your SSIS development (SQLSaturday Iceland)Cathrine Wilhelmsen
5.4K views96 slides
Don't Repeat Yourself - Agile SSIS Development with Biml and BimlScript (SQL ... by
Don't Repeat Yourself - Agile SSIS Development with Biml and BimlScript (SQL ...Don't Repeat Yourself - Agile SSIS Development with Biml and BimlScript (SQL ...
Don't Repeat Yourself - Agile SSIS Development with Biml and BimlScript (SQL ...Cathrine Wilhelmsen
5K views72 slides
S.M.A.R.T. Biml - Standardize, Model, Automate, Reuse and Transform (SQLSatur... by
S.M.A.R.T. Biml - Standardize, Model, Automate, Reuse and Transform (SQLSatur...S.M.A.R.T. Biml - Standardize, Model, Automate, Reuse and Transform (SQLSatur...
S.M.A.R.T. Biml - Standardize, Model, Automate, Reuse and Transform (SQLSatur...Cathrine Wilhelmsen
6.4K views84 slides
Biml for Beginners - Generating SSIS Packages with BimlScript (SQLSaturday Ex... by
Biml for Beginners - Generating SSIS Packages with BimlScript (SQLSaturday Ex...Biml for Beginners - Generating SSIS Packages with BimlScript (SQLSaturday Ex...
Biml for Beginners - Generating SSIS Packages with BimlScript (SQLSaturday Ex...Cathrine Wilhelmsen
5.9K views63 slides

More Related Content

What's hot

Don't Repeat Yourself - An Introduction to Agile SSIS Development (24 Hours o... by
Don't Repeat Yourself - An Introduction to Agile SSIS Development (24 Hours o...Don't Repeat Yourself - An Introduction to Agile SSIS Development (24 Hours o...
Don't Repeat Yourself - An Introduction to Agile SSIS Development (24 Hours o...Cathrine Wilhelmsen
3.6K views55 slides
Level Up Your Biml: Best Practices and Coding Techniques (NTK 2016) by
Level Up Your Biml: Best Practices and Coding Techniques (NTK 2016)Level Up Your Biml: Best Practices and Coding Techniques (NTK 2016)
Level Up Your Biml: Best Practices and Coding Techniques (NTK 2016)Cathrine Wilhelmsen
1.5K views107 slides
Generate SSIS packages automatically with Biml and BimlScript (SQLKonferenz 2... by
Generate SSIS packages automatically with Biml and BimlScript (SQLKonferenz 2...Generate SSIS packages automatically with Biml and BimlScript (SQLKonferenz 2...
Generate SSIS packages automatically with Biml and BimlScript (SQLKonferenz 2...Cathrine Wilhelmsen
3.7K views59 slides
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Oslo) by
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Oslo)Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Oslo)
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Oslo)Cathrine Wilhelmsen
1.6K views115 slides
Level Up Your Biml: Best Practices and Coding Techniques (TUGA IT 2016) by
Level Up Your Biml: Best Practices and Coding Techniques (TUGA IT 2016)Level Up Your Biml: Best Practices and Coding Techniques (TUGA IT 2016)
Level Up Your Biml: Best Practices and Coding Techniques (TUGA IT 2016)Cathrine Wilhelmsen
1.9K views108 slides
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Minnesota) by
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Minnesota)Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Minnesota)
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Minnesota)Cathrine Wilhelmsen
1.8K views119 slides

What's hot(20)

Don't Repeat Yourself - An Introduction to Agile SSIS Development (24 Hours o... by Cathrine Wilhelmsen
Don't Repeat Yourself - An Introduction to Agile SSIS Development (24 Hours o...Don't Repeat Yourself - An Introduction to Agile SSIS Development (24 Hours o...
Don't Repeat Yourself - An Introduction to Agile SSIS Development (24 Hours o...
Cathrine Wilhelmsen3.6K views
Level Up Your Biml: Best Practices and Coding Techniques (NTK 2016) by Cathrine Wilhelmsen
Level Up Your Biml: Best Practices and Coding Techniques (NTK 2016)Level Up Your Biml: Best Practices and Coding Techniques (NTK 2016)
Level Up Your Biml: Best Practices and Coding Techniques (NTK 2016)
Cathrine Wilhelmsen1.5K views
Generate SSIS packages automatically with Biml and BimlScript (SQLKonferenz 2... by Cathrine Wilhelmsen
Generate SSIS packages automatically with Biml and BimlScript (SQLKonferenz 2...Generate SSIS packages automatically with Biml and BimlScript (SQLKonferenz 2...
Generate SSIS packages automatically with Biml and BimlScript (SQLKonferenz 2...
Cathrine Wilhelmsen3.7K views
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Oslo) by Cathrine Wilhelmsen
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Oslo)Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Oslo)
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Oslo)
Cathrine Wilhelmsen1.6K views
Level Up Your Biml: Best Practices and Coding Techniques (TUGA IT 2016) by Cathrine Wilhelmsen
Level Up Your Biml: Best Practices and Coding Techniques (TUGA IT 2016)Level Up Your Biml: Best Practices and Coding Techniques (TUGA IT 2016)
Level Up Your Biml: Best Practices and Coding Techniques (TUGA IT 2016)
Cathrine Wilhelmsen1.9K views
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Minnesota) by Cathrine Wilhelmsen
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Minnesota)Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Minnesota)
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Minnesota)
Cathrine Wilhelmsen1.8K views
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Denver) by Cathrine Wilhelmsen
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Denver)Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Denver)
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Denver)
Cathrine Wilhelmsen3.7K views
Biml for Beginners: Speed up your SSIS development (SQLSaturday Vienna) by Cathrine Wilhelmsen
Biml for Beginners: Speed up your SSIS development (SQLSaturday Vienna)Biml for Beginners: Speed up your SSIS development (SQLSaturday Vienna)
Biml for Beginners: Speed up your SSIS development (SQLSaturday Vienna)
Cathrine Wilhelmsen2.8K views
Biml for Beginners: Speed up your SSIS development (SQLSaturday Vancouver) by Cathrine Wilhelmsen
Biml for Beginners: Speed up your SSIS development (SQLSaturday Vancouver)Biml for Beginners: Speed up your SSIS development (SQLSaturday Vancouver)
Biml for Beginners: Speed up your SSIS development (SQLSaturday Vancouver)
Cathrine Wilhelmsen3.4K views
Biml for Beginners: Speed up your SSIS development (Malta Microsoft Data Plat... by Cathrine Wilhelmsen
Biml for Beginners: Speed up your SSIS development (Malta Microsoft Data Plat...Biml for Beginners: Speed up your SSIS development (Malta Microsoft Data Plat...
Biml for Beginners: Speed up your SSIS development (Malta Microsoft Data Plat...
Cathrine Wilhelmsen3.4K views
Tools and Tips: From Accidental to Efficient Data Warehouse Developer (SQLSat... by Cathrine Wilhelmsen
Tools and Tips: From Accidental to Efficient Data Warehouse Developer (SQLSat...Tools and Tips: From Accidental to Efficient Data Warehouse Developer (SQLSat...
Tools and Tips: From Accidental to Efficient Data Warehouse Developer (SQLSat...
Cathrine Wilhelmsen1.4K views
Marty, You're Just Not Thinking Fourth Dimensionally by Teamstudio
Marty, You're Just Not Thinking Fourth DimensionallyMarty, You're Just Not Thinking Fourth Dimensionally
Marty, You're Just Not Thinking Fourth Dimensionally
Teamstudio3.2K views
Sql bits creating a meta data driven ssis solution with biml by Marco Schreuder
Sql bits   creating a meta data driven ssis solution with bimlSql bits   creating a meta data driven ssis solution with biml
Sql bits creating a meta data driven ssis solution with biml
Marco Schreuder2.1K views
XPages and jQuery DataTables: Simplifying View Creation while Maximizing Func... by Teamstudio
XPages and jQuery DataTables: Simplifying View Creation while Maximizing Func...XPages and jQuery DataTables: Simplifying View Creation while Maximizing Func...
XPages and jQuery DataTables: Simplifying View Creation while Maximizing Func...
Teamstudio4.1K views
Liquibase migration for data bases by Roman Uholnikov
Liquibase migration for data basesLiquibase migration for data bases
Liquibase migration for data bases
Roman Uholnikov1.4K views
The Grid the Brad and the Ugly: Using Grids to Improve Your Applications by balassaitis
The Grid the Brad and the Ugly: Using Grids to Improve Your ApplicationsThe Grid the Brad and the Ugly: Using Grids to Improve Your Applications
The Grid the Brad and the Ugly: Using Grids to Improve Your Applications
balassaitis2.2K views
Agile Database Development with Liquibase by Tim Berglund
Agile Database Development with LiquibaseAgile Database Development with Liquibase
Agile Database Development with Liquibase
Tim Berglund2.4K views
Introduction to MongoDB by Edureka!
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
Edureka!9.7K views
XPages Blast - Lotusphere 2013 by Tim Clark
XPages Blast - Lotusphere 2013XPages Blast - Lotusphere 2013
XPages Blast - Lotusphere 2013
Tim Clark4.6K views

Similar to Biml for Beginners - Generating SSIS Packages with BimlScript (SQLSaturday Gothenburg)

Biml for Beginners: Speed up your SSIS development (SQLBits XV) by
Biml for Beginners: Speed up your SSIS development (SQLBits XV)Biml for Beginners: Speed up your SSIS development (SQLBits XV)
Biml for Beginners: Speed up your SSIS development (SQLBits XV)Cathrine Wilhelmsen
1.5K views57 slides
Biml for Beginners: Script and Automate SSIS development (Capital Area SQL Se... by
Biml for Beginners: Script and Automate SSIS development (Capital Area SQL Se...Biml for Beginners: Script and Automate SSIS development (Capital Area SQL Se...
Biml for Beginners: Script and Automate SSIS development (Capital Area SQL Se...Cathrine Wilhelmsen
2.5K views98 slides
Biml for Beginners: Script and Automate SSIS development (SQLSaturday Chicago) by
Biml for Beginners: Script and Automate SSIS development (SQLSaturday Chicago)Biml for Beginners: Script and Automate SSIS development (SQLSaturday Chicago)
Biml for Beginners: Script and Automate SSIS development (SQLSaturday Chicago)Cathrine Wilhelmsen
2K views98 slides
Biml for Beginners: Script and Automate SSIS development (Malibu SQL Server U... by
Biml for Beginners: Script and Automate SSIS development (Malibu SQL Server U...Biml for Beginners: Script and Automate SSIS development (Malibu SQL Server U...
Biml for Beginners: Script and Automate SSIS development (Malibu SQL Server U...Cathrine Wilhelmsen
1.1K views98 slides
Biml for Beginners: Speed up your SSIS development (SQLSaturday Tallinn) by
Biml for Beginners: Speed up your SSIS development (SQLSaturday Tallinn)Biml for Beginners: Speed up your SSIS development (SQLSaturday Tallinn)
Biml for Beginners: Speed up your SSIS development (SQLSaturday Tallinn)Cathrine Wilhelmsen
1.2K views99 slides
Biml for Beginners: Speed up your SSIS development (SQLSaturday Nashville) by
Biml for Beginners: Speed up your SSIS development (SQLSaturday Nashville)Biml for Beginners: Speed up your SSIS development (SQLSaturday Nashville)
Biml for Beginners: Speed up your SSIS development (SQLSaturday Nashville)Cathrine Wilhelmsen
978 views97 slides

Similar to Biml for Beginners - Generating SSIS Packages with BimlScript (SQLSaturday Gothenburg)(20)

Biml for Beginners: Speed up your SSIS development (SQLBits XV) by Cathrine Wilhelmsen
Biml for Beginners: Speed up your SSIS development (SQLBits XV)Biml for Beginners: Speed up your SSIS development (SQLBits XV)
Biml for Beginners: Speed up your SSIS development (SQLBits XV)
Cathrine Wilhelmsen1.5K views
Biml for Beginners: Script and Automate SSIS development (Capital Area SQL Se... by Cathrine Wilhelmsen
Biml for Beginners: Script and Automate SSIS development (Capital Area SQL Se...Biml for Beginners: Script and Automate SSIS development (Capital Area SQL Se...
Biml for Beginners: Script and Automate SSIS development (Capital Area SQL Se...
Cathrine Wilhelmsen2.5K views
Biml for Beginners: Script and Automate SSIS development (SQLSaturday Chicago) by Cathrine Wilhelmsen
Biml for Beginners: Script and Automate SSIS development (SQLSaturday Chicago)Biml for Beginners: Script and Automate SSIS development (SQLSaturday Chicago)
Biml for Beginners: Script and Automate SSIS development (SQLSaturday Chicago)
Biml for Beginners: Script and Automate SSIS development (Malibu SQL Server U... by Cathrine Wilhelmsen
Biml for Beginners: Script and Automate SSIS development (Malibu SQL Server U...Biml for Beginners: Script and Automate SSIS development (Malibu SQL Server U...
Biml for Beginners: Script and Automate SSIS development (Malibu SQL Server U...
Cathrine Wilhelmsen1.1K views
Biml for Beginners: Speed up your SSIS development (SQLSaturday Tallinn) by Cathrine Wilhelmsen
Biml for Beginners: Speed up your SSIS development (SQLSaturday Tallinn)Biml for Beginners: Speed up your SSIS development (SQLSaturday Tallinn)
Biml for Beginners: Speed up your SSIS development (SQLSaturday Tallinn)
Cathrine Wilhelmsen1.2K views
Biml for Beginners: Speed up your SSIS development (SQLSaturday Nashville) by Cathrine Wilhelmsen
Biml for Beginners: Speed up your SSIS development (SQLSaturday Nashville)Biml for Beginners: Speed up your SSIS development (SQLSaturday Nashville)
Biml for Beginners: Speed up your SSIS development (SQLSaturday Nashville)
Biml for Beginners: Speed up your SSIS development (SQL PASS Edmonton ) by Cathrine Wilhelmsen
Biml for Beginners: Speed up your SSIS development (SQL PASS Edmonton )Biml for Beginners: Speed up your SSIS development (SQL PASS Edmonton )
Biml for Beginners: Speed up your SSIS development (SQL PASS Edmonton )
Biml for Beginners: Script and Automate SSIS development (24 Hours of PASS: S... by Cathrine Wilhelmsen
Biml for Beginners: Script and Automate SSIS development (24 Hours of PASS: S...Biml for Beginners: Script and Automate SSIS development (24 Hours of PASS: S...
Biml for Beginners: Script and Automate SSIS development (24 Hours of PASS: S...
Cathrine Wilhelmsen1.1K views
Designing for magento by hainutemicute
Designing for magentoDesigning for magento
Designing for magento
hainutemicute3.4K views
Introduction to BOOTSTRAP by Jeanie Arnoco
Introduction to BOOTSTRAPIntroduction to BOOTSTRAP
Introduction to BOOTSTRAP
Jeanie Arnoco1.1K views
Biml for Beginners: Script and Automate SSIS development (Hybrid VC) by Cathrine Wilhelmsen
Biml for Beginners: Script and Automate SSIS development (Hybrid VC)Biml for Beginners: Script and Automate SSIS development (Hybrid VC)
Biml for Beginners: Script and Automate SSIS development (Hybrid VC)
Cathrine Wilhelmsen20.8K views
Future-proof styling in Drupal (8) by Hajas Tamás
Future-proof styling in Drupal (8)Future-proof styling in Drupal (8)
Future-proof styling in Drupal (8)
Hajas Tamás503 views
Twitter bootstrap training_session_ppt by Radheshyam Kori
Twitter bootstrap training_session_pptTwitter bootstrap training_session_ppt
Twitter bootstrap training_session_ppt
Radheshyam Kori132 views
Open Writing! Collaborative Authoring for CloudStack Documentation by Jessica... by buildacloud
Open Writing! Collaborative Authoring for CloudStack Documentation by Jessica...Open Writing! Collaborative Authoring for CloudStack Documentation by Jessica...
Open Writing! Collaborative Authoring for CloudStack Documentation by Jessica...
buildacloud2.2K views
Open writing-cloud-collab by Karen Vuong
Open writing-cloud-collabOpen writing-cloud-collab
Open writing-cloud-collab
Karen Vuong731 views
Joomla Beginner Template Presentation by alledia
Joomla Beginner Template PresentationJoomla Beginner Template Presentation
Joomla Beginner Template Presentation
alledia2.1K views
5 tsssisu sql_server_2012 by Steve Xu
5 tsssisu sql_server_20125 tsssisu sql_server_2012
5 tsssisu sql_server_2012
Steve Xu503 views
Implement rich snippets in your webshop by Arjen Miedema
Implement rich snippets in your webshopImplement rich snippets in your webshop
Implement rich snippets in your webshop
Arjen Miedema897 views

More from Cathrine Wilhelmsen

Choosing Between Microsoft Fabric, Azure Synapse Analytics and Azure Data Fac... by
Choosing Between Microsoft Fabric, Azure Synapse Analytics and Azure Data Fac...Choosing Between Microsoft Fabric, Azure Synapse Analytics and Azure Data Fac...
Choosing Between Microsoft Fabric, Azure Synapse Analytics and Azure Data Fac...Cathrine Wilhelmsen
294 views43 slides
Stressed, Depressed, or Burned Out? The Warning Signs You Shouldn't Ignore (D... by
Stressed, Depressed, or Burned Out? The Warning Signs You Shouldn't Ignore (D...Stressed, Depressed, or Burned Out? The Warning Signs You Shouldn't Ignore (D...
Stressed, Depressed, or Burned Out? The Warning Signs You Shouldn't Ignore (D...Cathrine Wilhelmsen
47 views53 slides
Stressed, Depressed, or Burned Out? The Warning Signs You Shouldn't Ignore (S... by
Stressed, Depressed, or Burned Out? The Warning Signs You Shouldn't Ignore (S...Stressed, Depressed, or Burned Out? The Warning Signs You Shouldn't Ignore (S...
Stressed, Depressed, or Burned Out? The Warning Signs You Shouldn't Ignore (S...Cathrine Wilhelmsen
89 views51 slides
"I can't keep up!" - Turning Discomfort into Personal Growth in a Fast-Paced ... by
"I can't keep up!" - Turning Discomfort into Personal Growth in a Fast-Paced ..."I can't keep up!" - Turning Discomfort into Personal Growth in a Fast-Paced ...
"I can't keep up!" - Turning Discomfort into Personal Growth in a Fast-Paced ...Cathrine Wilhelmsen
97 views62 slides
Lessons Learned: Implementing Azure Synapse Analytics in a Rapidly-Changing S... by
Lessons Learned: Implementing Azure Synapse Analytics in a Rapidly-Changing S...Lessons Learned: Implementing Azure Synapse Analytics in a Rapidly-Changing S...
Lessons Learned: Implementing Azure Synapse Analytics in a Rapidly-Changing S...Cathrine Wilhelmsen
687 views49 slides
6 Tips for Building Confidence as a Public Speaker (SQLBits 2022) by
6 Tips for Building Confidence as a Public Speaker (SQLBits 2022)6 Tips for Building Confidence as a Public Speaker (SQLBits 2022)
6 Tips for Building Confidence as a Public Speaker (SQLBits 2022)Cathrine Wilhelmsen
119 views30 slides

More from Cathrine Wilhelmsen(20)

Choosing Between Microsoft Fabric, Azure Synapse Analytics and Azure Data Fac... by Cathrine Wilhelmsen
Choosing Between Microsoft Fabric, Azure Synapse Analytics and Azure Data Fac...Choosing Between Microsoft Fabric, Azure Synapse Analytics and Azure Data Fac...
Choosing Between Microsoft Fabric, Azure Synapse Analytics and Azure Data Fac...
Stressed, Depressed, or Burned Out? The Warning Signs You Shouldn't Ignore (D... by Cathrine Wilhelmsen
Stressed, Depressed, or Burned Out? The Warning Signs You Shouldn't Ignore (D...Stressed, Depressed, or Burned Out? The Warning Signs You Shouldn't Ignore (D...
Stressed, Depressed, or Burned Out? The Warning Signs You Shouldn't Ignore (D...
Stressed, Depressed, or Burned Out? The Warning Signs You Shouldn't Ignore (S... by Cathrine Wilhelmsen
Stressed, Depressed, or Burned Out? The Warning Signs You Shouldn't Ignore (S...Stressed, Depressed, or Burned Out? The Warning Signs You Shouldn't Ignore (S...
Stressed, Depressed, or Burned Out? The Warning Signs You Shouldn't Ignore (S...
"I can't keep up!" - Turning Discomfort into Personal Growth in a Fast-Paced ... by Cathrine Wilhelmsen
"I can't keep up!" - Turning Discomfort into Personal Growth in a Fast-Paced ..."I can't keep up!" - Turning Discomfort into Personal Growth in a Fast-Paced ...
"I can't keep up!" - Turning Discomfort into Personal Growth in a Fast-Paced ...
Lessons Learned: Implementing Azure Synapse Analytics in a Rapidly-Changing S... by Cathrine Wilhelmsen
Lessons Learned: Implementing Azure Synapse Analytics in a Rapidly-Changing S...Lessons Learned: Implementing Azure Synapse Analytics in a Rapidly-Changing S...
Lessons Learned: Implementing Azure Synapse Analytics in a Rapidly-Changing S...
6 Tips for Building Confidence as a Public Speaker (SQLBits 2022) by Cathrine Wilhelmsen
6 Tips for Building Confidence as a Public Speaker (SQLBits 2022)6 Tips for Building Confidence as a Public Speaker (SQLBits 2022)
6 Tips for Building Confidence as a Public Speaker (SQLBits 2022)
Lessons Learned: Understanding Pipeline Pricing in Azure Data Factory and Azu... by Cathrine Wilhelmsen
Lessons Learned: Understanding Pipeline Pricing in Azure Data Factory and Azu...Lessons Learned: Understanding Pipeline Pricing in Azure Data Factory and Azu...
Lessons Learned: Understanding Pipeline Pricing in Azure Data Factory and Azu...
Cathrine Wilhelmsen3.8K views
Pipelines and Data Flows: Introduction to Data Integration in Azure Synapse A... by Cathrine Wilhelmsen
Pipelines and Data Flows: Introduction to Data Integration in Azure Synapse A...Pipelines and Data Flows: Introduction to Data Integration in Azure Synapse A...
Pipelines and Data Flows: Introduction to Data Integration in Azure Synapse A...
Pipelines and Data Flows: Introduction to Data Integration in Azure Synapse A... by Cathrine Wilhelmsen
Pipelines and Data Flows: Introduction to Data Integration in Azure Synapse A...Pipelines and Data Flows: Introduction to Data Integration in Azure Synapse A...
Pipelines and Data Flows: Introduction to Data Integration in Azure Synapse A...
Understanding Azure Data Factory: The What, When, and Why (NIC 2020) by Cathrine Wilhelmsen
Understanding Azure Data Factory: The What, When, and Why (NIC 2020)Understanding Azure Data Factory: The What, When, and Why (NIC 2020)
Understanding Azure Data Factory: The What, When, and Why (NIC 2020)
Cathrine Wilhelmsen1.8K views
Azure Data Factory for the SSIS Developer (SentryOne Webinar) by Cathrine Wilhelmsen
Azure Data Factory for the SSIS Developer (SentryOne Webinar)Azure Data Factory for the SSIS Developer (SentryOne Webinar)
Azure Data Factory for the SSIS Developer (SentryOne Webinar)
Cathrine Wilhelmsen1.1K views
Azure Synapse Analytics Teaser (Microsoft TechX Oslo 2019) by Cathrine Wilhelmsen
Azure Synapse Analytics Teaser (Microsoft TechX Oslo 2019)Azure Synapse Analytics Teaser (Microsoft TechX Oslo 2019)
Azure Synapse Analytics Teaser (Microsoft TechX Oslo 2019)
Cathrine Wilhelmsen1.1K views
Lessons Learned: Understanding Azure Data Factory Pricing (Microsoft Ignite 2... by Cathrine Wilhelmsen
Lessons Learned: Understanding Azure Data Factory Pricing (Microsoft Ignite 2...Lessons Learned: Understanding Azure Data Factory Pricing (Microsoft Ignite 2...
Lessons Learned: Understanding Azure Data Factory Pricing (Microsoft Ignite 2...
Cathrine Wilhelmsen15.8K views
Building Dynamic Data Pipelines in Azure Data Factory (Microsoft Ignite 2019) by Cathrine Wilhelmsen
Building Dynamic Data Pipelines in Azure Data Factory (Microsoft Ignite 2019)Building Dynamic Data Pipelines in Azure Data Factory (Microsoft Ignite 2019)
Building Dynamic Data Pipelines in Azure Data Factory (Microsoft Ignite 2019)
Cathrine Wilhelmsen4.1K views
Creating Visual Transformations in Azure Data Factory (dataMinds Connect) by Cathrine Wilhelmsen
Creating Visual Transformations in Azure Data Factory (dataMinds Connect)Creating Visual Transformations in Azure Data Factory (dataMinds Connect)
Creating Visual Transformations in Azure Data Factory (dataMinds Connect)
Cathrine Wilhelmsen1.2K views
Building Dynamic Pipelines in Azure Data Factory (Data Saturday Holland) by Cathrine Wilhelmsen
Building Dynamic Pipelines in Azure Data Factory (Data Saturday Holland)Building Dynamic Pipelines in Azure Data Factory (Data Saturday Holland)
Building Dynamic Pipelines in Azure Data Factory (Data Saturday Holland)
Pipelines and Packages: Introduction to Azure Data Factory (Techorama NL 2019) by Cathrine Wilhelmsen
Pipelines and Packages: Introduction to Azure Data Factory (Techorama NL 2019)Pipelines and Packages: Introduction to Azure Data Factory (Techorama NL 2019)
Pipelines and Packages: Introduction to Azure Data Factory (Techorama NL 2019)
Cathrine Wilhelmsen1.4K views
Pipelines and Packages: Introduction to Azure Data Factory (DATA:Scotland 2019) by Cathrine Wilhelmsen
Pipelines and Packages: Introduction to Azure Data Factory (DATA:Scotland 2019)Pipelines and Packages: Introduction to Azure Data Factory (DATA:Scotland 2019)
Pipelines and Packages: Introduction to Azure Data Factory (DATA:Scotland 2019)
Cathrine Wilhelmsen4.1K views
Building Dynamic Pipelines in Azure Data Factory (SQLSaturday Oslo) by Cathrine Wilhelmsen
Building Dynamic Pipelines in Azure Data Factory (SQLSaturday Oslo)Building Dynamic Pipelines in Azure Data Factory (SQLSaturday Oslo)
Building Dynamic Pipelines in Azure Data Factory (SQLSaturday Oslo)
Cathrine Wilhelmsen2.7K views
Uhms and Bunny Hands: Tips for Improving Your Presentation Skills (DataGrille... by Cathrine Wilhelmsen
Uhms and Bunny Hands: Tips for Improving Your Presentation Skills (DataGrille...Uhms and Bunny Hands: Tips for Improving Your Presentation Skills (DataGrille...
Uhms and Bunny Hands: Tips for Improving Your Presentation Skills (DataGrille...
Cathrine Wilhelmsen1.7K views

Recently uploaded

[DSC Europe 23] Luca Morena - From Psychohistory to Curious Machines by
[DSC Europe 23] Luca Morena - From Psychohistory to Curious Machines[DSC Europe 23] Luca Morena - From Psychohistory to Curious Machines
[DSC Europe 23] Luca Morena - From Psychohistory to Curious MachinesDataScienceConferenc1
5 views20 slides
Data about the sector workshop by
Data about the sector workshopData about the sector workshop
Data about the sector workshopinfo828217
15 views27 slides
[DSC Europe 23][Cryptica] Martin_Summer_Digital_central_bank_money_Ideas_init... by
[DSC Europe 23][Cryptica] Martin_Summer_Digital_central_bank_money_Ideas_init...[DSC Europe 23][Cryptica] Martin_Summer_Digital_central_bank_money_Ideas_init...
[DSC Europe 23][Cryptica] Martin_Summer_Digital_central_bank_money_Ideas_init...DataScienceConferenc1
5 views18 slides
[DSC Europe 23] Aleksandar Tomcic - Adversarial Attacks by
[DSC Europe 23] Aleksandar Tomcic - Adversarial Attacks[DSC Europe 23] Aleksandar Tomcic - Adversarial Attacks
[DSC Europe 23] Aleksandar Tomcic - Adversarial AttacksDataScienceConferenc1
5 views20 slides
Amy slides.pdf by
Amy slides.pdfAmy slides.pdf
Amy slides.pdfStatsCommunications
5 views13 slides
[DSC Europe 23] Milos Grubjesic Empowering Business with Pepsico s Advanced M... by
[DSC Europe 23] Milos Grubjesic Empowering Business with Pepsico s Advanced M...[DSC Europe 23] Milos Grubjesic Empowering Business with Pepsico s Advanced M...
[DSC Europe 23] Milos Grubjesic Empowering Business with Pepsico s Advanced M...DataScienceConferenc1
7 views11 slides

Recently uploaded(20)

[DSC Europe 23] Luca Morena - From Psychohistory to Curious Machines by DataScienceConferenc1
[DSC Europe 23] Luca Morena - From Psychohistory to Curious Machines[DSC Europe 23] Luca Morena - From Psychohistory to Curious Machines
[DSC Europe 23] Luca Morena - From Psychohistory to Curious Machines
Data about the sector workshop by info828217
Data about the sector workshopData about the sector workshop
Data about the sector workshop
info82821715 views
[DSC Europe 23][Cryptica] Martin_Summer_Digital_central_bank_money_Ideas_init... by DataScienceConferenc1
[DSC Europe 23][Cryptica] Martin_Summer_Digital_central_bank_money_Ideas_init...[DSC Europe 23][Cryptica] Martin_Summer_Digital_central_bank_money_Ideas_init...
[DSC Europe 23][Cryptica] Martin_Summer_Digital_central_bank_money_Ideas_init...
[DSC Europe 23] Milos Grubjesic Empowering Business with Pepsico s Advanced M... by DataScienceConferenc1
[DSC Europe 23] Milos Grubjesic Empowering Business with Pepsico s Advanced M...[DSC Europe 23] Milos Grubjesic Empowering Business with Pepsico s Advanced M...
[DSC Europe 23] Milos Grubjesic Empowering Business with Pepsico s Advanced M...
4_4_WP_4_06_ND_Model.pptx by d6fmc6kwd4
4_4_WP_4_06_ND_Model.pptx4_4_WP_4_06_ND_Model.pptx
4_4_WP_4_06_ND_Model.pptx
d6fmc6kwd47 views
SUPER STORE SQL PROJECT.pptx by khan888620
SUPER STORE SQL PROJECT.pptxSUPER STORE SQL PROJECT.pptx
SUPER STORE SQL PROJECT.pptx
khan88862013 views
Cross-network in Google Analytics 4.pdf by GA4 Tutorials
Cross-network in Google Analytics 4.pdfCross-network in Google Analytics 4.pdf
Cross-network in Google Analytics 4.pdf
GA4 Tutorials6 views
Product Research sample.pdf by AllenSingson
Product Research sample.pdfProduct Research sample.pdf
Product Research sample.pdf
AllenSingson29 views
CRIJ4385_Death Penalty_F23.pptx by yvettemm100
CRIJ4385_Death Penalty_F23.pptxCRIJ4385_Death Penalty_F23.pptx
CRIJ4385_Death Penalty_F23.pptx
yvettemm1007 views
OPPOTUS - Malaysians on Malaysia 3Q2023.pdf by Oppotus
OPPOTUS - Malaysians on Malaysia 3Q2023.pdfOPPOTUS - Malaysians on Malaysia 3Q2023.pdf
OPPOTUS - Malaysians on Malaysia 3Q2023.pdf
Oppotus18 views
[DSC Europe 23] Zsolt Feleki - Machine Translation should we trust it.pptx by DataScienceConferenc1
[DSC Europe 23] Zsolt Feleki - Machine Translation should we trust it.pptx[DSC Europe 23] Zsolt Feleki - Machine Translation should we trust it.pptx
[DSC Europe 23] Zsolt Feleki - Machine Translation should we trust it.pptx
Chapter 3b- Process Communication (1) (1)(1) (1).pptx by ayeshabaig2004
Chapter 3b- Process Communication (1) (1)(1) (1).pptxChapter 3b- Process Communication (1) (1)(1) (1).pptx
Chapter 3b- Process Communication (1) (1)(1) (1).pptx
ayeshabaig20047 views
OECD-Persol Holdings Workshop on Advancing Employee Well-being in Business an... by StatsCommunications
OECD-Persol Holdings Workshop on Advancing Employee Well-being in Business an...OECD-Persol Holdings Workshop on Advancing Employee Well-being in Business an...
OECD-Persol Holdings Workshop on Advancing Employee Well-being in Business an...
UNEP FI CRS Climate Risk Results.pptx by pekka28
UNEP FI CRS Climate Risk Results.pptxUNEP FI CRS Climate Risk Results.pptx
UNEP FI CRS Climate Risk Results.pptx
pekka2811 views
[DSC Europe 23] Rania Wazir - Opening up the box: the complexity of human int... by DataScienceConferenc1
[DSC Europe 23] Rania Wazir - Opening up the box: the complexity of human int...[DSC Europe 23] Rania Wazir - Opening up the box: the complexity of human int...
[DSC Europe 23] Rania Wazir - Opening up the box: the complexity of human int...

Biml for Beginners - Generating SSIS Packages with BimlScript (SQLSaturday Gothenburg)

  • 1. Biml for Beginners: Generating SSIS packages with BimlScript Cathrine Wilhelmsen September 5th 2015
  • 2. Session description SSIS is a powerful tool for extracting, transforming and loading data, but creating the actual SSIS packages can be both tedious and time- consuming. Even if you use templates and follow best practices you often have to repeat the same steps over and over again. There are no easy ways to handle metadata and schema changes, and if there are new requirements you might have to go through all the packages one more time. It's time to bring the Don't Repeat Yourself principle to SSIS development. In this session I will use the free BIDS Helper add-in to show you the basics of Biml and BimlScript, how to generate SSIS packages automatically from databases, how easy those packages can be changed, and how to move common code to separate files that can be included where needed. See why they say Biml allows you to complete in a day what once took more than a week!
  • 3. @cathrinew cathrinewilhelmsen.net Data Warehouse Architect Business Intelligence Developer Cathrine Wilhelmsen
  • 4. Who are you? (*) SSIS and ETL Developer? Easily bored? Tired of repetitive work? ( * Probably not a cat )
  • 5. Why are you here? Long development time? Many SSIS packages? Slow GUI editor? (Drag, drop, drag, drop, connect, drag, drop, connect, resize, align, drag, drop, resize, connect, align…)
  • 6. job done! new standards yay Have you ever experienced this?
  • 7. Ready for a change?
  • 8. Business Intelligence Markup Language Easy to read and write XML dialect Specifies business intelligence objects Databases, schemas, tables, columns SSIS packages SSAS cubes, facts, dimensions (Mist only)
  • 9. Highlights in Biml History founded by Scott Currie, is born Biml was extended with Biml compiler added to is launched founded is launched 2008: 2009: 2011: 2012: 2014: 2015:
  • 10. How can Biml help you? Timesaving: Many SSIS Packages from one Biml file Reusable: Write once and run on any platform (2005 – 2014) Flexible: Start simple, expand as you learn (Of course I can create 200 packages! What do you need me to do after lunch?)
  • 11. What do you need?
  • 12. How does it work? Generated packages are indistinguishable from manually created packages
  • 13. Biml syntax <Biml xmlns="http://schemas.varigence.com/biml.xsd"> <Packages> <Package Name="EmptyPackage1"></Package> <Package Name="EmptyPackage2"/> </Packages> </Biml>
  • 14. Biml syntax: Root Element <Biml xmlns="http://schemas.varigence.com/biml.xsd"> <Packages> <Package Name="EmptyPackage1"></Package> <Package Name="EmptyPackage2"/> </Packages> </Biml>
  • 15. Biml syntax: Collection of Elements <Biml xmlns="http://schemas.varigence.com/biml.xsd"> <Packages> <Package Name="EmptyPackage1"></Package> <Package Name="EmptyPackage2"/> </Packages> </Biml>
  • 16. Biml syntax: Elements <Biml xmlns="http://schemas.varigence.com/biml.xsd"> <Packages> <Package Name="EmptyPackage1"></Package> <Package Name="EmptyPackage2"/> </Packages> </Biml>
  • 17. Biml syntax: Attributes <Biml xmlns="http://schemas.varigence.com/biml.xsd"> <Packages> <Package Name="EmptyPackage1"></Package> <Package Name="EmptyPackage2"/> </Packages> </Biml>
  • 18. Biml syntax: Full vs. Shorthand Syntax <Biml xmlns="http://schemas.varigence.com/biml.xsd"> <Packages> <Package Name="EmptyPackage1"></Package> <Package Name="EmptyPackage2"/> </Packages> </Biml>
  • 20. Getting started with Biml 1. Download and install BIDS Helper (http://bidshelper.codeplex.com) 2. Right-click on SSIS project and click Add New Biml File
  • 21. Intellisense Intellisense while typing CTRL+Space to AutoComplete or show Intellisense
  • 22. Errors Red squiggly line: Error Blue squiggly line: Missing attribute or child element Error spelling Missing attribute: ConstraintMode
  • 23. Errors Hovering over errors will show descriptive text Missing attribute: ConstraintMode Error spelling
  • 24. Right-click to Check Biml for Errors
  • 25. Your first SSIS Package from Biml Right-click on Biml file and click Generate SSIS Packages Packages will appear under SSIS Packages
  • 26. From Biml to SSIS
  • 27. From Biml to SSIS
  • 28. .biml vs .dtsx: human-readable vs ALL THE CODE! (150% zoom) (20% zoom)
  • 29. I create SSIS packages faster than that
  • 31. The magic is in the Extend Biml with C# or VB.NET code blocks Import database structure and metadata Loop over tables and columns Add expressions to replace static values Allows you to control and manipulate Biml code
  • 32. BimlScript code blocks <#@ … #> Directives (Instructions to the BimlCompiler) <# … #> Control Blocks (Control logic) <#= … #> Expression Control Blocks (Replace block with string value) <#+ … #> Class Feature Control Blocks (Create helper methods)
  • 33. BimlScript syntax <Biml xmlns="http://schemas.varigence.com/biml.xsd"> <Packages> <# foreach (var table in RootNode.Tables) { #> <Package Name="Load<#=table.Name#>"></Package> <# } #> </Packages> </Biml>
  • 34. BimlScript syntax: Control Blocks <Biml xmlns="http://schemas.varigence.com/biml.xsd"> <Packages> <# foreach (var table in RootNode.Tables) { #> <Package Name="Load<#=table.Name#>"></Package> <# } #> </Packages> </Biml>
  • 35. BimlScript syntax: Expression Control Block <Biml xmlns="http://schemas.varigence.com/biml.xsd"> <Packages> <# foreach (var table in RootNode.Tables) { #> <Package Name="Load<#=table.Name#>"></Package> <# } #> </Packages> </Biml>
  • 36. How does it work?
  • 37. Yes, but how does it work? 37
  • 38. Yes, but how does it actually work? <Biml xmlns="http://schemas.varigence.com/biml.xsd"> <Packages> <# foreach (var table in RootNode.Tables) { #> <Package Name="Load<#=table.Name#>"></Package> <# } #> </Packages> </Biml> <Biml xmlns="http://schemas.varigence.com/biml.xsd"> <Packages> <Package Name="LoadCustomer"></Package> <Package Name="LoadProduct"></Package> <Package Name="LoadSales"></Package> </Packages> </Biml>
  • 40. Basic for loop <Packages> <# for (int count = 1; count <= 5; count++) { #> <Package Name="Load_Person_Person_<#=count#>"> </Package> <# } #> </Packages>
  • 41. foreach (table in a database) loop <#@ import namespace="Varigence.Hadron.CoreLowerer.SchemaManagement" #> <# var conAW2014 = SchemaManager.CreateConnectionNode("AW2014", "Data Source..."); #> <# var AW2014DB = conAW2014.ImportDB("","", ImportOptions.ExcludeViews); #> <Packages> <# foreach (var table in AW2014DB.TableNodes) { #> <Package Name="Load_<#=table.Schema#>_<#=table.Name#>"> </Package> <# } #> </Packages>
  • 42. Don't Repeat Yourself Move common code to separate files Centralize and reuse in many projects Update code once for all projects 1. Split and combine Biml files 2. Include files 3. CallBimlScript with parameters
  • 43. Split and combine Biml files Solve logical dependencies and simulate manual workflows by using tiers Tiers instruct the BimlCompiler to compile files from lowest to highest tier <#@ template tier="1" #> Higher tiers can use and might depend on objects from lower tiers Tier 1 - Create database connections Example: Tier 2 - Create loading packages Tier 3 - Create master package to execute loading packages
  • 44. Split and combine Biml files 1. Create Biml files with specified tiers 2. Select all the tiered Biml files 3. Right-click and click Generate SSIS Packages 1 2 3
  • 45. Behind the scenes: Split and combine Biml files RootNode <#@ template tier="0" #> <Connections> <Databases> <Schemas> <#@ template tier="1" #> <Tables> <Columns> <#@ template tier="2" #> <Packages>
  • 46. <Connections> <Databases> <Schemas>RootNode <#@ template tier="0" #> <Connections> <Databases> <Schemas> <#@ template tier="1" #> <Tables> <Columns> <#@ template tier="2" #> <Packages> compile Behind the scenes: Split and combine Biml files
  • 47. <Connections> <Databases> <Schemas>RootNode <#@ template tier="0" #> <Connections> <Databases> <Schemas> <#@ template tier="1" #> <Tables> <Columns> <#@ template tier="2" #> <Packages> use Behind the scenes: Split and combine Biml files
  • 48. <Connections> <Databases> <Schemas> <Tables> <Columns> RootNode <#@ template tier="0" #> <Connections> <Databases> <Schemas> <#@ template tier="1" #> <Tables> <Columns> <#@ template tier="2" #> <Packages> compile Behind the scenes: Split and combine Biml files
  • 49. <Connections> <Databases> <Schemas> <Tables> <Columns> RootNode <#@ template tier="0" #> <Connections> <Databases> <Schemas> <#@ template tier="1" #> <Tables> <Columns> <#@ template tier="2" #> <Packages> use Behind the scenes: Split and combine Biml files
  • 50. <Connections> <Databases> <Schemas> <Tables> <Columns> <Packages> RootNode <#@ template tier="0" #> <Connections> <Databases> <Schemas> <#@ template tier="1" #> <Tables> <Columns> <#@ template tier="2" #> <Packages> compile Behind the scenes: Split and combine Biml files
  • 51. <Connections> <Databases> <Schemas> <Tables> <Columns> <Packages> RootNode <#@ template tier="0" #> <Connections> <Databases> <Schemas> <#@ template tier="1" #> <Tables> <Columns> <#@ template tier="2" #> <Packages> generate Behind the scenes: Split and combine Biml files
  • 52. RootNode <#@ template tier="0" #> <Connections> <Databases> <Schemas> <#@ template tier="1" #> <Tables> <Columns> <#@ template tier="2" #> <Packages> Behind the scenes: Split and combine Biml files
  • 53. Don't Repeat Yourself: Include files Include common code in multiple files and projects Can include many file types: .biml .txt .sql .cs Use the include directive <#@ include file="CommonCode.biml" #> The include directive will be replaced by the content of the included file Include pulls code from the included file into the main file
  • 54. Don't Repeat Yourself: Include files
  • 55. Don't Repeat Yourself: CallBimlScript with parameters Works like a parameterized include File to be called (callee) specifies the input parameters it accepts <#@ property name="Table" type="AstTableNode" #> File that calls (caller) passes input parameters <#=CallBimlScript("CommonCode.biml", Table)#> CallBimlScript pushes parameters from the caller to the callee, and the callee returns code
  • 56. Don't Repeat Yourself: CallBimlScript with parameters
  • 57. Don't Repeat Yourself: CallBimlScript with parameters
  • 58. Demo
  • 59. View compiled Biml Credits: Marco Schreuder (@in2bi) http://blog.in2bi.eu/biml/viewing-or-saving-the- compiled-biml-file-s/ Helper file with high tier (tier="100") Saves output of RootNode.GetBiml() to file
  • 60. What do you do next? 1. Download BIDS Helper 2. Identify your SSIS patterns 3. Rewrite one SSIS package to Biml to learn the basics 4. Expand with BimlScript 5. Get involved in the Biml community
  • 61. Biml on Monday... …BimlBreak the rest of the week 
  • 62. More Biml! Don't miss Rasmus Reinholdt's session Building a meta-driven near realtime ETL solution with BIML and SSIS at 14:55! …and come chat with us in the breaks 