SlideShare uma empresa Scribd logo
1 de 114
Baixar para ler offline
Level Up Your Biml:
Best Practices and Coding Techniques
Cathrine Wilhelmsen, Inmeta
@cathrinew | cathrinew.net
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Abstract
Is your Biml solution starting to remind you of a bowl of tangled spaghetti code? Good! That means you are
solving real problems while saving a lot of time. The next step is to make sure that your solution does not
grow too complex and confusing - you do not want to waste all that saved time on future maintenance!
Attend this session for an overview of Biml best practices and coding techniques. Learn how to improve and
simplify your solution by using some common and some lesser-known Biml features. If standard Biml is not
enough, you can implement custom logic by creating your own C# classes and methods. Finally, see how to
bring everything together in an example project for creating and loading a data mart with facts and
dimensions.
Start improving your code today and level up your Biml in no time!
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
@cathrinew
cathrinew.net
Free online webinar
events
Free 1-day local
training events
Local user groups
around the world
Online special interest
user groups
Business analytics
training
Get involved
Explore
everything
PASS has
to offer
Free Online Resources
Newsletters
PASS.org
Download the GuideBook App
and search: PASS Summit 2018
Follow the QR code link displayed on session
signage throughout the conference venue and
in the program guide
Session
evaluations
Your feedback is
important and valuable.
Go to passSummit.com
3 Ways to Access:
Submit by 5pm Friday, November 16th to win prizes.
Please silence
cell phones
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Biml Tools Staging
Biml for Beginners
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Code ModelManage
Level Up Your Biml
Biml Code
Management
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Don't Repeat Yourself
Refactor and centralize code
Update once for all projects
1. Include Files
2. CallBimlScript
3. C# Code
Include Files
Automated Copy & Paste
Include Files
Works like an automated Copy & Paste
<#@ include file="CommonCode.biml" #>
Code from included file replaces this include directive
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Include Files
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Include Files
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Include Files
CallBimlScript
Parameterized Include with Logic
CallBimlScript
Parameterized include (like a stored procedure)
CallBimlScript file specifies accepted parameters:
<#@ property name="Parameter" type="String" #>
Main file calls and passes parameters:
<#=CallBimlScript("CommonCode.biml", Parameter)#>
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
CallBimlScript
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
CallBimlScript
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
CallBimlScript
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
CallBimlScript
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
CallBimlScript
CallBimlScriptWithOutput
Return Code and Object
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
CallBimlScriptWithOutput
CallBimlScript file specifies accepted parameters:
<#@ property name="ProjectName" type="String" #>
CallBimlScriptWithOutput file also specifies object:
<# CustomOutput.Project = metadata.Project; #>
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
CallBimlScriptWithOutput
Main file defines, passes, and uses output object
in addition to regular parameters:
<# dynamic project; #>
<#=CallBimlScriptWithOutput("Metadata.biml",
out project, "Staging Project")#>
<#=project.SourceConnection#>
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
CallBimlScriptWithOutput
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
CallBimlScriptWithOutput
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
CallBimlScriptWithOutput
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
CallBimlScriptWithOutput
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
CallBimlScriptWithOutput
use CustomOutput
C# Code
Custom Classes and Methods
C# Code: Inline Blocks
<#+ ... #>
<#+ #>
C# Code: Included Files
<#@ include file="CodeBlock.biml" #>
<#+ #>
C# Code: Separate Code Files
<#@ code file="Code.cs" #>
EXAMPLE
Refactoring
Biml Code
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Two Approaches to Refactoring
1. Identify Identical Code → Include Files
2. Identify Patterns → CallBimlScript
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Log Package Execution (Start)
Log Package Execution (Stop)
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Log Package
Execution (Start)
Log Package
Execution (Stop)
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Two Approaches to Refactoring
1. Identify Identical Code → Include Files
2. Identify Patterns → CallBimlScript
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Log Package Execution
Log Package Execution
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Log Package
Execution
Log Package
Execution
DEMO
Auditing
Framework
Don't Repeat Yourself
If you reuse code more than 3 times,
refactor :)
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
+10000 XP
Congratulations! You reached level 60!
Practical
Biml Coding
Annotations and ObjectTags
Store and Pass Metadata Between Biml Files
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Annotations and ObjectTags
Store metadata by attaching tags to Biml objects
Annotations: String values
ObjectTags: Objects
Higher tier files can get tags from lower tier files
Annotations
Create annotations directly in Biml:
<OleDbConnection Name="Dest">
<Annotations>
<Annotation Tag="Schema">stg</Annotation>
</Annotations>
</OleDbConnection>
Use annotations in BimlScript:
RootNode.OleDbConnections["Dest"].GetTag("Schema");
ObjectTags
Create ObjectTags in BimlScript:
RootNode.ObjectTag["Filter"]
= new List<string>{"Product","ProductCategory"};
Use ObjectTags in BimlScript:
var FilteredTables = RootNode.ObjectTag["Filter"];
LINQ
Query and Filter Collections
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
LINQ
One language to query:
SQL Server Databases
XML Documents
Datasets
Collections
Two ways to write queries:
SQL-ish Syntax
Methods
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
LINQ Methods
Sort
OrderBy, Reverse
Filter
Where, OfType
Get
First, Last
Check Collections
All, Any, Contains
Set Operations
Except, Intersect
Project Collections
Select, SelectMany
LINQ Methods Example
var firstConnection = RootNode.Connections.First()
foreach (var table in RootNode.Tables.Where(…))
if (RootNode.Packages.Any(…))
LINQ Methods Example
foreach (var table in RootNode.Tables.Where(…))
if (RootNode.Packages.Any(…))
But what do you put in here?
Lambda Expressions
"A lambda expression is an anonymous
function that you can use to create delegates
or expression tree types"
Lambda Expressions
"A lambda expression is an anonymous
function that you can use to create delegates
or expression tree types"
Lambda Expressions
column => column.Name == "ColumnID"
Lambda Expressions
column => column.Name == "ColumnID"
The arrow ("goes to") is the lambda operator
Lambda Expressions
column => column.Name == "ColumnID"
Input parameter is on the left side
Lambda Expressions
column => column.Name == "ColumnID"
Expression is on the right side
Lambda Expressions
column => column.Name == "ColumnID"
LINQ and Lambda
Chain LINQ Methods and use Lambda Expressions for
simple and powerful querying of collections:
.Where(table => table.Schema.Name == "Production")
.OrderBy(table => table.Name)
Column Methods
Generate SQL from Biml
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
GetColumnList()
GetColumnAssignmentList()
GetColumnComparisonList()
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
GetColumnList
Get columns for SELECT:
[Column1], [Column2], [Column3]
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
GetColumnAssignmentList
Get columns for UPDATE … SET:
[left].[Column1] = [right].[Column1]
,[left].[Column2] = [right].[Column2]
,[left].[Column3] = [right].[Column3]
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
GetColumnComparisonList
Get columns for JOIN … ON:
[left].[Column1] = [right].[Column1]
AND [left].[Column2] = [right].[Column2]
AND [left].[Column3] = [right].[Column3]
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Column Methods and Lambda
Use Lambda Expressions to filter columns:
GetColumnList(column => column.IsUsedInPrimaryKey)
C# Extension Methods
Custom LINQ-style!
Extension Methods
"Make it look like the method belongs to
an object instead of a helper class"
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
From this…
public static string
GetName(AstTableNode table) {...}
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
…to this
public static string
GetName(this AstTableNode table) {...}
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
From this…
HelperClass.GetName(table)
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
…to this
table.GetName()
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
+100000 XP
Congratulations! You reached level 80!
Facts and
Dimensions
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Solution Overview
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Solution Overview
Dimensions
SCD2
Hybrid
SCD1 SCD2
Facts
Trans-
actional
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Facts
Source View
Lookup
Dimension Keys
Insert
New Rows
Load Fact
Get Latest Key
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Dimensions
Source View
Lookup
Existing Rows
Insert
New Rows
Insert
Updated Rows
Truncate
Update Table
Load Dimension
Update Rows
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Solution Overview
Data Warehouse
Facts Dims Update
Staging
Source
Views
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Solution Process
1. Model Facts and Dimensions
2. Generate SQL Scripts
3. Modify Source Views
4. Generate SSIS Packages
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Solution Process
1. Model Facts and Dimensions
2. Generate SQL Scripts
3. Modify Source Views
4. Generate SSIS Packages
80 / 20
Automated
Manual
Facts and Dimensions
Metadata Model in Excel
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Metadata Model
Connections Projects
Tables Columns
EXAMPLE
Metadata
Model in Excel
Facts and Dimensions
Metadata Model in Biml
Facts and Dimensions
Use Biml features to simplify code:
• ScdType on columns
• StaticSource for static and unknown dimension rows
• CloneTable for update tables
ScdType
Define ScdType per column:
<Column Name="DimSK" DataType="Int32"
IsNullable="false" ScdType="SurrogateKey" />
Use instead of custom annotations :)
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
ScdType Values
SurrogateKey
Key
Update
Historical
Audit
Other
Often IDENTITY
Source IDs
SCD1 Columns
SCD2 Columns
ETL Columns
Not used in SCD logic
StaticSource
Define rows to be inserted when table is created:
<Table Name="Table">
<Sources>
<StaticSource Name="TableRows">...</StaticSource>
</Sources>
</Table>
Use instead of separate T-SQL scripts :)
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
StaticSource Values
<StaticSource Name="TableRows">
<Rows>
<Row>
<ColumnValues>
<ColumnValue ColumnName="Col1" Value="-1" />
</ColumnValues>
</Row>
</Rows>
</StaticSource>
CloneTable
Create a copy of a table:
<CloneTable Name="NewTable"
TableName="OriginalSchema.OriginalTable"
SchemaName="Database.NewSchema" />
Use instead of defining tables twice :)
DEMO
Metadata
Model in Biml
SQL Scripts
Drop and Create
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Could not drop object 'Schema.Table'
because it is referenced by a
FOREIGN KEY constraint.
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Drop and Create
Create Order: Dim1 Dim2 Fact1 Fact2
Fact2 Fact1 Dim2 Dim1Drop Order:
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Drop and Create
Create Order: Dim1 Dim2 Fact1 Fact2
Fact2 Fact1 Dim2 Dim1Drop Order:
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Topological Sort
"A topological sort of a directed graph is a linear
ordering of its vertices such that for every directed
edge uv from vertex u to vertex v, u comes before
v in the ordering"
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Topological Sort
"A topological sort of a directed graph is a linear
ordering of its vertices such that for every directed
edge uv from vertex u to vertex v, u comes before
v in the ordering"
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Topological Sort
"Sorts objects by dependencies.
For example dimensions before fact tables."
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Topological Sort
"Sorts objects by dependencies.
For example dimensions before fact tables."
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Topological Sort
var dependentTables =
DependencyAnalysis.TopologicalSort<AstTableNode> (
RootNode.Tables,
t => t.Columns
.OfType<AstTableColumnTableReferenceNode>()
.Select(c => c.ForeignTable)
);
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Topological Sort: Method
var dependentTables =
DependencyAnalysis.TopologicalSort<AstTableNode> (
RootNode.Tables,
t => t.Columns
.OfType<AstTableColumnTableReferenceNode>()
.Select(c => c.ForeignTable)
);
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Topological Sort: Collection to Sort
var dependentTables =
DependencyAnalysis.TopologicalSort<AstTableNode> (
RootNode.Tables,
t => t.Columns
.OfType<AstTableColumnTableReferenceNode>()
.Select(c => c.ForeignTable)
);
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Topological Sort: How to Sort
var dependentTables =
DependencyAnalysis.TopologicalSort<AstTableNode> (
RootNode.Tables,
t => t.Columns
.OfType<AstTableColumnTableReferenceNode>()
.Select(c => c.ForeignTable)
);
DEMO
Facts and
Dimensions
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
+1000000 XP
Congratulations! You reached level 100!
Get things done
Start small
Start simple
Solve a problem
Keep going
Expand
Improve
Deliver often
© 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
Download the GuideBook App
and search: PASS Summit 2018
Follow the QR code link displayed on session
signage throughout the conference venue and
in the program guide
Session
evaluations
Your feedback is
important and valuable.
Go to passSummit.com
3 Ways to Access:
Submit by 5pm Friday, November 16th to win prizes.
@cathrinew
cathrinew.net
hi@cathrinew.net
cathrinew.net/biml

