Datenqualität_Panther - Robert Panther on SQL Server

Werbung
Datenqualität konsequent umgesetzt
Robert Panther, CGI Deutschland Ltd. & Co. KG
Profil: Robert Panther
Ausbildung
Diplom-Informatiker (FH)
Rolle
Executive Consultant
Zertifizierungen
MCITP SQL Server 2008 Developer
MCTS SQL Server 2008 Implementation & Maintenance
MCTS SQL Server 2005 Business Intelligence
MCTS SQL Server 2005 Implementation & Maintenance
Überblick
• Regelmäßiger Speaker auf Konferenzen:
BASTA!, SQLCON, Frankfurter Datenbanktage, IT Tage, Deutsche SQL Server Konferenz
• Fachbuchautor:
entwickler.press: SQL Server Performance Ratgeber, SQL-Abfragen optimieren
Microsoft-Press: Datenbanken entwickeln mit SQL Server 2012
• Autor von Fachartikeln für diverse Publikationen:
z.B. Windows Developer, dot.net magazin, database pro
• Community:
aktives PASS-Mitglied, Leiter der SQL Server Expert Group bei CGI
Schwerpunkte
SQL Server
• Design
• Entwicklung
• Administration
• Performance
• SSIS (ETL)
Sonstige
• .NET (C# & VB)
• Windows Mobile
Agenda
1. Theoretischer Hintergrund
2. Datenqualität aus Entwicklersicht
3. Datenqualität aus Datenbanksicht
• Datenqualität mit MDS und DQS
• Alternative Möglichkeiten und Tools
4. Fazit
1. Theoretischer Hintergrund
Worum geht es beim Thema Datenqualität?
Datenqualität = Informationsqualität
Was sind qualitativ gute Daten?
• vollständig
• konsistent / korrekt
• zugreifbar / aktuell
• wiederverwendbar
Mythen zum Thema Datenqualität
1.
2.
3.
4.
5.
Datenqualität ist ein neues Thema!
Datenqualität ist ein reines BI-Thema!
Das Ziel der Bereinigungsmaßnahmen sind 100% korrekte Daten!
Mit den richtigen Tools erfolgt die Datenbereinigung vollautomatisch!
Wenn die Daten einmal bereinigt sind, ist alles gut!
Mögliche Folgen von schlechter Datenqualität
• falsche Adressdaten → Fehler beim Versand → Zusatzkosten & Kunde verärgert
• falscher Name und/oder Anrede → falsche Kundenansprache → Kunde verärgert
• offensichtliche Datenfehler, die geklärt werden müssen
→ Verzögerung, Zusatzaufwand für Klärung und Korrektur
→ Zusatzkosten, Mitarbeiter frustriert & Kunde verärgert
• unerkannte Datenfehler, die zu Batch-Abbrüchen führen
→ Verzögerung, Zusatzaufwand für Korrektur und erneuten Batch-Lauf
→ Zusatzkosten, Mitarbeiter frustriert & Kunde verärgert
→ Image- & Umsatzverlust!!
Ursachen für schlechte Datenqualität?
(… und wer ist schuld?)
Ist das wirklich so einfach?
Ursache:
Verantwortlich:
Fehleingaben
Anwender
Anwendungsfehler
Entwickler
Systemausfälle
Administratoren
Datenimporte/Migrationen
DB-Entwickler
Ursachen für schlechte Datenqualität?
(… und wer ist wirklich schuld?)
Typische Datenqualitäts-Probleme
Straße
Postleitzahl Ort
Hauptstr.__20
61462
Königstein
Hauptstrasse 20
61462 Königstein
Am Limespark 2 _65843
Sulzbach
• „Unsaubere“ Inhalte einzelner Felder
• unnötige Leerzeichen
(am Anfang, am Ende, mehrfach hintereinander)
• Sonderzeichen
• unterschiedliche Schreibweisen derselben Information
(typisches Beispiel: Straße, Strasse, Str.)
• Spaltenübergreifend: Informationen in falschen Feldern
• typische Beispiele: Vorname, Titel, Hausnummer, PLZ
• Datensatzübergreifend: Doubletten
Straße
Postleitzahl Ort
Hauptstr. 20
61462
Königstein
Hauptstr. 20
61462 Königstein
Am Limespark 2 65843
Sulzbach
Straße
Postleitzahl Ort
Hauptstr. 20
61462
Königstein
Hauptstr. 20
61462
Königstein
Am Limespark 2 65843
Sulzbach
Doubletten-Problematik
Doublettenerkennung
• Erkennung von doppelten Daten
• Problem: nicht-identische Schreibweisen
Doublettenabgleich
• welche Kopie wird gelöscht?
• Übernahme von Informationen aus zu löschender Kopie
• abhängige Daten in anderen Tabellen
Mögliche Maßnahmen (reaktiv)
1.
2.
3.
4.
Analyse der Daten
Korrektur der Daten
Entfernen von inhaltsleeren Datensätzen
Beseitigung von Doubletten
Mögliche Maßnahmen (proaktiv)
• Anpassung des Datenmodells:
referentielle Integrität, Datentypen & Constraints
• Anpassen der Anwendung:
Eingabevalidierung, Doublettensuche bei Neuanlage
• automatisierte Korrekturläufe für unkritische Korrekturen
• regelmäßige Analyse der Datenqualität, um weitere Schritte abzuleiten
2. Datenqualität aus
Entwicklersicht
Datenmodellierung
Korrekte Speicherung von Daten
• Unvollständige Informationen vermeiden
• NOT NULLable Spalten
• Default Values
• Richtiges Eingabeformat erzwingen
• Wahl des richtigen Datentyps
• Constraints auf einzelnen Spalten (z.B. Mindestlänge)
• Spaltenübergreifende Validierung
• Constraints zwischen zwei Spalten (z.B. Geburtsdatum vor Todesdatum)
• redundante Ablage von Informationen vermeiden
• UNIQUE Indizes
• Doubletten durch referentielle Integrität minimieren
Eingabevalidierung
Fehler direkt bei der Eingabe korrigieren
•
•
•
•
Entfernung von unnötigen Leer- und Sonderzeichen
Vereinheitlichung der Schreibweise
Vergleich mit Referenzdaten
letzte Entscheidung sollte immer beim Anwender liegen
Vermeidung von Doubletten
Prüfung bei Neuanlage
• keine Neuanlage ohne vorherige (implizite) Suche
Vermeidung von Doubletten
Abgleich von Doubletten
• Erkennung evtl. im Vorfeld durch Batch-Analysen
• Gegenüberstellung beider Varianten
• Auswahl pro Feld, welche Variante führend ist
• Auswahl pro abhängigem Objekt, welche beibehalten werden
3. Datenqualität aus
Datenbanksicht
Tools zur Datenqualität
Tools zur Datenqualität
•
•
•
•
•
•
Data Quality Services - Analyse und Korrektur von Daten
Datenprofilerstellungstask in SSIS & Datenprofil-Viewer – Analyse von Daten
Master Data Services - Verwaltung von Master Daten
T-SQL - Analyse und Korrektur von Daten
SSIS - Analyse von Daten über selbst definierte Datenflüsse
Data Mining - Analyse von Daten zur Erkennung von Zusammenhängen
Verlassen Sie sich nicht zu sehr auf die Tools!
Data Quality ist ein schmutziges Geschäft!
Data Quality Services
Überblick
•
•
•
•
mit SQL Server 2012 eingeführt
nur für Business Intelligence Edition und Enterprise Edition (bzw. Developer Edition)
bestehend aus einer Server- und einer Client-Komponente
automatisierte und interaktive Verbesserung der Datenqualität
Data Quality Services
Komponenten
• Data Quality Server (3 Datenbanken)
• DQS_MAIN: DQS Engine & SPs sowie veröffentlichte Wissensdatenbanken
• DQS_PROJECTS: KB Management und DQS Project Activities
• DQS_STAGING_DATA: Staging DB für Kopien der Quelldaten
• Data Quality Client
• separate Anwendung
• Wizard-unterstützt
• deckt verschiedene Aufgaben ab: Knowledge Management, Data Quality Projects & Administration
• SSIS DQS Cleansing Component
Data Quality Services
Features
• Data Profiling: Analyse der Datenqualität einer Datenquelle
• Data Cleansing: toolunterstützte interaktive Korrektur
von falschen oder unvollständigen Daten
• Data Matching: regelbasierte Erkennung und Bereinigung von Doubletten
• Reference Data Services: Referenzdaten aus dem Windows Azure Marketplace DataMarket
• Monitoring: Überwachung der Data Quality-Aktivitäten
• Knowledge Base: Regelwerk, das zur kontinuierlichen Verbesserung stets erweitert wird
• Out-of-the-box Regeln
• benutzerdefinierte Regeln
• DQS-generierte Regeln
Data Quality Services - Bewertung
Pro
Contra
• Definition von Regeln und Korrektur von Daten
kann ohne SQL-Kenntnisse erfolgen
• Quelle zur Analyse können Live-Daten sein, Ziel ist
immer separate Tabelle,
Übernahme der Änderungen in Live-Daten muss
explizit implementiert werden
• Vorgeschlagene Änderungen können in Frontend
akzeptiert, angepasst oder abgelehnt werden
• Gute Erkennung von Doubletten
• bisher keine Unterstützung für DB-Schemata
• werden bei Quellenauswahl nicht angezeigt
• beim Speichern mit Schemaname ins dbo-Schema
gezwängt
• irreführende Übersetzungen bei der deutschen
Version:
• "Korrigieren" = "Correct" = "korrekt"
Datenprofilerstellungs-Task & Datenprofil-Viewer
Überblick
•
•
•
•
ab SQL Server 2008 Standard Edition verfügbar
Allgemeine Datenanalyse (Häufigkeit von Inhalten, Längenverteilung etc.)
Datenprofilerstellung über Task in SSIS mit Output in XML-Datei
Analyse des Datenprofils mit separatem Datenprofil-Viewer
Datenprofilerstellungs-Task & Datenprofil-Viewer Bewertung
Pro
Contra
• Führt sehr schnell zu ersten Ergebnissen
• Gut für einen ersten Blick in die Daten, um
zu sehen, wo weitere Analysen Sinn
machen
• Nur für einfache vorgefertigte Analysen
geeignet (8 vordefinierte Profiltypen)
• Nicht „aus einem Guss“: Profilerstellung in
SSIS, Profilanalyse in separatem Tool
Master Data Services
Überblick
• mit SQL Server 2008 R2 eingeführt, mit SQL Server 2012 und 2016 überarbeitet
• nur für Business Intelligence Edition und Enterprise Edition (bzw. Developer Edition)
• Verwaltung, Korrektur und Anreicherung von Masterdaten
Master Data Services
Komponenten
• Master Data Services Configuration Manager
• Erstellung und Konfiguration von MDS Datenbanken und Web Applications
• Master Data Manager (Web-Anwendung)
• administrative Aufgaben: Erstellung von Modellen und Business Rules
• Aktualisierung und Korrektur von Daten
• MDSModelDeploy.exe
• Erstellung und Verteilung von Paketen mit Modellen und Daten
• MDS Web Service
• zur Entwicklung von individuellen MDS-Lösungen
• MDS Add-in for Excel
• Verwaltung von Daten sowie Anlegen von neuen Entitäten und Attributen
Master Data Services
Master Data Manager – Administrative Aufgaben
• Systemverwaltung
• Definition eines Master Daten Modells
• Erstellung von Modellen, Entitäten, Attributen,
Hierarchien und Business Rules
• Integrationsmanagement
• Batch-Import von Daten in MDS
• Erstellung von SQL-Ansichten für Abonnenten
• Versionsverwaltung
• Einfrieren eines Standes der Masterdaten als Version
• Benutzer- und Gruppenberechtigungen
• Verwaltung von Berechtigungen um auf Masterdaten zuzugreifen und diese zu ändern
Master Data Services
Master Data Manager - Datenaufgaben
• Explorer
• Validierung von Daten anhand der definierten Business Rules
• Änderungen an den Daten selbst
• Master Data Services in Excel installieren
• Installation des Excel Add-Ins
• Benutzer können Daten laden und Massenbearbeitung ausführen
• Administratoren können Daten laden, Entitäten erstellen und Attribute aktualisieren
Master Data Services
Neuerungen von SQL Server 2016
• neue Web-Oberfläche
• übersichtlicher, weniger Silverlight
• Allgemein/Verwaltung
•
•
•
•
Attribut-Namen nicht mehr auf 50-Zeichen beschränkt
m:n-Relationen in abgeleiteten Hierarchien
Entity Sync Relationships um Entity Daten in verschiedenen Modellen zu nutzen
Business Rules nun mit NOT und OR-Operatoren sowie benutzerdefinierter SQL Logik möglich
• bessere Performance
• Compression (Database: Row Level Data Compression, IIS/Web: Dynamic Content Compression)
• Indexing (Custom Non-Clustered Indizes, SQL Server Agent Job für Index- und Log-Wartung)
• Excel Add-in 4-15x schneller (je nach Excel Version)
Master Data Services - Bewertung
Pro
Contra
• Zentrale Verwaltung von Masterdaten
• Versionen von Masterdaten können
eingefroren werden
• Masterdaten können von verschiedenen
Anwendungen und Umgebungen genutzt
werden
• Sehr komfortabel im Zusammenspiel mit
Excel 2016 und PowerQuery
• hoher Aufwand für Modellerstellung
• nur für Referenzdaten / Masterdaten
sinnvoll einsetzbar
• korrigierte Daten müssen explizit in
Zielumgebung eingespielt werden
• Datenbankarchitektur muss gravierend
modifiziert werden
• Installation bereitet oft Probleme (wg.
Windows Komponenten, Silverlight etc.)
Datenbereinigung mit T-SQL
Überblick
•
•
•
•
für alle Editionen und Versionen verfügbar
manuelle Erstellung von SQL-Skripten zur Datenbereinigung
unverändert auf verschiedenen Umgebungen verwendbar (Entwicklung, Test, Produktion)
bewährte Skripte können regelmäßig über SQL Server Agent Jobs ausgeführt werden
Datenbereinigung mit T-SQL
Beispiel - Vereinheitlichung von Daten einer Domain (z.B. Telefonnummern)
1.
2.
3.
Über Systemview INFORMATION_SCHEMA.Columns alle Tabellen finden,
in denen Telefonnummern gespeichert werden
Skalarfunktion zur Bereinigung von Telefonnummern erstellen
Analyse/Aktualisierung der Tabelle mit Hilfe der Funktion
SELECT * FROM INFORMATION_SCHEMA.Columns
WHERE COLUMN_NAME LIKE 'PhoneNumber' AND TABLE_NAME NOT LIKE 'v%'
SELECT * FROM INFORMATION_SCHEMA.Columns
WHERE DOMAIN_NAME = 'Phone' AND TABLE_NAME NOT LIKE 'v%'
Datenbereinigung mit T-SQL
CREATE FUNCTION DQ.UFN_CleansePhoneNumber(@PhoneNumber dbo.Phone)
RETURNS dbo.Phone
AS
BEGIN
DECLARE @PhoneNumberNew dbo.Phone
SET @PhoneNumberNew = REPLACE(REPLACE(@PhoneNumber, '(', ''), ')', '')
RETURN @PhoneNumberNew
END
;WITH CTE AS
(SELECT *, Test.UFN_CleansePhoneNumber(PhoneNumber)
AS PhoneNumberNew FROM Test.PersonPhone)
UPDATE PP SET PhoneNumber = PhoneNumberNew
WHERE PhoneNumber <> PhoneNumberNew
Datenbereinigung mit T-SQL
Beispiel - allgemeine Bereinigung: Entfernung von unnötigen Leerzeichen in Strings
1. Über Systemview INFORMATION_SCHEMA.Columns alle Spalten finden,
in denen Strings gespeichert werden
2. Skalarfunktion zur Bereinigung von Strings erstellen
3. Analyse/Aktualisierung der Tabelle mit Hilfe der Funktion
SELECT *
FROM INFORMATION_SCHEMA.Columns
WHERE DATA_TYPE LIKE '%char'
AND TABLE_NAME NOT LIKE 'v%‘
Datenbereinigung mit T-SQL
CREATE FUNCTION DQ.UFN_CleanseString(@String nvarchar(255))
RETURNS nvarchar(255)
AS
BEGIN
DECLARE @StringNew nvarchar(255)
SET @StringNew = @String
SET @StringNew = LTRIM(RTRIM(@StringNew))
WHILE @StringNew LIKE '%
%'
SET @StringNew = REPLACE(@StringNew, '
RETURN @StringNew
END
', ' ')
Datenbereinigung mit T-SQL
UPDATE Test.Address
SET City=DQ.UFN_CleanseString(City)
WHERE City<>DQ.UFN_CleanseString(City)
WHERE LEN(City)<>LEN(DQ.UFN_CleanseString(City))
WHERE DATALENGTH(City)<>DATALENGTH(DQ.UFN_CleanseString(City))
Datenbereinigung mit T-SQL
Doublettenerkennung
• Scharfer Vergleich (relevante Spalten identisch) problemlos implementierbar
• Unscharfer Vergleich (relevante Spalten ähnlich) problematisch
• Über LIKE-Operator explizite Vergleiche realisierbar
• Über LEFT-Funktion Vergleich der ersten n Zeichen realisierbar
• Über SOUNDEX und DIFFERENCE bedingt Ähnlichkeitsvergleiche möglich
Problematische Beispiele
•
•
•
•
•
SELECT
SELECT
SELECT
SELECT
SELECT
SOUNDEX('Nieß'), SOUNDEX('Niess')
SOUNDEX('Müller'), SOUNDEX('Mueller')
SOUNDEX('Mau'), SOUNDEX('Mieß')
SOUNDEX('Phone'), SOUNDEX('Penny')
SOUNDEX('Phonecall'), SOUNDEX('Penicilin')
Datenbereinigung mit T-SQL
Pro
Contra
• Korrektur kann direkt in Zielumgebung
erfolgen (Locking berücksichtigen!)
• ideal zur Bereinigung von Massendaten, sofern
keine zusätzliche Prüfung erforderlich
• durch Verwendung von Systemviews
generische Skripts realisierbar
• über .NET CLR erweiterbar (z.B. RegEx,
fuzzystring.codeplex.com)
• über SQL Server Agent Jobs leicht
automatisierbar
• auch etappenweise (TOP) in
Produktivumgebungen ausführbar
• SQL-Kenntnisse sowie direkter Serverzugriff
erforderlich
• hoher Aufwand in der Vorbereitung
(Skripterstellung)
• für Doublettenabgleich nur bedingt geeignet
Datenbereinigung mit SSIS
Überblick
•
•
•
•
•
ab SQL Server 2005 verfügbar
Einfache Transformationen ab Standard Edition, Fuzzy Transformationen ab Enterprise
Fuzzy Lookup / Fuzzy Grouping für ungenaue Suchen mit definierbarem Schwellwert
individuelle Regeln über Abgeleitete Spalte und Bedingtes Teilen realisierbar
kombinierbar mit DQS Cleansing Component
Datenbereinigung mit SSIS
Datenbereinigung mit SSIS
Datenbereinigung mit SSIS
Pro
Contra
• individuelle (beliebig komplexe) Workflows
realisierbar
• mit SQL Skripts, .NET Code (z.B. für RegEx)
etc. kombinierbar
• über zusätzliche Komponenten erweiterbar
(z.B. ssisdqsmatching.codeplex.com)
• über SQL Server Agent Jobs leicht
automatisierbar
• SSIS-Kenntnisse sowie direkter Zugriff auf
Daten erforderlich
• relativ hoher Aufwand in der Vorbereitung
(Paketerstellung)
• Quelle zur Analyse können Live-Daten sein,
Ziel ist immer separate Tabelle,
Übernahme der Änderungen in Live-Daten
muss explizit implementiert werden
4. Fazit
Checkliste für bestmögliche Datenqualität
bei Planung alle Bereiche (Daten, Anwendung und User) berücksichtigen
bei Umsetzung klein beginnen (Konzentration auf das Wesentliche)
stets Verhältnis von Aufwand zu Nutzen im Auge behalten
regelmäßige Datenpflege (Analyse und Korrektur)
Zuständigkeiten klar definieren
keine Schuldigen sondern Lösungen suchen
Welches Tool für was?
• Datenanalyse: DQS & Datenprofilerstellungs-Task
• Tiefgehende Analysen von Datenzusammenhängen: SSAS Data Mining
• Manuelle Korrektur von Daten: DQS & MDS
• Verwaltung von Master Daten: MDS
• Wiederholt auszuführende triviale Korrekturen: T-SQL-Skripts
• Doublettenanalyse: DQS & SSIS (Fuzzy Lookup & Fuzzy Grouping)
Finden Sie den passenden Mix für Ihre Umgebung!
Weitere Infos - Literatur
Implementing a Data Warehouse with Microsoft SQL Server 2012
Training Kit (Exam 70-463)
Dejan Sarka, Matija Lah, Grega Jerkic
Microsoft Press, 2012
ISBN: 978-0-7356-6609-2
Data Quality and Master Data Management with MS SQL Server 2008 R2
Dejan Sarka, Davide Mauri
SolidQ
http://www.solidq.com/product/data-quality-and-master-data-management-with-microsoft-sql-server-2008-r2
DQS step-by-step mit SQL-Server: SQL-Server Data Quality Services
Alexander Karl
http://www.net-cde.de/publications
Weitere Infos - Links
Books Online
•
Data Quality Services: https://msdn.microsoft.com/en-us/library/ff877925.aspx
•
Master Data Services: https://msdn.microsoft.com/en-us/library/ee633763.aspx
•
Microsoft TechNet - SQL Server Video Archive: https://technet.microsoft.com/de-de/dn912438
SQL Server 2016 – Master Data Services
•
What's New in Master Data Services (MDS): https://msdn.microsoft.com/en-us/library/ff929136.aspx
•
Master Data Services Team Blog: http://sqlblog.com/blogs/mds_team/archive/2015/05/27/what-s-new-in-sql2016-ctp2-release.aspx
•
Master Data Services 2016 CTP 2.2 - Explorer functionality quick fix:
http://www.sqlservercentral.com/blogs/sql-bi/2015/08/28/master-data-services-2016-ctp-22-explorer-functionality-quick-fix/
Allgemeine Links zum Thema Datenqualität
•
20th Annual MIT International Conference on Information Quality: http://iciq.global/2015/index.html
•
Whitepaper - In 5 Schritten zu besseren Unternehmensdaten: http://www.sas.com/de_de/whitepapers/ba-wp-fuenf-schritte-zu-besseren-daten-1998531.html
•
Sieben Regeln für bessere Datenqualität: http://www.computerwoche.de/a/sieben-regeln-fuer-bessere-datenqualitaet%2C2516239
Links des Referenten
•
SQL Server Blog: http://pantheronsql.wordpress.com
•
CGI: http://www.de.cgi.com / http://www.cgi.com
Vielen Dank!
eMail: [email protected]
Herunterladen