O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

Biml for Beginners: Speed up your SSIS development (SQLSaturday Tallinn)

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio

Confira estes a seguir

1 de 99 Anúncio

Biml for Beginners: Speed up your SSIS development (SQLSaturday Tallinn)

Baixar para ler offline

Biml for Beginners: Speed up your SSIS development (Presented at SQLSaturday Tallinn on November 18th 2017)

Biml for Beginners: Speed up your SSIS development (Presented at SQLSaturday Tallinn on November 18th 2017)

Anúncio
Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (20)

Semelhante a Biml for Beginners: Speed up your SSIS development (SQLSaturday Tallinn) (19)

Anúncio

Mais de Cathrine Wilhelmsen (20)

Mais recentes (20)

Anúncio

Biml for Beginners: Speed up your SSIS development (SQLSaturday Tallinn)

  1. 1. Biml for Beginners: Speed Up Your SSIS Development Cathrine Wilhelmsen SQLSaturday Tallinn · November 18th 2017
  2. 2. Session Description Are you tired of creating and updating the same SSIS packages again and again? Is your wrist hurting from all that clicking, dragging, dropping, connecting and aligning? Do you want to take the next step and really speed up your SSIS development? Say goodbye to repetitive work and hello to Biml, the markup language for Business Intelligence projects. In this session we will look at the basics of Biml. First learn how to use Biml to generate SSIS packages from database metadata. Then see how you can reuse code to implement changes in multiple SSIS packages and projects with just a few clicks. Finally, we will create an example project that you can download and start with to speed up your SSIS development from day one. Stop wasting your valuable time on doing the same things over and over and over again, and see how you can complete in a day what once took more than a week!
  3. 3. Biml Basics Tools & Projects Code Management …the next 60 minutes…
  4. 4. Cathrine Wilhelmsen @cathrinew cathrinew.net Data Warehouse & Business Intelligence Consultant
  5. 5. You… …? SSIS developer Easily bored Tired of repetitive work
  6. 6. Work… …? Long development time Many SSIS packages Frequent requirement changes
  7. 7. job done! new standards ...yay Ever experienced this?
  8. 8. It's time for a change!
  9. 9. 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
  10. 10. Why use Biml? SSIS: Plumbing Biml: Business Logic
  11. 11. SSIS: Plumbing Time wasted on dragging, dropping, connecting, aligning Create the same package over and over again with minor 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
  12. 12. 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
  13. 13. Will Biml solve all your challenges? 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 challenges!
  14. 14. 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!
  15. 15. What do you need?
  16. 16. BimlExpress Free add-in for Visual Studio Code editor with syntax highlighting and Biml Intellisense More frequent updates than BIDS Helper varigence.com/bimlexpress
  17. 17. BimlOnline Free browser-based Biml editor Code editor with Biml and C# Intellisense Reverse-engineer from SSIS to Biml bimlonline.com
  18. 18. BimlStudio Licensed full-featured development environment for Biml Visual designer and metadata modeling Full-stack automation and transformers varigence.com/bimlstudio
  19. 19. How does it work? …generated packages look exactly like manually created packages
  20. 20. Biml syntax <Biml xmlns="http://schemas.varigence.com/biml.xsd"> <Packages> <Package Name="EmptyPackage1"></Package> <Package Name="EmptyPackage2"/> </Packages> </Biml>
  21. 21. Biml syntax: Root Element <Biml xmlns="http://schemas.varigence.com/biml.xsd"> <Packages> <Package Name="EmptyPackage1"></Package> <Package Name="EmptyPackage2"/> </Packages> </Biml>
  22. 22. Biml syntax: Collections of Elements <Biml xmlns="http://schemas.varigence.com/biml.xsd"> <Packages> <Package Name="EmptyPackage1"></Package> <Package Name="EmptyPackage2"/> </Packages> </Biml>
  23. 23. Biml syntax: Elements <Biml xmlns="http://schemas.varigence.com/biml.xsd"> <Packages> <Package Name="EmptyPackage1"></Package> <Package Name="EmptyPackage2"/> </Packages> </Biml>
  24. 24. Biml syntax: Attributes <Biml xmlns="http://schemas.varigence.com/biml.xsd"> <Packages> <Package Name="EmptyPackage1"></Package> <Package Name="EmptyPackage2"/> </Packages> </Biml>
  25. 25. Biml syntax: Full vs. Shorthand Syntax <Biml xmlns="http://schemas.varigence.com/biml.xsd"> <Packages> <Package Name="EmptyPackage1"></Package> <Package Name="EmptyPackage2"/> </Packages> </Biml>
  26. 26. Let's generate some packages!
  27. 27. Goal: Load from source to staging
  28. 28. Add New Biml File from BimlExpress menu…
  29. 29. …or right-click on SSIS project to Add New Biml File
  30. 30. Biml files are placed under Miscellaneous
  31. 31. Check Biml For Errors from BimlExpress menu…
  32. 32. …or right-click on file to Check Biml For Errors
  33. 33. Generate SSIS Packages from BimlExpress menu…
  34. 34. …or right-click on file to Generate SSIS Packages
  35. 35. From Biml to SSIS: Control Flow <Package Name="TruncateLoad" ConstraintMode="Linear"> <Tasks> <ExecuteSQL Name="Truncate Table" ConnectionName="Staging"> <DirectInput>TRUNCATE TABLE DestinationTable</DirectInput> </ExecuteSQL> <Dataflow Name="Load Table"> <Transformations>...</Transformations> </Dataflow> </Tasks> </Package>
  36. 36. From Biml to SSIS: Data Flow <Transformations> <OleDbSource Name="Source" ConnectionName="AW2014"> <ExternalTableInput Table="SourceTable" /> </OleDbSource> <DerivedColumns Name="Add LoadDate"> <Columns> <Column Name="LoadDate" DataType="DateTime"> @[System::StartTime] </Column> </Columns> </DerivedColumns> <OleDbDestination Name="Destination" ConnectionName="Staging"> <ExternalTableOutput Table="DestinationTable" /> </OleDbDestination> </Transformations>
  37. 37. .biml vs .dtsx: human-readable vs ALL THE CODE! (20% zoom)(150% zoom)
  38. 38. Ok, so we can go from Biml to SSIS…
  39. 39. …can we go from SSIS to Biml?
  40. 40. Yes! :)
  41. 41. Let's reverse-engineer some packages!
  42. 42. Package Importer in BimlOnline
  43. 43. Choose a File
  44. 44. Convert from SSIS to Biml
  45. 45. Choose and filter assets
  46. 46. Copy the Biml…
  47. 47. …or Create /Add to BimlOnline Project
  48. 48. The magic is in the
  49. 49. 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 Generate, control and manipulate Biml code
  50. 50. BimlScript Code Nuggets <# … #> Control Nuggets (Control logic) <#= … #> Text Nuggets (Returns string) <#@ … #> Directives (Compiler instructions) <#+ … #> Class Nuggets (Create C# classes)
  51. 51. BimlScript Syntax <# var con = SchemaManager.CreateConnectionNode(...); #> <# var metadata = con.GetDatabaseSchema(); #> <Biml xmlns="http://schemas.varigence.com/biml.xsd"> <Packages> <# foreach (var table in metadata.TableNodes) { #> <Package Name="Load_<#=table.Name#>"></Package> <# } #> </Packages> </Biml>
  52. 52. BimlScript Syntax: Import metadata <# var con = SchemaManager.CreateConnectionNode(...); #> <# var metadata = con.GetDatabaseSchema(); #> <Biml xmlns="http://schemas.varigence.com/biml.xsd"> <Packages> <# foreach (var table in metadata.TableNodes) { #> <Package Name="Load_<#=table.Name#>"></Package> <# } #> </Packages> </Biml>
  53. 53. BimlScript Syntax: Loop over tables <# var con = SchemaManager.CreateConnectionNode(...); #> <# var metadata = con.GetDatabaseSchema(); #> <Biml xmlns="http://schemas.varigence.com/biml.xsd"> <Packages> <# foreach (var table in metadata.TableNodes) { #> <Package Name="Load_<#=table.Name#>"></Package> <# } #> </Packages> </Biml>
  54. 54. BimlScript Syntax: Replace static values <# var con = SchemaManager.CreateConnectionNode(...); #> <# var metadata = con.GetDatabaseSchema(); #> <Biml xmlns="http://schemas.varigence.com/biml.xsd"> <Packages> <# foreach (var table in metadata.TableNodes) { #> <Package Name="Load_<#=table.Name#>"></Package> <# } #> </Packages> </Biml>
  55. 55. Biml vs. BimlScript Generate, control and manipulate Biml with C# XML Language "Just plain text"
  56. 56. How does it work?
  57. 57. Yes, but how does it work?
  58. 58. Yes, but how does it actually work? <# foreach (var table in RootNode.Tables) { #> <Package Name="Load_<#=table.Name#>" /> <# } #> <Package Name="Load_Customer" /> <Package Name="Load_Product" /> <Package Name="Load_Sales" />
  59. 59. Let's generate a lot of packages!
  60. 60. Of course I can create 200 SSIS Packages! …what do you need me to do after lunch?
  61. 61. Code Management
  62. 62. Don't Repeat Yourself Move common code to separate files Centralize and reuse in many projects Update code once for all projects 1. Tiered Biml Files 2. Include Files 3. CallBimlScript
  63. 63. Tiered Biml Files
  64. 64. Tiered Biml Files Split Biml code in multiple files to: • Solve logical dependencies • Build solutions in multiple steps behind the scenes Specify the tier per file by using the template directive: <#@ template tier="2" #>
  65. 65. Tiered Biml Files Biml is compiled step-by-step from lowest to highest tier • Biml files are by default tier 0 • BimlScript files are by default tier 1 In each tier, objects are added in-memory Higher tiers can use objects from lower tiers
  66. 66. What is this RootNode? When working with flat Biml, the <Biml> root element contains collections of elements: <Biml> <Connections>...</Connections> <Databases>...</Databases> <Schemas>...</Schemas> <Tables>...</Tables> <Projects>...</Projects> <Packages>...</Packages> </Biml> When working with BimlScript, the RootNode object contains collections of objects:
  67. 67. Tiered Biml Files: Behind the Scenes <#@ template tier="1" #> <Connections>...</Connections> <#@ template tier="2" #> <Packages>...</Packages> <#@ template tier="3" #> <Package>...</Package>
  68. 68. Tiered Biml Files: Behind the Scenes <#@ template tier="1" #> <Connections>...</Connections> <#@ template tier="2" #> <Packages>...</Packages> <#@ template tier="3" #> <Package>...</Package>
  69. 69. Tiered Biml Files: Behind the Scenes <#@ template tier="1" #> <Connections>...</Connections> <#@ template tier="2" #> <Packages>...</Packages> <#@ template tier="3" #> <Package>...</Package>
  70. 70. Tiered Biml Files: Behind the Scenes <#@ template tier="1" #> <Connections>...</Connections> <#@ template tier="2" #> <Packages>...</Packages> <#@ template tier="3" #> <Package>...</Package>
  71. 71. Tiered Biml Files: Behind the Scenes <#@ template tier="1" #> <Connections>...</Connections> <#@ template tier="2" #> <Packages>...</Packages> <#@ template tier="3" #> <Package>...</Package>
  72. 72. Tiered Biml Files: Behind the Scenes <#@ template tier="1" #> <Connections>...</Connections> <#@ template tier="2" #> <Packages>...</Packages> <#@ template tier="3" #> <Package>...</Package>
  73. 73. Tiered Biml Files: Behind the Scenes <#@ template tier="1" #> <Connections>...</Connections> <#@ template tier="2" #> <Packages>...</Packages> <#@ template tier="3" #> <Package>...</Package>
  74. 74. Tiered Biml Files: Behind the Scenes <#@ template tier="1" #> <Connections>...</Connections> <#@ template tier="2" #> <Packages>...</Packages> <#@ template tier="3" #> <Package>...</Package>
  75. 75. Tiered Biml Files: Behind the Scenes <#@ template tier="1" #> <Connections>...</Connections> <#@ template tier="2" #> <Packages>...</Packages> <#@ template tier="3" #> <Package>...</Package>
  76. 76. Tiered Biml Files: Behind the Scenes <#@ template tier="1" #> <Connections>...</Connections> <#@ template tier="2" #> <Packages>...</Packages> <#@ template tier="3" #> <Package>...</Package>
  77. 77. Tiered Biml Files: Behind the Scenes
  78. 78. How do you use Tiered 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
  79. 79. Include Files
  80. 80. 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
  81. 81. Include Files
  82. 82. Include Files
  83. 83. Include Files
  84. 84. CallBimlScript
  85. 85. CallBimlScript Works like a parameterized include (or stored procedure) File to be called (callee) specifies accepted parameters: <#@ property name="Parameter" type="String" #> File that calls (caller) passes parameters: <#=CallBimlScript("Common.biml", Parameter)#>
  86. 86. CallBimlScript
  87. 87. CallBimlScript
  88. 88. CallBimlScript
  89. 89. CallBimlScript
  90. 90. CallBimlScript
  91. 91. How does this actually work?
  92. 92. Biml Basics Tools & Projects Code Management …the past 60 minutes…
  93. 93. Where can I learn more? Free online training bimlscript.com
  94. 94. Where can I learn more? cathrinew.net/BimlBook
  95. 95. Get things done Start small Start simple Start with ugly code Keep going Expand Improve Deliver often
  96. 96. Biml on Monday… …BimlBreak the rest of the week ☺
  97. 97. Please complete evaluations :)
  98. 98. @cathrinew cathrinew.net linkedin.com/in/cathrinewilhelmsen hi@cathrinew.net slideshare.net/cathrinewilhelmsen Biml resources and references: cathrinew.net/biml

×