Mais conteúdo relacionado

Mais procurados

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...
Biml for Beginners: Script and Automate SSIS development (Capital Area SQL Se...Cathrine Wilhelmsen
 
Level Up Your Biml: Best Practices and Coding Techniques (SQLBits 2018)
Level Up Your Biml: Best Practices and Coding Techniques (SQLBits 2018)Level Up Your Biml: Best Practices and Coding Techniques (SQLBits 2018)
Level Up Your Biml: Best Practices and Coding Techniques (SQLBits 2018)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 (SQLSaturday Chicago)Cathrine Wilhelmsen
 
O365Engage17 - Using Exchange Online to Classify and Secure Mail
O365Engage17 - Using Exchange Online to Classify and Secure MailO365Engage17 - Using Exchange Online to Classify and Secure Mail
O365Engage17 - Using Exchange Online to Classify and Secure MailNCCOMMS
 
O365Engage17 - Options for staying compliant in exchange online
O365Engage17 - Options for staying compliant in exchange onlineO365Engage17 - Options for staying compliant in exchange online
O365Engage17 - Options for staying compliant in exchange onlineNCCOMMS
 
O365Engage17 - Protecting O365 Data in a Modern World
O365Engage17 - Protecting O365 Data in a Modern WorldO365Engage17 - Protecting O365 Data in a Modern World
O365Engage17 - Protecting O365 Data in a Modern WorldNCCOMMS
 
O365Engage17 - Smart Email Migration Knowing What’s Lurking in the ‘Dark Corn...
O365Engage17 - Smart Email Migration Knowing What’s Lurking in the ‘Dark Corn...O365Engage17 - Smart Email Migration Knowing What’s Lurking in the ‘Dark Corn...
O365Engage17 - Smart Email Migration Knowing What’s Lurking in the ‘Dark Corn...NCCOMMS
 
2018 10-17 J1 3C - Hybrid architectures with Amazon Web Services, Office 365 ...
2018 10-17 J1 3C - Hybrid architectures with Amazon Web Services, Office 365 ...2018 10-17 J1 3C - Hybrid architectures with Amazon Web Services, Office 365 ...
2018 10-17 J1 3C - Hybrid architectures with Amazon Web Services, Office 365 ...Modern Workplace Conference Paris
 
Event Sourcing with Microservices
Event Sourcing with MicroservicesEvent Sourcing with Microservices
Event Sourcing with MicroservicesRalph Winzinger
 

Mais procurados (9)

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...
Biml for Beginners: Script and Automate SSIS development (Capital Area SQL Se...
 
Level Up Your Biml: Best Practices and Coding Techniques (SQLBits 2018)
Level Up Your Biml: Best Practices and Coding Techniques (SQLBits 2018)Level Up Your Biml: Best Practices and Coding Techniques (SQLBits 2018)
Level Up Your Biml: Best Practices and Coding Techniques (SQLBits 2018)
 
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 (SQLSaturday Chicago)
 
O365Engage17 - Using Exchange Online to Classify and Secure Mail
O365Engage17 - Using Exchange Online to Classify and Secure MailO365Engage17 - Using Exchange Online to Classify and Secure Mail
O365Engage17 - Using Exchange Online to Classify and Secure Mail
 
O365Engage17 - Options for staying compliant in exchange online
O365Engage17 - Options for staying compliant in exchange onlineO365Engage17 - Options for staying compliant in exchange online
O365Engage17 - Options for staying compliant in exchange online
 
O365Engage17 - Protecting O365 Data in a Modern World
O365Engage17 - Protecting O365 Data in a Modern WorldO365Engage17 - Protecting O365 Data in a Modern World
O365Engage17 - Protecting O365 Data in a Modern World
 
O365Engage17 - Smart Email Migration Knowing What’s Lurking in the ‘Dark Corn...
O365Engage17 - Smart Email Migration Knowing What’s Lurking in the ‘Dark Corn...O365Engage17 - Smart Email Migration Knowing What’s Lurking in the ‘Dark Corn...
O365Engage17 - Smart Email Migration Knowing What’s Lurking in the ‘Dark Corn...
 
2018 10-17 J1 3C - Hybrid architectures with Amazon Web Services, Office 365 ...
2018 10-17 J1 3C - Hybrid architectures with Amazon Web Services, Office 365 ...2018 10-17 J1 3C - Hybrid architectures with Amazon Web Services, Office 365 ...
2018 10-17 J1 3C - Hybrid architectures with Amazon Web Services, Office 365 ...
 
Event Sourcing with Microservices
Event Sourcing with MicroservicesEvent Sourcing with Microservices
Event Sourcing with Microservices
 

Semelhante a Level Up Your Biml: Best Practices and Coding Techniques (PASS Summit 2018)

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)
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Denver)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)
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Minnesota)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)
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Oslo)Cathrine Wilhelmsen
 
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Sacrame...
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Sacrame...Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Sacrame...
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Sacrame...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...
Don't Repeat Yourself - An Introduction to Agile SSIS Development (24 Hours o...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)
Level Up Your Biml: Best Practices and Coding Techniques (TUGA IT 2016)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)
Level Up Your Biml: Best Practices and Coding Techniques (NTK 2016)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)
Biml for Beginners: Speed up your SSIS development (SQLSaturday Vienna)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: Speed up your SSIS development (SQL PASS Edmonton )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...
Biml for Beginners: Speed up your SSIS development (Malta Microsoft Data Plat...Cathrine Wilhelmsen
 
KNIME Data Science Learnathon: From Raw Data To Deployment - Paris - November...
KNIME Data Science Learnathon: From Raw Data To Deployment - Paris - November...KNIME Data Science Learnathon: From Raw Data To Deployment - Paris - November...
KNIME Data Science Learnathon: From Raw Data To Deployment - Paris - November...KNIMESlides
 
C++ Programming Class Creation Program Assignment Instructions
C++ Programming Class Creation Program Assignment InstructionsC++ Programming Class Creation Program Assignment Instructions
C++ Programming Class Creation Program Assignment InstructionsTawnaDelatorrejs
 
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 (SQLSaturday Nashville)Cathrine Wilhelmsen
 
From raw data to deployment
From raw data to deployment From raw data to deployment
From raw data to deployment KNIMESlides
 
HawkBridge - Picture This! Using CA 2E with Graphical Tools v4
HawkBridge - Picture This! Using CA 2E with Graphical Tools v4HawkBridge - Picture This! Using CA 2E with Graphical Tools v4
HawkBridge - Picture This! Using CA 2E with Graphical Tools v4Darryl Millington
 
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)
Biml for Beginners: Speed up your SSIS development (SQLSaturday Vancouver)Cathrine Wilhelmsen
 
