SlideShare a Scribd company logo
Biml for Beginners:
Speed up your SSIS development
Cathrine Wilhelmsen · SQLBits XV · May 7th 2016
Session Description
SSIS is a powerful tool for extracting, transforming and loading data, but creating and maintaining a
large number of 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 and over again.
Handling metadata and schema changes is a manual process, and there are no easy ways to
implement new requirements in multiple packages at the same time.
It is time to bring the Don't Repeat Yourself (DRY) software engineering principle to SSIS projects. First
learn how to use Biml and BimlScript to generate SSIS packages from database metadata and
implement changes in all packages with just a few clicks. Then take the DRY principle one step further
and learn how to update all packages in multiple projects by separating and reusing common code.
Speed up your SSIS development by using Biml and BimlScript, and see how you can complete in a day
what once took more than a week!
Tools & Projects
Code Management
The Basics
a
Cathrine Wilhelmsen
@cathrinew
cathrinewilhelmsen.net
Data Warehouse Architect
Business Intelligence Developer
SSIS developer?
Easily bored?
Tired of repetitive work?
You…
Long development time?
Many SSIS packages?
Frequent requirement changes?
Work…
Ever experienced this?
takeoff!
new standards
crash landing!
Ready for a change?
Biml for Beginners: Speed up your SSIS development (SQLBits XV)
Business Intelligence Markup Language
Easy to read and write XML language
Describes business intelligence objects:
• Databases, Schemas, Tables, Views, Columns
• SSIS Packages
• SSAS Cubes
What is Biml?
From Traditional SSIS to Agile SSIS
Traditional SSIS: Plumbing Agile SSIS: Business Logic
Will Biml solve all your problems?
Probably not...
Biml is a tool for generating SSIS packages
Biml is not a pre-defined ETL framework
Biml is not a tool for automated deployment
...but it will solve many problems!
How can Biml help you?
Timesaving: Many SSIS Packages from one Biml file
Reusable: Write once and run on any platform
Flexible: Start simple, expand as you learn
What do you need?
…or you can use the new Biml tools
How does it work?
…generated packages look exactly like manually created packages
Biml syntax
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Packages>
<Package Name="EmptyPackage1"></Package>
<Package Name="EmptyPackage2"/>
</Packages>
</Biml>
<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: Collections of Root Objects
<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>
Biml syntax: Full vs. Shorthand Syntax
Let's generate
some packages!
Ok, so we can go from Biml to SSIS…
…can we go from SSIS to Biml?
Yes! :)
Let's reverse-engineer
some packages!
The magic is in the
What is BimlScript?
Extend Biml with C# or VB code blocks
Import database structure and metadata
Loop over tables and columns
Expressions replace static values
Allows you to control and manipulate Biml code
BimlScript Code Nuggets
<#@ … #> Directives (Compiler instructions)
<# … #> Control Nuggets (Control logic)
<#= … #> Text Nuggets (Returns string)
<#+ … #> Class Nuggets (Create helper classes)
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 Nuggets
<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: Text Nuggets
<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?
Yes, but how does it actuallywork?
<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="Load_Customer"/>
<Package Name="Load_Product"/>
<Package Name="Load_Sales"/>
</Packages>
</Biml>
Biml vs. BimlScript
Automate, control and
manipulate Biml with C#
Flat XML
"Just text"
Let's generate
a lot of packages!
Don't Repeat Yourself
Move common code to separate files
Centralize and reuse in many projects
Update code once for all projects
1. Include files
2. CallBimlScript with parameters
3. Tiered Biml files
Don't Repeat Yourself
BimlExpress vs. BimlOnline
"Black Box"
Only SSIS packages visible
Visual Editors
All in-memory objects visible
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 directive will be replaced by the included file
Include pulls code from the included file into the main file
Include Files
Include Files
Include Files
CallBimlScript with Parameters
Works like a parameterized include
File to be called (callee) specifies 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
CallBimlScript with Parameters
CallBimlScript with Parameters
CallBimlScript with Parameters
CallBimlScript with Parameters
CallBimlScript with Parameters
Tiered Biml Files
Use the template directive:
<#@ template tier="1" #>
Create objects in-memory from lowest to highest tier to:
• Solve logical dependencies
• Simulate manual workflows
In-memory objects are added to the RootNode
Get objects from RootNode in higher tiers
So how does this actually work?
Get things done
Start small
Start simple
Start with ugly code
Keep going
Expand
Improve
Deliver often
Biml on Monday...
…BimlBreak the rest of the week :)
@cathrinew
cathrinewilhelmsen.net
linkedin.com/in/cathrinewilhelmsen
contact@cathrinewilhelmsen.net
slideshare.net/cathrinewilhelmsen
Biml resources and references:
cathrinewilhelmsen.net/biml

