Data Warehouse: ETL-Praktikum Katharina Diesch Dr. med. Thomas Ganslandt Herleitung: - Einstieg Prozessmodellierung: Mikro-Ebene - Background DRG-Abrechnung - nächster wichtiger Baustein: Informationen zur Steuerung auf Makro-Ebene Lehrstuhl für Medizinische Informatik Krankenhausstr. 12, 91054 Erlangen, Deutschland thomas.ganslandt@imi.med.uni-erlangen.de
"This is not a drill" Schwerpunkt: praktische Übungen Inhalte heute: Aufbau eines (kleinen) Data Warehouse Inhalte heute: Werkzeuge ETL-Prozess Tool: IBM Cognos DataManager
Recap Komponenten: "Datenreinigung" Staging Data Warehouse SAP/MM Legacy SAP/FI Extraktion, Transformation & Loading (ETL)
Extraktion
DataManager Cognos ETL-Werkzeug Datenbankschnittstellen nativ: Oracle, MS-SQL, DB2, ... ODBC CSV SAP R/3-Connector Datentransfer SQL-basiert mehrstufige Pipeline Makros Automatisierung Dimensionsmodellierung flexible Generierung von Hierarchien
Demo DataManager - Überblick Kataloge Konzept Katalog öffnen/Einrichtung Katalogdatenbank Einrichtung ODBC-Datenquelle Erstaufruf Walkthrough
Handwerkszeug Start der virtuellen Umgebung cube.medads.uk-erlangen.de
Handwerkszeug Start der virtuellen Umgebung
Demo DataManager - Datenquellen einrichten "Connections"-Ordner Typen von Datenquellen Vorhandene Datenquelle einbinden Neue Datenquelle anlegen und einbinden
Workshop DataManager - Datenquellen einbinden Binden Sie die Quelldatenbank ein Connection "Schulung-SOURCE" einrichten Verbindung testen Binden sie die Staging-Datenbank ein Connection einrichten: "Schulung-STAGING" Verbindungen testen Binden sie die Warehouse-Datenbank ein Connection einrichten: "Schulung-DWH"
Struktur der SOURCE-Datenbank Seite 11
SQL-Refresher SELECT spalten FROM tabellen [WHERE bedingungen] [ORDER BY sortierkriterium] Joins -> Verbinden von Tabellen (kartesisches Produkt ohne WHERE) Aggregationen (GROUP BY)
Demo + Workshop DataManager - SQL-Terminal Fragen Sie Tabellen aus SOURCE ab Führen Sie mehrere Tabellen per JOIN zusammen Beispiel: SELECT * FROM faelle f, pat p WHERE f.patnr=p.patnr
Workshop DataManager - Factbuild-Wizard Erstellen Sie einen Factbuild für die Tabelle PAT Vorgaben: alle Spalten der Quelltabelle übernehmen keine Filterung von Datensätzen keine Veränderung der Daten Auslieferung nach STAGING Zieltabelle: STG_PAT Vollimport (Zieltabelle zu Beginn des Build leeren)
Workshop DataManager - Factbuild-Wizard Erstellen Sie mit dem Wizard Staging-Factbuilds für: FAELLE ORGA EVENTS Vorgaben: wie bei PAT Präfix "STG_" nicht vergessen
Workshop DataManager - JobStreams Erstellen Sie einen JobStream "STAGING", der alle Staging-Factbuilds automatisch nacheinander aufruft
ETL: Transformation
ETL - Transformation Ziele Reduzieren benötigte Datenelemente selektieren (WHERE…) Konsolidieren Datenmodelle der Quellsysteme zusammenführen Datenmodell für Auswertung optimieren Fakten und Dimensionen trennen Weiterverarbeiten Berechnungen mit Datenelementen durchführen Bereinigen unvollständige/ungültige/stornierte Datensätze abweisen
Workshop DataManager - Factbuild Erstellen Sie einen Factbuild für die Tabelle F_FAELLE Vorgaben: alle Spalten der Quelltabelle bis auf STORN übernehmen keine Filterung von Datensätzen keine Veränderung der Daten Quelldatenbank: STAGING Auslieferung nach DWH Zieltabelle: F_FAELLE Vollimport (Zieltabelle zu Beginn des Build leeren)
ETL - Transformation Anwendungsfall Filterung zeitliche Einschränkung ungültige Datensätze storniert unvollständig ausgefüllt inkonsistente Datensätze Widersprüche zwischen Datenelementen
Workshop DataManager - Factbuild filtern Passen Sie den Factbuild F_FAELLE an Vorgaben: stornierte Datensätze sollen nicht nach DWH übernommen werden
Workshop Auswertung Werten Sie die Daten von Fällen aus: Fallzahl pro entlassender Fachabteilung und Station
Workshop Auswertung - Lösungen Werten Sie die Daten von Fällen aus: Fallzahl pro entlassender Fachabteilung und Station SELECT entl_orgfa, entl_orgpf, COUNT(*) FROM f_faelle GROUP BY entl_orgfa, entl_orgpf ORDER BY entl_orgfa, entl_orgpf
Demo + Workshop Anwendungsfall Konsolidierung Passen Sie den Factbuild F_FAELLE an Vorgaben: fügen Sie die folgenden Datenelemente hinzu: Aufnahme-Datum, -Abteilung und –Station Lösung : SELECT stg_events.falnr, stg_events.datum, stg_events.bwart, stg_events.orgfa, stg_events.orgpf FROM stg_events, stg_faelle WHERE (stg_events.falnr = stg_faelle.falnr) AND (stg_events.bewty = '1') /* Aufnahmebewegung */ AND (stg_faelle.storn = 0)
Demo + Workshop Anwendungsfall Konsolidierung Passen Sie den Factbuild F_FAELLE an Vorgaben: fügen Sie die folgenden Datenelemente hinzu: Entlass-Datum, -Abteilung und –Station Lösung 2: SELECT stg_events.falnr, stg_events.datum, stg_events.bwart, stg_events.orgfa, stg_events.orgpf FROM stg_events, stg_faelle WHERE (stg_events.falnr = stg_faelle.falnr) AND (stg_events.bewty = '2') /* Entlassbewegung */ AND (stg_faelle.storn = 0)
Demo + Workshop Anwendungsfall Aggregation Passen Sie den Factbuild F_FAELLE an Vorgaben: fügen Sie die folgenden Datenelemente hinzu: Anzahl dokumentierter Diagnosen je Fall Anzahl dokumentierter Prozeduren je Fall Lösung: SELECT stg_diagnosen.falnr, count(*) AS ANZAHL_DIAGNOSEN FROM stg_diagnosen, stg_faelle WHERE (stg_diagnosen.falnr = stg_faelle.falnr) AND (stg_faelle.storn = 0) GROUP BY stg_diagnosen.falnr Bei Prozeduren analog!
Noch Fragen zum Thema ETL?