CI/CD Templates: Continuous Delivery of ML-Enabled Data Pipelines on Databricks
CI/CD Templates: Continuous Delivery of ML-Enabled Data Pipelines on DatabricksCI/CD Templates: Continuous Delivery of ML-Enabled Data Pipelines on Databricks
CI/CD Templates: Continuous Delivery of ML-Enabled Data Pipelines on DatabricksDatabricks
 
Real-Time Web Analytics with Amazon Kinesis Data Analytics (ADT401) - AWS re:...
Real-Time Web Analytics with Amazon Kinesis Data Analytics (ADT401) - AWS re:...Real-Time Web Analytics with Amazon Kinesis Data Analytics (ADT401) - AWS re:...
Real-Time Web Analytics with Amazon Kinesis Data Analytics (ADT401) - AWS re:...Amazon Web Services
 
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...
S.M.A.R.T. Biml - Standardize, Model, Automate, Reuse and Transform (SQLSatur...Cathrine Wilhelmsen
 

Semelhante a Level Up Your Biml: Best Practices and Coding Techniques (PASS Summit 2018) (20)

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)
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Denver)
 
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)
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Minnesota)
 
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)
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Oslo)
 
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Sacrame...
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Sacrame...Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Sacrame...
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Sacrame...
 
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...
Don't Repeat Yourself - An Introduction to Agile SSIS Development (24 Hours o...
 
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)
Level Up Your Biml: Best Practices and Coding Techniques (TUGA IT 2016)
 
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)
Level Up Your Biml: Best Practices and Coding Techniques (NTK 2016)
 
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)
Biml for Beginners: Speed up your SSIS development (SQLSaturday Vienna)
 
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: Speed up your SSIS development (SQL PASS Edmonton )
 
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...
Biml for Beginners: Speed up your SSIS development (Malta Microsoft Data Plat...
 
KNIME Data Science Learnathon: From Raw Data To Deployment - Paris - November...
KNIME Data Science Learnathon: From Raw Data To Deployment - Paris - November...KNIME Data Science Learnathon: From Raw Data To Deployment - Paris - November...
KNIME Data Science Learnathon: From Raw Data To Deployment - Paris - November...
 
Introduction-to-Keil.ppt
Introduction-to-Keil.pptIntroduction-to-Keil.ppt
Introduction-to-Keil.ppt
 
C++ Programming Class Creation Program Assignment Instructions
C++ Programming Class Creation Program Assignment InstructionsC++ Programming Class Creation Program Assignment Instructions
C++ Programming Class Creation Program Assignment Instructions
 
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 (SQLSaturday Nashville)
 
From raw data to deployment
From raw data to deployment From raw data to deployment
From raw data to deployment
 
HawkBridge - Picture This! Using CA 2E with Graphical Tools v4
HawkBridge - Picture This! Using CA 2E with Graphical Tools v4HawkBridge - Picture This! Using CA 2E with Graphical Tools v4
HawkBridge - Picture This! Using CA 2E with Graphical Tools v4
 
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)
Biml for Beginners: Speed up your SSIS development (SQLSaturday Vancouver)
 