More Related Content

PDF
Don't Repeat Yourself - Agile SSIS Development with Biml and BimlScript (SQL ...
PDF
Biml for Beginners - Generating SSIS Packages with BimlScript (SQLSaturday Ex...
PDF
Biml for Beginners: Speed up your SSIS development (SQLSaturday Chicago)
PDF
Level Up Your Biml: Best Practices and Coding Techniques (NTK 2016)
PDF
Biml for Beginners: Speed up your SSIS development (SQLSaturday Iceland)
PDF
Biml for Beginners: Speed up your SSIS development (SQLSaturday Vancouver)
PDF
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Sacrame...
PDF
Level Up Your Biml: Best Practices and Coding Techniques (TUGA IT 2016)
Don't Repeat Yourself - Agile SSIS Development with Biml and BimlScript (SQL ...
Biml for Beginners - Generating SSIS Packages with BimlScript (SQLSaturday Ex...
Biml for Beginners: Speed up your SSIS development (SQLSaturday Chicago)
Level Up Your Biml: Best Practices and Coding Techniques (NTK 2016)
Biml for Beginners: Speed up your SSIS development (SQLSaturday Iceland)
Biml for Beginners: Speed up your SSIS development (SQLSaturday Vancouver)
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Sacrame...
Level Up Your Biml: Best Practices and Coding Techniques (TUGA IT 2016)

What's hot (20)

PDF
Don't Repeat Yourself - An Introduction to Agile SSIS Development (24 Hours o...
PDF
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Denver)
PDF
Biml Academy 2 - Lesson 5: Importing source metadata into Biml
PDF
Generate SSIS packages automatically with Biml and BimlScript (SQLKonferenz 2...
PDF
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Minnesota)
PDF
Biml for Beginners - Generating SSIS Packages with BimlScript (SQLSaturday Go...
PDF
Biml for Beginners: Speed up your SSIS development (SQLSaturday Vienna)
PDF
Biml for Beginners: Speed up your SSIS development (Malta Microsoft Data Plat...
PDF
Upgrading from SSIS Package Deployment to Project Deployment (SQLSaturday Den...
PDF
Biml for Beginners: Speed up your SSIS development (SQLSaturday Tallinn)
PDF
Biml for Beginners: Speed up your SSIS development (SQL PASS Edmonton )
PDF
Level Up Your Biml: Best Practices and Coding Techniques (SQLBits 2018)
PDF
Biml for Beginners: Script and Automate SSIS development (SQLSaturday Chicago)
PDF
Tools and Tips: From Accidental to Efficient Data Warehouse Developer (SQLSat...
PDF
Biml for Beginners: Script and Automate SSIS development (Capital Area SQL Se...
PDF
Biml for Beginners: Speed up your SSIS development (SQLSaturday Nashville)
PDF
Tools and Tips For Data Warehouse Developers (SQLSaturday Slovenia)
PDF
Become a Better Developer with Debugging Techniques for Drupal (and more!)
PDF
IBM Connect 2016 - AD1548 - Building Responsive XPages Applications
PDF
Building your first d8 theme
Don't Repeat Yourself - An Introduction to Agile SSIS Development (24 Hours o...
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Denver)
Biml Academy 2 - Lesson 5: Importing source metadata into Biml
Generate SSIS packages automatically with Biml and BimlScript (SQLKonferenz 2...
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Minnesota)
Biml for Beginners - Generating SSIS Packages with BimlScript (SQLSaturday Go...
Biml for Beginners: Speed up your SSIS development (SQLSaturday Vienna)
Biml for Beginners: Speed up your SSIS development (Malta Microsoft Data Plat...
Upgrading from SSIS Package Deployment to Project Deployment (SQLSaturday Den...
Biml for Beginners: Speed up your SSIS development (SQLSaturday Tallinn)
Biml for Beginners: Speed up your SSIS development (SQL PASS Edmonton )
Level Up Your Biml: Best Practices and Coding Techniques (SQLBits 2018)
Biml for Beginners: Script and Automate SSIS development (SQLSaturday Chicago)
Tools and Tips: From Accidental to Efficient Data Warehouse Developer (SQLSat...
Biml for Beginners: Script and Automate SSIS development (Capital Area SQL Se...
Biml for Beginners: Speed up your SSIS development (SQLSaturday Nashville)
Tools and Tips For Data Warehouse Developers (SQLSaturday Slovenia)
Become a Better Developer with Debugging Techniques for Drupal (and more!)
IBM Connect 2016 - AD1548 - Building Responsive XPages Applications
Building your first d8 theme
Ad

Similar to Biml for Beginners: Speed up your SSIS development (SQLBits XV) (19)

PDF
Biml for Beginners: Script and Automate SSIS development (Malibu SQL Server U...
PDF
Biml for Beginners: Script and Automate SSIS development (24 Hours of PASS: S...
PDF
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Oslo)
PDF
Biml for Beginners: Script and Automate SSIS development (Hybrid VC)
PDF
Level Up Your Biml: Best Practices and Coding Techniques (SQLDay 2018)
PDF
Turducken - Divide and Conquer large GWT apps with multiple teams
PPTX
Improving Drupal Performances
ODP
Packaging for the Maemo Platform
PDF
Bootstrap Framework and Drupal
PPTX
Webpack essentails - feb 19, 2020
PDF
Catalyst - refactor large apps with it and have fun!
PDF
Architecting with Style
PPTX
Building high performance web apps.
PDF
Fewd week7 slides
PPTX
Drupal Camp Manila 2014 - Theming with Zen
PDF
Andrew Mykhaliuk - Sorry, I need to make a build for frontend
PDF
Biml for Beginners: Script and Automate SSIS development (SQLSaturday Finland)
PDF
Designing for magento
PDF
Commit Hooks: the Subtle Hammer
Biml for Beginners: Script and Automate SSIS development (Malibu SQL Server U...
Biml for Beginners: Script and Automate SSIS development (24 Hours of PASS: S...
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Oslo)
Biml for Beginners: Script and Automate SSIS development (Hybrid VC)
Level Up Your Biml: Best Practices and Coding Techniques (SQLDay 2018)
Turducken - Divide and Conquer large GWT apps with multiple teams
Improving Drupal Performances
Packaging for the Maemo Platform
Bootstrap Framework and Drupal
Webpack essentails - feb 19, 2020
Catalyst - refactor large apps with it and have fun!
Architecting with Style
Building high performance web apps.
Fewd week7 slides
Drupal Camp Manila 2014 - Theming with Zen
Andrew Mykhaliuk - Sorry, I need to make a build for frontend
Biml for Beginners: Script and Automate SSIS development (SQLSaturday Finland)
Designing for magento
Commit Hooks: the Subtle Hammer
Ad

More from Cathrine Wilhelmsen (20)

PDF
Fra utvikler til arkitekt: Skap din egen karrierevei ved å utvikle din person...
PDF
One Year in Fabric: Lessons Learned from Implementing Real-World Projects (PA...
PDF
Data Factory in Microsoft Fabric (MsBIP #82)
PDF
Getting Started: Data Factory in Microsoft Fabric (Microsoft Fabric Community...
PDF
Choosing Between Microsoft Fabric, Azure Synapse Analytics and Azure Data Fac...
PDF
Website Analytics in My Pocket using Microsoft Fabric (SQLBits 2024)
PDF
Data Integration using Data Factory in Microsoft Fabric (ESPC Microsoft Fabri...
PDF
Choosing between Fabric, Synapse and Databricks (Data Left Unattended 2023)
PDF
Data Integration with Data Factory (Microsoft Fabric Day Oslo 2023)
PDF
The Battle of the Data Transformation Tools (PASS Data Community Summit 2023)
PDF
Visually Transform Data in Azure Data Factory or Azure Synapse Analytics (PAS...
PDF
Building an End-to-End Solution in Microsoft Fabric: From Dataverse to Power ...
PDF
Website Analytics in my Pocket using Microsoft Fabric (AdaCon 2023)
PDF
Choosing Between Microsoft Fabric, Azure Synapse Analytics and Azure Data Fac...
PDF
Stressed, Depressed, or Burned Out? The Warning Signs You Shouldn't Ignore (D...
PDF
Stressed, Depressed, or Burned Out? The Warning Signs You Shouldn't Ignore (S...
PDF
"I can't keep up!" - Turning Discomfort into Personal Growth in a Fast-Paced ...
PDF
Lessons Learned: Implementing Azure Synapse Analytics in a Rapidly-Changing S...
PDF
6 Tips for Building Confidence as a Public Speaker (SQLBits 2022)
PDF
Lessons Learned: Understanding Pipeline Pricing in Azure Data Factory and Azu...
Fra utvikler til arkitekt: Skap din egen karrierevei ved å utvikle din person...
One Year in Fabric: Lessons Learned from Implementing Real-World Projects (PA...
Data Factory in Microsoft Fabric (MsBIP #82)
Getting Started: Data Factory in Microsoft Fabric (Microsoft Fabric Community...
Choosing Between Microsoft Fabric, Azure Synapse Analytics and Azure Data Fac...
Website Analytics in My Pocket using Microsoft Fabric (SQLBits 2024)
Data Integration using Data Factory in Microsoft Fabric (ESPC Microsoft Fabri...
Choosing between Fabric, Synapse and Databricks (Data Left Unattended 2023)
Data Integration with Data Factory (Microsoft Fabric Day Oslo 2023)
The Battle of the Data Transformation Tools (PASS Data Community Summit 2023)
Visually Transform Data in Azure Data Factory or Azure Synapse Analytics (PAS...
Building an End-to-End Solution in Microsoft Fabric: From Dataverse to Power ...
Website Analytics in my Pocket using Microsoft Fabric (AdaCon 2023)
Choosing Between Microsoft Fabric, Azure Synapse Analytics and Azure Data Fac...
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...
"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...
6 Tips for Building Confidence as a Public Speaker (SQLBits 2022)
Lessons Learned: Understanding Pipeline Pricing in Azure Data Factory and Azu...

Recently uploaded (20)

PPT
Reliability_Chapter_ presentation 1221.5784
PDF
Recruitment and Placement PPT.pdfbjfibjdfbjfobj
PPTX
Computer network topology notes for revision
PPT
Miokarditis (Inflamasi pada Otot Jantung)
PDF
.pdf is not working space design for the following data for the following dat...
PPTX
oil_refinery_comprehensive_20250804084928 (1).pptx
PPTX
Introduction to Basics of Ethical Hacking and Penetration Testing -Unit No. 1...
PPT
Chapter 3 METAL JOINING.pptnnnnnnnnnnnnn
PPT
Chapter 2 METAL FORMINGhhhhhhhjjjjmmmmmmmmm
PDF
Clinical guidelines as a resource for EBP(1).pdf
PPTX
05. PRACTICAL GUIDE TO MICROSOFT EXCEL.pptx
PDF
Fluorescence-microscope_Botany_detailed content
PDF
Foundation of Data Science unit number two notes
PPTX
climate analysis of Dhaka ,Banglades.pptx
PDF
Lecture1 pattern recognition............
PPTX
STUDY DESIGN details- Lt Col Maksud (21).pptx
PDF
168300704-gasification-ppt.pdfhghhhsjsjhsuxush
PPTX
Introduction-to-Cloud-ComputingFinal.pptx
PPTX
IBA_Chapter_11_Slides_Final_Accessible.pptx
Reliability_Chapter_ presentation 1221.5784
Recruitment and Placement PPT.pdfbjfibjdfbjfobj
Computer network topology notes for revision
Miokarditis (Inflamasi pada Otot Jantung)
.pdf is not working space design for the following data for the following dat...
oil_refinery_comprehensive_20250804084928 (1).pptx
Introduction to Basics of Ethical Hacking and Penetration Testing -Unit No. 1...
Chapter 3 METAL JOINING.pptnnnnnnnnnnnnn
Chapter 2 METAL FORMINGhhhhhhhjjjjmmmmmmmmm
Clinical guidelines as a resource for EBP(1).pdf
05. PRACTICAL GUIDE TO MICROSOFT EXCEL.pptx
Fluorescence-microscope_Botany_detailed content
Foundation of Data Science unit number two notes
climate analysis of Dhaka ,Banglades.pptx
Lecture1 pattern recognition............
STUDY DESIGN details- Lt Col Maksud (21).pptx
168300704-gasification-ppt.pdfhghhhsjsjhsuxush
Introduction-to-Cloud-ComputingFinal.pptx
IBA_Chapter_11_Slides_Final_Accessible.pptx

Biml for Beginners: Speed up your SSIS development (SQLBits XV)