Transcript
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:
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?