270 likes | 373 Views
Data Warehouse: ETL-Praktikum. Katharina Diesch Dr. med. Thomas Ganslandt. 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
E N D
Data Warehouse:ETL-Praktikum Katharina Diesch Dr. med. Thomas Ganslandt 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 • Aufbau eines (kleinen) Data Warehouse • Inhalte heute: • Werkzeuge • ETL-Prozess • Tool:IBM Cognos DataManager
Data Warehouse SAP/MM Legacy Staging SAP/FI RecapKomponenten: "Datenreinigung" Extraktion, Transformation & Loading (ETL)
DataManagerCognos 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
DemoDataManager - Überblick • Kataloge • Konzept • Katalog öffnen/Einrichtung Katalogdatenbank • Einrichtung ODBC-Datenquelle • Erstaufruf • Walkthrough
HandwerkszeugStart der virtuellen Umgebung cube.medads.uk-erlangen.de
DemoDataManager - Datenquellen einrichten • "Connections"-Ordner • Typen von Datenquellen • Vorhandene Datenquelle einbinden • Neue Datenquelle anlegen und einbinden
WorkshopDataManager - 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" • Verbindungen testen
SQL-Refresher • SELECT spaltenFROM tabellen[WHERE bedingungen][ORDER BY sortierkriterium] • Joins -> Verbinden von Tabellen (kartesisches Produkt ohne WHERE) • Aggregationen (GROUP BY)
Demo + WorkshopDataManager - SQL-Terminal • Fragen Sie Tabellen aus SOURCE ab • Führen Sie mehrere Tabellen per JOIN zusammenBeispiel: SELECT * FROM faelle f, pat p WHERE f.patnr=p.patnr
WorkshopDataManager - 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)
WorkshopDataManager - Factbuild-Wizard • Erstellen Sie mit dem Wizard Staging-Factbuilds für: • FAELLE • ORGA • EVENTS • Vorgaben: • wie bei PAT • Präfix "STG_" nicht vergessen
WorkshopDataManager - JobStreams • Erstellen Sie einen JobStream "STAGING", der alle Staging-Factbuilds automatisch nacheinander aufruft
ETL - TransformationZiele • 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
WorkshopDataManager - 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 - TransformationAnwendungsfall Filterung • zeitliche Einschränkung • ungültige Datensätze • storniert • unvollständig ausgefüllt • inkonsistente Datensätze • Widersprüche zwischen Datenelementen
WorkshopDataManager - Factbuild filtern • Passen Sie den Factbuild F_FAELLE an • Vorgaben: • stornierte Datensätze sollen nicht nach DWH übernommen werden
WorkshopAuswertung • Werten Sie die Daten von Fällen aus: • Fallzahl pro entlassender Fachabteilung und Station
WorkshopAuswertung - Lösungen • Werten Sie die Daten von Fällen aus: • Fallzahl pro entlassender Fachabteilung und StationSELECT entl_orgfa, entl_orgpf, COUNT(*) FROM f_faelle GROUP BY entl_orgfa, entl_orgpf ORDER BY entl_orgfa, entl_orgpf
Demo + WorkshopAnwendungsfall 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 + WorkshopAnwendungsfall 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 + WorkshopAnwendungsfall Aggregation • Passen Sie den Factbuild F_FAELLE an • Vorgaben: • fügen Sie die folgenden Datenelemente hinzu:Anzahl dokumentierter Diagnosen je FallAnzahl 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!