meta daten - SQLSaturday

ETL für Faulpelze
Einführung in Biml für SSIS
Organizer
11.06.2016
SQLSaturday Rheinland 2016
Bronze Sponsor
11.06.2016
SQLSaturday Rheinland 2016
Silver Sponsor
11.06.2016
SQLSaturday Rheinland 2016
Gold Sponsor
11.06.2016
SQLSaturday Rheinland 2016
Save the date!
8. October 2016 – New Microsoft Office
11.06.2016
SQLSaturday Rheinland 2016
Save the date!
8. October 2016 – New Microsoft Office
11.06.2016
SQLSaturday Rheinland 2016
Wer ist heute hier?






DBA?
DEV?
Management?
Sonstige?
SSIS User?
Biml Erfahrungen?
11.06.2016
SQLSaturday Rheinland 2016
Wer bin ich?
 Ben Weissman, Solisyon, Nürnberg

@bweissman
 [email protected]
 SQL Server seit Version 6.5
 Zu blöd für C#
Ausgangssituation
DTSX Pakete
Quelle
Was wir haben
Staging Umgebung
Was wir wollen (möglichst automatisiert)
Was ist eigentlich Biml?
 Biml ist eine Markup Sprache – also: XML
 Erfunden/Entwickelt von Varigence
 So sieht Biml aus:
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Packages>
<Package Name="HelloBiml"/>
</Packages>
</Biml>
 Wird erst in Verbindung mit BimlScript/APIs mächtig
 Kann neben SSIS auch für T-SQL und SSAS
genutzt werden
 Verschiedenste Frontends
Das heißt so viel, wie…?
 Kompatibilität zwischen SQL Versionen wird
belanglos
 Gesteigerte Produktivität durch Zeitersparnis bei
“dummen” Datenbeladungen –
Suche nach Mustern!
 Je besser ein Task standardisierbar ist (z.B.
Beladung einer Staging Umgebung),
desto höher der Zeitgewinn
Basis Konstrukt
Pakete
Tabellen
Schemata
Datenbanken
Verbindungen
META DATEN
Wie funktioniert das dann?
Biml Code
Biml Engine
Ergebnis
</>
XML, BimlScript, C#, VB …
SQL Server Tabellen,
DTSX Pakete etc.
Frontends
Let‘s write some basic Biml…
Demo
Was ist nötig für ein echtes erstes Ergebnis?
 Auswahl eines Frontends
 Erstellen einer Zieldatenbank mit Steuertabellen
 Befüllen der Steuertabellen
 Welche Daten sollen von wo geladen werden?
 Erstellen einer Biml Lösung auf dieser Basis
Wie steuern wir das?
 Im einfachsten Fall gibt es nur eine Steuertabelle:
Tables
Hier definieren wir einfach alle Tabellen (per Name), die wir
importieren wollen
Wie sieht diese Tabelle wirklich aus?
Demo
Schritt 1 – Verbindungs Meta Daten
01_Environment.biml
Verbindungsdaten
(statisch)
META DATEN
Schritt 1 – Verbindungs Meta Daten
01_Environment.biml
Schritt 2 – Tabellen Meta Daten
FOR EACH LOOP
02_BuildMeta.biml
Tabellen
META DATEN
Schritt 2 – Tabellen Meta Daten
02_BuildMeta.biml
Schritt 3 – Erstellen der Staging Tabellen
FOR EACH LOOP
03_BuildStaging.biml
Erstellen der Staging Tabellen
Schritt 3 – Erstellen der Staging Tabellen
03_BuildStaging.biml
Schritt 4 – Befüllen der Staging Tabellen
FOR EACH LOOP
04_PopulateStaging.biml
Schritt 4 – Befüllen der Staging Tabellen
04_PopulateStaging.biml
Coding time – My Simple Biml!
Zeit für eine
richtige Demo!
Zusammenfassung
 Mit nur 1 Tabelle haben wir die Staging
Umgebung erstellt und befüllt
 Sehr überschaubarer Code (< 80 Zeilen
XML/BimlScript in 4 Dateien)
 Für einfache Tasks ist das ggf. schon sehr
hilfreich
 Nicht sehr flexibel und, gerade bei großen
Tabellen, viel Overhead
Was kann man da machen?
 Wir brauchen etwas mehr Steuerinformationen
Connections
Aus welchen Quellen
beziehen wir Daten?
Tables
Aus welchen Tabellen
beziehen wir welche
Spalten?
Packages
In welchen Unterpaketen
wollen wir die Tabellen
aufteilen?
Schritt 1 – Verbindungs Meta Daten
FOR EACH LOOP
01_Environment.biml
Verbindungsdaten
META DATEN
Schritt 2 – Tabellen Meta Daten
FOR EACH LOOP
FOR EACH LOOP
FOR EACH LOOP
02_BuildMeta.biml
SELECT
*
SELECT
col1, col2, …
Tables
META DATEN
Schritt 3 – Erstellen der Staging Tabellen
FOR EACH LOOP
03_BuildStaging.biml
Erstellen der Staging Tabellen
Schritt 4 – Befüllen der Staging Tabellen
FOR EACH LOOP
FOR EACH LOOP
04_PopulateStaging.biml / 05_PopulateTable.biml
My Full Biml!
Nun kommt die
noch viel coolere
Demo!
Da muss doch noch mehr gehen?





Index management
„Housekeeping“
Inkrementelle Beladung / Erstellung
Timestamps zu Dataloads hinzufügen
Includes, Reference Scripts etc. nutzen um
Redundanzen zu minimieren und Lesbarkeit zu
erhöhen
 Reverse engineering von bestehendem DWH
 …
Mehr?
 https://www.bimlscript.com/
 http://www.sqlservercentral.com/stairway/100550/
 http://www.cathrinewilhelmsen.net/biml/
 http://sqlblog.com/blogs/andy_leonard/
 http://Biml-Blog.de
Gibt es noch…
Fragen?