2. Thank you to our sponsors!
SQL SATURDAY | #516 | REYKJAVIK 2016
3. 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!
11. What is Biml?
Business Intelligence Markup Language
Easy to read and write XML language
Describes business intelligence objects:
• Databases, Schemas, Tables, Views, Columns
• SSIS Packages
• SSAS Cubes
13. SSIS: Plumbing
Time wasted on dragging, dropping, connecting, aligning
Create the same package over and over and over again with just a few changes
Standards, patterns and templates must be defined up-front
Changes must be done in every single package
High risk of manual errors
More packages, more time
14. Biml: Business Logic
Spend time on what is unique in a package
Create a pattern once and reuse for all similar packages
Handle scope and requirement changes quickly and easily
Changes can be applied to all packages at once
Lower risk of manual errors
Longer time to start, but then reuse and scale
15. Will Biml solve all your challenges?
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 challenges!
16. How can Biml help you?
Biml is great for large projects with common patterns…
Timesaving: Many SSIS packages from one Biml file
Reusable: Write once and run on any platform
Flexible: Start simple, expand as you learn
…but is also useful for smaller projects!
53. 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 generate, control and manipulate Biml code
65. 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
67. 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
Works like an automated Copy & Paste
71. CallBimlScript with Parameters
Works like a parameterized include (or stored procedure)
File to be called (callee) specifies input parameters it accepts
<#@ property name="Parameter" type="String" #>
File that calls (caller) passes input parameters
77. Tiered Biml Files
Split Biml code in multiple files and use the template directive:
<#@ template tier="1" #>
Compile Biml from lowest to highest tier to:
• Solve logical dependencies
• Simulate manual workflows
For each tier, objects are added to the RootNode
Higher tiers can use objects from lower tiers
78. What is this RootNode?
When working with flat Biml,
the <Biml> root element contains
collections of elements:
When working with BimlScript,
the RootNode object contains
collections of objects:
93. What do you do next?
1. Install BimlExpress
2. Complete lessons on BimlScript.com
3. Identify your SSIS patterns
4. Rewrite one SSIS package to Biml
(Boost your learning by reverse-engineering with BimlOnline)
5. Expand with BimlScript
6. Separate and reuse common code
7. ...never look back to the days of drag&drop :)