CI/CD Templates: Continuous Delivery of ML-Enabled Data Pipelines on Databricks
CI/CD Templates: Continuous Delivery of ML-Enabled Data Pipelines on DatabricksCI/CD Templates: Continuous Delivery of ML-Enabled Data Pipelines on Databricks
CI/CD Templates: Continuous Delivery of ML-Enabled Data Pipelines on Databricks
 
Real-Time Web Analytics with Amazon Kinesis Data Analytics (ADT401) - AWS re:...
Real-Time Web Analytics with Amazon Kinesis Data Analytics (ADT401) - AWS re:...Real-Time Web Analytics with Amazon Kinesis Data Analytics (ADT401) - AWS re:...
Real-Time Web Analytics with Amazon Kinesis Data Analytics (ADT401) - AWS re:...
 
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...
S.M.A.R.T. Biml - Standardize, Model, Automate, Reuse and Transform (SQLSatur...
 

Mais de Cathrine Wilhelmsen

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

Mais de Cathrine Wilhelmsen (20)

Data Factory in Microsoft Fabric (MsBIP #82)
Data Factory in Microsoft Fabric (MsBIP #82)Data Factory in Microsoft Fabric (MsBIP #82)
Data Factory in Microsoft Fabric (MsBIP #82)
 
Getting Started: Data Factory in Microsoft Fabric (Microsoft Fabric Community...
Getting Started: Data Factory in Microsoft Fabric (Microsoft Fabric Community...Getting Started: Data Factory in Microsoft Fabric (Microsoft Fabric Community...
Getting Started: Data Factory in Microsoft Fabric (Microsoft Fabric Community...
 
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...
Choosing Between Microsoft Fabric, Azure Synapse Analytics and Azure Data Fac...
 
Website Analytics in My Pocket using Microsoft Fabric (SQLBits 2024)
Website Analytics in My Pocket using Microsoft Fabric (SQLBits 2024)Website Analytics in My Pocket using Microsoft Fabric (SQLBits 2024)
Website Analytics in My Pocket using Microsoft Fabric (SQLBits 2024)
 
Data Integration using Data Factory in Microsoft Fabric (ESPC Microsoft Fabri...
Data Integration using Data Factory in Microsoft Fabric (ESPC Microsoft Fabri...Data Integration using Data Factory in Microsoft Fabric (ESPC Microsoft Fabri...
Data Integration using Data Factory in Microsoft Fabric (ESPC Microsoft Fabri...
 
Choosing between Fabric, Synapse and Databricks (Data Left Unattended 2023)
Choosing between Fabric, Synapse and Databricks (Data Left Unattended 2023)Choosing between Fabric, Synapse and Databricks (Data Left Unattended 2023)
Choosing between Fabric, Synapse and Databricks (Data Left Unattended 2023)
 
Data Integration with Data Factory (Microsoft Fabric Day Oslo 2023)
Data Integration with Data Factory (Microsoft Fabric Day Oslo 2023)Data Integration with Data Factory (Microsoft Fabric Day Oslo 2023)
Data Integration with Data Factory (Microsoft Fabric Day Oslo 2023)
 
The Battle of the Data Transformation Tools (PASS Data Community Summit 2023)
The Battle of the Data Transformation Tools (PASS Data Community Summit 2023)The Battle of the Data Transformation Tools (PASS Data Community Summit 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...
Visually Transform Data in Azure Data Factory or Azure Synapse Analytics (PAS...Visually Transform Data in Azure Data Factory or Azure Synapse Analytics (PAS...
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 ...
Building an End-to-End Solution in Microsoft Fabric: From Dataverse to Power ...Building an End-to-End Solution in Microsoft Fabric: From Dataverse to Power ...
Building an End-to-End Solution in Microsoft Fabric: From Dataverse to Power ...
 
Website Analytics in my Pocket using Microsoft Fabric (AdaCon 2023)
Website Analytics in my Pocket using Microsoft Fabric (AdaCon 2023)Website Analytics in my Pocket using Microsoft Fabric (AdaCon 2023)
Website Analytics in my Pocket using Microsoft Fabric (AdaCon 2023)
 
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...
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 (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...
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 ...
"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...
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)
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...
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...
 
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...
 
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...
 

Último

INTERNSHIP ON PURBASHA COMPOSITE TEX LTD
INTERNSHIP ON PURBASHA COMPOSITE TEX LTDINTERNSHIP ON PURBASHA COMPOSITE TEX LTD
INTERNSHIP ON PURBASHA COMPOSITE TEX LTDRafezzaman
 
Consent & Privacy Signals on Google *Pixels* - MeasureCamp Amsterdam 2024
Consent & Privacy Signals on Google *Pixels* - MeasureCamp Amsterdam 2024Consent & Privacy Signals on Google *Pixels* - MeasureCamp Amsterdam 2024
Consent & Privacy Signals on Google *Pixels* - MeasureCamp Amsterdam 2024thyngster
 
PKS-TGC-1084-630 - Stage 1 Proposal.pptx
PKS-TGC-1084-630 - Stage 1 Proposal.pptxPKS-TGC-1084-630 - Stage 1 Proposal.pptx
PKS-TGC-1084-630 - Stage 1 Proposal.pptxPramod Kumar Srivastava
 
Indian Call Girls in Abu Dhabi O5286O24O8 Call Girls in Abu Dhabi By Independ...
Indian Call Girls in Abu Dhabi O5286O24O8 Call Girls in Abu Dhabi By Independ...Indian Call Girls in Abu Dhabi O5286O24O8 Call Girls in Abu Dhabi By Independ...
Indian Call Girls in Abu Dhabi O5286O24O8 Call Girls in Abu Dhabi By Independ...dajasot375
 
IMA MSN - Medical Students Network (2).pptx
IMA MSN - Medical Students Network (2).pptxIMA MSN - Medical Students Network (2).pptx
IMA MSN - Medical Students Network (2).pptxdolaknnilon
 
Beautiful Sapna Vip Call Girls Hauz Khas 9711199012 Call /Whatsapps
Beautiful Sapna Vip  Call Girls Hauz Khas 9711199012 Call /WhatsappsBeautiful Sapna Vip  Call Girls Hauz Khas 9711199012 Call /Whatsapps
Beautiful Sapna Vip Call Girls Hauz Khas 9711199012 Call /Whatsappssapnasaifi408
 
How we prevented account sharing with MFA
How we prevented account sharing with MFAHow we prevented account sharing with MFA
How we prevented account sharing with MFAAndrei Kaleshka
 
办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一
办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一
办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一F sss
 
Identifying Appropriate Test Statistics Involving Population Mean
Identifying Appropriate Test Statistics Involving Population MeanIdentifying Appropriate Test Statistics Involving Population Mean
Identifying Appropriate Test Statistics Involving Population MeanMYRABACSAFRA2
 
Kantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdf
Kantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdfKantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdf
Kantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdfSocial Samosa
 
dokumen.tips_chapter-4-transient-heat-conduction-mehmet-kanoglu.ppt
dokumen.tips_chapter-4-transient-heat-conduction-mehmet-kanoglu.pptdokumen.tips_chapter-4-transient-heat-conduction-mehmet-kanoglu.ppt
dokumen.tips_chapter-4-transient-heat-conduction-mehmet-kanoglu.pptSonatrach
 
Generative AI for Social Good at Open Data Science East 2024
Generative AI for Social Good at Open Data Science East 2024Generative AI for Social Good at Open Data Science East 2024
Generative AI for Social Good at Open Data Science East 2024Colleen Farrelly
 
DBA Basics: Getting Started with Performance Tuning.pdf
DBA Basics: Getting Started with Performance Tuning.pdfDBA Basics: Getting Started with Performance Tuning.pdf
DBA Basics: Getting Started with Performance Tuning.pdfJohn Sterrett
 
2006_GasProcessing_HB (1).pdf HYDROCARBON PROCESSING
2006_GasProcessing_HB (1).pdf HYDROCARBON PROCESSING2006_GasProcessing_HB (1).pdf HYDROCARBON PROCESSING
2006_GasProcessing_HB (1).pdf HYDROCARBON PROCESSINGmarianagonzalez07
 
9711147426✨Call In girls Gurgaon Sector 31. SCO 25 escort service
9711147426✨Call In girls Gurgaon Sector 31. SCO 25 escort service9711147426✨Call In girls Gurgaon Sector 31. SCO 25 escort service
9711147426✨Call In girls Gurgaon Sector 31. SCO 25 escort servicejennyeacort
 
Call Girls In Dwarka 9654467111 Escorts Service
Call Girls In Dwarka 9654467111 Escorts ServiceCall Girls In Dwarka 9654467111 Escorts Service
Call Girls In Dwarka 9654467111 Escorts ServiceSapana Sha
 
RABBIT: A CLI tool for identifying bots based on their GitHub events.
RABBIT: A CLI tool for identifying bots based on their GitHub events.RABBIT: A CLI tool for identifying bots based on their GitHub events.
RABBIT: A CLI tool for identifying bots based on their GitHub events.natarajan8993
 
Top 5 Best Data Analytics Courses In Queens
Top 5 Best Data Analytics Courses In QueensTop 5 Best Data Analytics Courses In Queens
Top 5 Best Data Analytics Courses In Queensdataanalyticsqueen03
 
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样vhwb25kk
 

Último (20)

INTERNSHIP ON PURBASHA COMPOSITE TEX LTD
INTERNSHIP ON PURBASHA COMPOSITE TEX LTDINTERNSHIP ON PURBASHA COMPOSITE TEX LTD
INTERNSHIP ON PURBASHA COMPOSITE TEX LTD
 
Consent & Privacy Signals on Google *Pixels* - MeasureCamp Amsterdam 2024
Consent & Privacy Signals on Google *Pixels* - MeasureCamp Amsterdam 2024Consent & Privacy Signals on Google *Pixels* - MeasureCamp Amsterdam 2024
Consent & Privacy Signals on Google *Pixels* - MeasureCamp Amsterdam 2024
 
PKS-TGC-1084-630 - Stage 1 Proposal.pptx
PKS-TGC-1084-630 - Stage 1 Proposal.pptxPKS-TGC-1084-630 - Stage 1 Proposal.pptx
PKS-TGC-1084-630 - Stage 1 Proposal.pptx
 
Indian Call Girls in Abu Dhabi O5286O24O8 Call Girls in Abu Dhabi By Independ...
Indian Call Girls in Abu Dhabi O5286O24O8 Call Girls in Abu Dhabi By Independ...Indian Call Girls in Abu Dhabi O5286O24O8 Call Girls in Abu Dhabi By Independ...
Indian Call Girls in Abu Dhabi O5286O24O8 Call Girls in Abu Dhabi By Independ...
 
IMA MSN - Medical Students Network (2).pptx
IMA MSN - Medical Students Network (2).pptxIMA MSN - Medical Students Network (2).pptx
IMA MSN - Medical Students Network (2).pptx
 
Beautiful Sapna Vip Call Girls Hauz Khas 9711199012 Call /Whatsapps
Beautiful Sapna Vip  Call Girls Hauz Khas 9711199012 Call /WhatsappsBeautiful Sapna Vip  Call Girls Hauz Khas 9711199012 Call /Whatsapps
Beautiful Sapna Vip Call Girls Hauz Khas 9711199012 Call /Whatsapps
 
How we prevented account sharing with MFA
How we prevented account sharing with MFAHow we prevented account sharing with MFA
How we prevented account sharing with MFA
 
办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一
办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一
办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一
 
Identifying Appropriate Test Statistics Involving Population Mean
Identifying Appropriate Test Statistics Involving Population MeanIdentifying Appropriate Test Statistics Involving Population Mean
Identifying Appropriate Test Statistics Involving Population Mean
 
Kantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdf
Kantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdfKantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdf
Kantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdf
 
dokumen.tips_chapter-4-transient-heat-conduction-mehmet-kanoglu.ppt
dokumen.tips_chapter-4-transient-heat-conduction-mehmet-kanoglu.pptdokumen.tips_chapter-4-transient-heat-conduction-mehmet-kanoglu.ppt
dokumen.tips_chapter-4-transient-heat-conduction-mehmet-kanoglu.ppt
 
E-Commerce Order PredictionShraddha Kamble.pptx
E-Commerce Order PredictionShraddha Kamble.pptxE-Commerce Order PredictionShraddha Kamble.pptx
E-Commerce Order PredictionShraddha Kamble.pptx
 
Generative AI for Social Good at Open Data Science East 2024
Generative AI for Social Good at Open Data Science East 2024Generative AI for Social Good at Open Data Science East 2024
Generative AI for Social Good at Open Data Science East 2024
 
DBA Basics: Getting Started with Performance Tuning.pdf
DBA Basics: Getting Started with Performance Tuning.pdfDBA Basics: Getting Started with Performance Tuning.pdf
DBA Basics: Getting Started with Performance Tuning.pdf
 
2006_GasProcessing_HB (1).pdf HYDROCARBON PROCESSING
2006_GasProcessing_HB (1).pdf HYDROCARBON PROCESSING2006_GasProcessing_HB (1).pdf HYDROCARBON PROCESSING
2006_GasProcessing_HB (1).pdf HYDROCARBON PROCESSING
 
9711147426✨Call In girls Gurgaon Sector 31. SCO 25 escort service
9711147426✨Call In girls Gurgaon Sector 31. SCO 25 escort service9711147426✨Call In girls Gurgaon Sector 31. SCO 25 escort service
9711147426✨Call In girls Gurgaon Sector 31. SCO 25 escort service
 
Call Girls In Dwarka 9654467111 Escorts Service
Call Girls In Dwarka 9654467111 Escorts ServiceCall Girls In Dwarka 9654467111 Escorts Service
Call Girls In Dwarka 9654467111 Escorts Service
 
RABBIT: A CLI tool for identifying bots based on their GitHub events.
RABBIT: A CLI tool for identifying bots based on their GitHub events.RABBIT: A CLI tool for identifying bots based on their GitHub events.
RABBIT: A CLI tool for identifying bots based on their GitHub events.
 
Top 5 Best Data Analytics Courses In Queens
Top 5 Best Data Analytics Courses In QueensTop 5 Best Data Analytics Courses In Queens
Top 5 Best Data Analytics Courses In Queens
 
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样
 

Level Up Your Biml: Best Practices and Coding Techniques (PASS Summit 2018)

  • 1. Level Up Your Biml: Best Practices and Coding Techniques Cathrine Wilhelmsen, Inmeta @cathrinew | cathrinew.net
  • 2. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Abstract Is your Biml solution starting to remind you of a bowl of tangled spaghetti code? Good! That means you are solving real problems while saving a lot of time. The next step is to make sure that your solution does not grow too complex and confusing - you do not want to waste all that saved time on future maintenance! Attend this session for an overview of Biml best practices and coding techniques. Learn how to improve and simplify your solution by using some common and some lesser-known Biml features. If standard Biml is not enough, you can implement custom logic by creating your own C# classes and methods. Finally, see how to bring everything together in an example project for creating and loading a data mart with facts and dimensions. Start improving your code today and level up your Biml in no time!
  • 3. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) @cathrinew cathrinew.net
  • 4. Free online webinar events Free 1-day local training events Local user groups around the world Online special interest user groups Business analytics training Get involved Explore everything PASS has to offer Free Online Resources Newsletters PASS.org
  • 5. Download the GuideBook App and search: PASS Summit 2018 Follow the QR code link displayed on session signage throughout the conference venue and in the program guide Session evaluations Your feedback is important and valuable. Go to passSummit.com 3 Ways to Access: Submit by 5pm Friday, November 16th to win prizes.
  • 7. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
  • 8. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Biml Tools Staging Biml for Beginners
  • 9. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Code ModelManage Level Up Your Biml
  • 11. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Don't Repeat Yourself Refactor and centralize code Update once for all projects 1. Include Files 2. CallBimlScript 3. C# Code
  • 13. Include Files Works like an automated Copy & Paste <#@ include file="CommonCode.biml" #> Code from included file replaces this include directive
  • 14. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Include Files
  • 15. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Include Files
  • 16. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Include Files
  • 18. CallBimlScript Parameterized include (like a stored procedure) CallBimlScript file specifies accepted parameters: <#@ property name="Parameter" type="String" #> Main file calls and passes parameters: <#=CallBimlScript("CommonCode.biml", Parameter)#>
  • 19. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) CallBimlScript
  • 20. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) CallBimlScript
  • 21. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) CallBimlScript
  • 22. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) CallBimlScript
  • 23. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) CallBimlScript
  • 25. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) CallBimlScriptWithOutput CallBimlScript file specifies accepted parameters: <#@ property name="ProjectName" type="String" #> CallBimlScriptWithOutput file also specifies object: <# CustomOutput.Project = metadata.Project; #>
  • 26. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) CallBimlScriptWithOutput Main file defines, passes, and uses output object in addition to regular parameters: <# dynamic project; #> <#=CallBimlScriptWithOutput("Metadata.biml", out project, "Staging Project")#> <#=project.SourceConnection#>
  • 27. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) CallBimlScriptWithOutput
  • 28. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) CallBimlScriptWithOutput
  • 29. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) CallBimlScriptWithOutput
  • 30. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) CallBimlScriptWithOutput
  • 31. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) CallBimlScriptWithOutput use CustomOutput
  • 32. C# Code Custom Classes and Methods
  • 33. C# Code: Inline Blocks <#+ ... #> <#+ #>
  • 34. C# Code: Included Files <#@ include file="CodeBlock.biml" #> <#+ #>
  • 35. C# Code: Separate Code Files <#@ code file="Code.cs" #>
  • 37. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Two Approaches to Refactoring 1. Identify Identical Code → Include Files 2. Identify Patterns → CallBimlScript
  • 38. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Log Package Execution (Start) Log Package Execution (Stop)
  • 39. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Log Package Execution (Start) Log Package Execution (Stop)
  • 40. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Two Approaches to Refactoring 1. Identify Identical Code → Include Files 2. Identify Patterns → CallBimlScript
  • 41. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Log Package Execution Log Package Execution
  • 42. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Log Package Execution Log Package Execution
  • 44. Don't Repeat Yourself If you reuse code more than 3 times, refactor :)
  • 45. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) +10000 XP Congratulations! You reached level 60!
  • 47. Annotations and ObjectTags Store and Pass Metadata Between Biml Files
  • 48. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Annotations and ObjectTags Store metadata by attaching tags to Biml objects Annotations: String values ObjectTags: Objects Higher tier files can get tags from lower tier files
  • 49. Annotations Create annotations directly in Biml: <OleDbConnection Name="Dest"> <Annotations> <Annotation Tag="Schema">stg</Annotation> </Annotations> </OleDbConnection> Use annotations in BimlScript: RootNode.OleDbConnections["Dest"].GetTag("Schema");
  • 50. ObjectTags Create ObjectTags in BimlScript: RootNode.ObjectTag["Filter"] = new List<string>{"Product","ProductCategory"}; Use ObjectTags in BimlScript: var FilteredTables = RootNode.ObjectTag["Filter"];
  • 51. LINQ Query and Filter Collections
  • 52. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) LINQ One language to query: SQL Server Databases XML Documents Datasets Collections Two ways to write queries: SQL-ish Syntax Methods
  • 53. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) LINQ Methods Sort OrderBy, Reverse Filter Where, OfType Get First, Last Check Collections All, Any, Contains Set Operations Except, Intersect Project Collections Select, SelectMany
  • 54. LINQ Methods Example var firstConnection = RootNode.Connections.First() foreach (var table in RootNode.Tables.Where(…)) if (RootNode.Packages.Any(…))
  • 55. LINQ Methods Example foreach (var table in RootNode.Tables.Where(…)) if (RootNode.Packages.Any(…)) But what do you put in here?
  • 56. Lambda Expressions "A lambda expression is an anonymous function that you can use to create delegates or expression tree types"
  • 57. Lambda Expressions "A lambda expression is an anonymous function that you can use to create delegates or expression tree types"
  • 58. Lambda Expressions column => column.Name == "ColumnID"
  • 59. Lambda Expressions column => column.Name == "ColumnID" The arrow ("goes to") is the lambda operator
  • 60. Lambda Expressions column => column.Name == "ColumnID" Input parameter is on the left side
  • 61. Lambda Expressions column => column.Name == "ColumnID" Expression is on the right side
  • 62. Lambda Expressions column => column.Name == "ColumnID"
  • 63. LINQ and Lambda Chain LINQ Methods and use Lambda Expressions for simple and powerful querying of collections: .Where(table => table.Schema.Name == "Production") .OrderBy(table => table.Name)
  • 65. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) GetColumnList() GetColumnAssignmentList() GetColumnComparisonList()
  • 66. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) GetColumnList Get columns for SELECT: [Column1], [Column2], [Column3]
  • 67. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) GetColumnAssignmentList Get columns for UPDATE … SET: [left].[Column1] = [right].[Column1] ,[left].[Column2] = [right].[Column2] ,[left].[Column3] = [right].[Column3]
  • 68. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) GetColumnComparisonList Get columns for JOIN … ON: [left].[Column1] = [right].[Column1] AND [left].[Column2] = [right].[Column2] AND [left].[Column3] = [right].[Column3]
  • 69. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Column Methods and Lambda Use Lambda Expressions to filter columns: GetColumnList(column => column.IsUsedInPrimaryKey)
  • 71. Extension Methods "Make it look like the method belongs to an object instead of a helper class"
  • 72. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) From this… public static string GetName(AstTableNode table) {...}
  • 73. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) …to this public static string GetName(this AstTableNode table) {...}
  • 74. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) From this… HelperClass.GetName(table)
  • 75. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) …to this table.GetName()
  • 76. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) +100000 XP Congratulations! You reached level 80!
  • 78. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Solution Overview
  • 79. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Solution Overview Dimensions SCD2 Hybrid SCD1 SCD2 Facts Trans- actional
  • 80. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Facts Source View Lookup Dimension Keys Insert New Rows Load Fact Get Latest Key
  • 81. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Dimensions Source View Lookup Existing Rows Insert New Rows Insert Updated Rows Truncate Update Table Load Dimension Update Rows
  • 82. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Solution Overview Data Warehouse Facts Dims Update Staging Source Views
  • 83. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Solution Process 1. Model Facts and Dimensions 2. Generate SQL Scripts 3. Modify Source Views 4. Generate SSIS Packages
  • 84. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Solution Process 1. Model Facts and Dimensions 2. Generate SQL Scripts 3. Modify Source Views 4. Generate SSIS Packages
  • 87. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Metadata Model Connections Projects Tables Columns
  • 90. Facts and Dimensions Use Biml features to simplify code: • ScdType on columns • StaticSource for static and unknown dimension rows • CloneTable for update tables
  • 91. ScdType Define ScdType per column: <Column Name="DimSK" DataType="Int32" IsNullable="false" ScdType="SurrogateKey" /> Use instead of custom annotations :)
  • 92. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) ScdType Values SurrogateKey Key Update Historical Audit Other Often IDENTITY Source IDs SCD1 Columns SCD2 Columns ETL Columns Not used in SCD logic
  • 93. StaticSource Define rows to be inserted when table is created: <Table Name="Table"> <Sources> <StaticSource Name="TableRows">...</StaticSource> </Sources> </Table> Use instead of separate T-SQL scripts :)
  • 94. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) StaticSource Values <StaticSource Name="TableRows"> <Rows> <Row> <ColumnValues> <ColumnValue ColumnName="Col1" Value="-1" /> </ColumnValues> </Row> </Rows> </StaticSource>
  • 95. CloneTable Create a copy of a table: <CloneTable Name="NewTable" TableName="OriginalSchema.OriginalTable" SchemaName="Database.NewSchema" /> Use instead of defining tables twice :)
  • 98. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Could not drop object 'Schema.Table' because it is referenced by a FOREIGN KEY constraint.
  • 99. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Drop and Create Create Order: Dim1 Dim2 Fact1 Fact2 Fact2 Fact1 Dim2 Dim1Drop Order:
  • 100. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Drop and Create Create Order: Dim1 Dim2 Fact1 Fact2 Fact2 Fact1 Dim2 Dim1Drop Order:
  • 101. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Topological Sort "A topological sort of a directed graph is a linear ordering of its vertices such that for every directed edge uv from vertex u to vertex v, u comes before v in the ordering"
  • 102. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Topological Sort "A topological sort of a directed graph is a linear ordering of its vertices such that for every directed edge uv from vertex u to vertex v, u comes before v in the ordering"
  • 103. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Topological Sort "Sorts objects by dependencies. For example dimensions before fact tables."
  • 104. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Topological Sort "Sorts objects by dependencies. For example dimensions before fact tables."
  • 105. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Topological Sort var dependentTables = DependencyAnalysis.TopologicalSort<AstTableNode> ( RootNode.Tables, t => t.Columns .OfType<AstTableColumnTableReferenceNode>() .Select(c => c.ForeignTable) );
  • 106. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Topological Sort: Method var dependentTables = DependencyAnalysis.TopologicalSort<AstTableNode> ( RootNode.Tables, t => t.Columns .OfType<AstTableColumnTableReferenceNode>() .Select(c => c.ForeignTable) );
  • 107. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Topological Sort: Collection to Sort var dependentTables = DependencyAnalysis.TopologicalSort<AstTableNode> ( RootNode.Tables, t => t.Columns .OfType<AstTableColumnTableReferenceNode>() .Select(c => c.ForeignTable) );
  • 108. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) Topological Sort: How to Sort var dependentTables = DependencyAnalysis.TopologicalSort<AstTableNode> ( RootNode.Tables, t => t.Columns .OfType<AstTableColumnTableReferenceNode>() .Select(c => c.ForeignTable) );
  • 110. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net) +1000000 XP Congratulations! You reached level 100!
  • 111. Get things done Start small Start simple Solve a problem Keep going Expand Improve Deliver often
  • 112. © 2018 Cathrine Wilhelmsen (hi@cathrinew.net)
  • 113. Download the GuideBook App and search: PASS Summit 2018 Follow the QR code link displayed on session signage throughout the conference venue and in the program guide Session evaluations Your feedback is important and valuable. Go to passSummit.com 3 Ways to Access: Submit by 5pm Friday, November 16th to win prizes.