ETL‐Prozess - Fuenfgeld/DMA2024TeamB GitHub Wiki
Der ETL-Prozess, welcher die Phasen der Extraktion, Transformation und Laden umfasst, stellt einen essenziellen Schritt in der Datenintegrationsmethodik dar. Er ermöglicht die effiziente Übertragung von Daten aus heterogenen Quellen in ein zentrales System, wo sie harmonisiert und für weiterführende Analysen vorbereitet werden.
Extraktion (Extraction):
In dieser Phase werden Daten aus diversen heterogenen Datenquellen selektiert und extrahiert, um eine konsolidierte Informationsbasis zu schaffen. Diese Vorgehensweise gewährleistet die Erfassung relevanter Daten für weiterführende Analytik oder Speicherungszwecke.
Transformation (Transformation):
Durch gezielte Transformationen werden die extrahierten Daten in eine einheitliche Struktur überführt, um Kohärenz und Konsistenz zu gewährleisten. Diese Stufe zielt darauf ab, Inkonsistenzen zu beseitigen und die Daten für spezifische Anwendungsfälle vorzubereiten, wodurch ihre analytische Aussagekraft erhöht wird.
Laden (Loading):
Die transformierten Daten werden in ein definiertes Zielsystem integriert, wobei sie in einer organisierten Struktur für weitere Analysen und Reportingzwecke bereitgestellt werden. Das Laden der Daten in ein dediziertes System ermöglicht eine zentrale Datenspeicherung, um eine kohärente Datenbasis für umfassende Analysen sicherzustellen.
Ein Star-Schema ist eine Datenmodellierungstechnik, die häufig in Data Warehouses für die Organisation von Daten verwendet wird. Es besteht aus einer zentralen Fact-Tabelle, die mit mehreren Dimensionstabellen verbunden ist. Dieses Modell bildet einen "Stern" mit der Fact-Tabelle als Mittelpunkt und den Dimensionstabellen als Strahlen. Star-Schemata sind flexibel und leicht erweiterbar. Neue Dimensionen können problemlos hinzugefügt werden, ohne die bestehende Struktur zu beeinträchtigen. Das ist wichtig, wenn zusätzliche Aspekte in zukünftigen Analysen berücksichtigt werden sollen. Die Sternstruktur ist intuitiv und leicht verständlich. Es ermöglicht klare Beziehungen zwischen den Fakten und den beschreibenden Dimensionen, was die Analyse und Berichterstellung vereinfacht. Abfragen können effizient durchgeführt werden, da die Daten in einer klaren, denormalisierten Struktur vorliegen. Dies führt zu schnelleren Analyseergebnissen, insbesondere wenn komplexe Abfragen über verschiedene Dimensionen hinweg erforderlich sind. Durch die Verwendung von Indizes und aggregierten Werten in der Fact-Tabelle kann die Abfrageleistung verbessert werden. Dies ist besonders wichtig, wenn große Datenmengen analysiert werden.
Bestandteile eines ETL-Star-Schemas:
Fact-Tabelle:
Enthält die Fakten oder numerischen Messungen, die analysiert werden sollen (z.B., QoL-Werte nach Brustkrebsdiagnose) und verwendet Fremdschlüssel, um mit den Dimensionstabellen verbunden zu werden.
Dimensionstabellen:
Jede Dimensionstabelle repräsentiert eine beschreibende Dimension (z.B., Patienteninformationen, Diagnosedaten, Alter, Ethnizität, Geschlecht, Behandlungen, Medikationen) und enthält Attribute und Hierarchien, um die Dimension zu charakterisieren. Eine Dimensionstabelle verwendet Primärschlüssel, die in der Fact-Tabelle als Fremdschlüssel referenziert werden.
Begründung für die Wahl des Schemas:
In unserem Fall, bei der Analyse von QoL-Werten verschiedener Subgruppen, bietet das Star-Schema eine geeignete Struktur, um relevante Dimensionen (wie Patientenmerkmale, Diagnosedetails und Behandlungsdaten) mit den Hauptfakten zu verbinden. Diese Struktur erleichtert die Analyse verschiedener Einflussfaktoren auf die QoL-Werte und ermöglicht eine fundierte Erkenntnisgewinnung.
Um die Studienziele zu erreichen, sollen die folgenden Fact- und Dimensionstabellen verwendet werden:
flowchart TB
B(d_Patient) --- A[F_BreastCancerQoL]
C(d_Agegroups) --- A
D(d_Comorbidity) --- A
A --- E(d_Cancertherapy)
A ---F(d_Medication)
A ---G(d_Primarytumor)
Primäres Studienziel - Analyse des Einflusses von Komorbiditäten auf den QoL-Wert nach Brustkrebsdiagnose:
-
Fact-Tabelle:
F_BreastCancerQoL
-
Dimensionstabellen:
-
d_Patient
(enthält demografische Informationen) -
d_Comorbidity
(enthält Informationen zu Komorbiditäten)
-
Sekundäre Studienziele: a. Altersbedingte QoL-Analyse:
-
Fact-Tabelle:
F_BreastCancerQoL
-
Dimensionstabellen:
d_Patient
-
d_AgeGroup
(separate Tabelle für Altersgruppen)
b. Ethnisch-bedingte QoL Analyse:
-
Fact-Tabelle:
F_BreastCancerQoL
-
Dimensionstabellen:
-
d_Patient
(Enthält Ethnizität)
-
c. Geschlechtsspezifische QoL-Analyse:
-
Fact-Tabelle:
F_BreastCancerQoL
-
Dimensionstabellen:
-
d_Patient
(Enthält Geschlecht)
-
d. Einfluss von Chemotherapie auf QoL:
-
Fact-Tabelle:
F_BreastCancerQoL
-
Dimensionstabellen:
d_Patient
-
d_Cancertherapy
(enthält Informationen zur Krebstherapie)
e. Einfluss nicht-Krebs-bedingter Begleitmedikationen auf QoL:
-
Fact-Tabelle:
F_BreastCancerQoL
-
Dimensionstabellen:
d_Patient
-
d_Medication
(enthält Informationen zu nicht-Krebs-bedingten Begleitmedikationen)
Das vorliegende Kapitel bietet eine detaillierte Einsicht in den Prozess der Datenintegration und -transformation von Synthea-Quelldaten in unser Data Warehouse. Durch sorgfältiges Mapping und umfassende Transformationsschritte werden die ursprünglichen Quelldaten in strukturierte Data-Warehouse-Tabellen überführt. Die folgenden Abschnitte präsentieren eine Übersicht über die wichtigsten Variablen in den Fact- und Dimension-Tabellen sowie deren Ursprungsquellen in den Synthea-Daten. Diese umfassende Darstellung soll eine klare Verständlichkeit für die Ursprünge und Bedeutungen der Daten im Data Warehouse gewährleisten.
Fact-Tabelle: F_BreastCancerQoL
Data Warehouse Variable | Ursprungsquellvariable | Bedeutung |
---|---|---|
PatientId | p.id | Eindeutige Identifikationsnummer für jeden Patienten in den Synthea-Quelldaten. |
Age_group_diagnosis_ID | STRFTIME('%Y', 'now') - STRFTIME('%Y', p.birthdate) - (STRFTIME('%m-%d', 'now') < STRFTIME('%m-%d', p.birthdate)) AS AGE_diagnosis | Altersgruppe des Patienten zum Zeitpunkt der Krebsdiagnose, basierend auf dem Alter in den Synthea-Quelldaten. |
Primary_Tumor_ID | o.encounter AS ID, MAX(CASE WHEN o.code IN ('85319-2', '10480-2', '21908-9', '21906-3', '21905-5', '21907-1') THEN o.value END) AS PRIMARYTUMOR_ID | Eindeutige Identifikationsnummer für den primären Tumor des Patienten, basierend auf histologischen Informationen aus den Synthea-Quelldaten. |
Comorbidity_ID | c.code | Eindeutige Identifikationsnummer für die Begleiterkrankung des Patienten in den Synthea-Quelldaten. |
Comorbidity_YesNo | c.code | Binäre Kennzeichnung, ob der Patient eine Begleiterkrankung hat (1) oder nicht (0), basierend auf den Synthea-Quelldaten. |
Ethnicity | p.ethnicity | Ethnische Zugehörigkeit des Patienten aus den Synthea-Quelldaten. |
Gender | p.gender | Geschlecht des Patienten aus den Synthea-Quelldaten. |
Cancertherapy_ID | m.code | Eindeutige Identifikationsnummer für die Krebstherapie des Patienten in den Synthea-Quelldaten. |
Chemotherapy_YesNo | CASE WHEN Description LIKE '%Epirubicin%' THEN 1 WHEN Description LIKE '%Cyclophosphamide%' THEN 1 WHEN Description LIKE '%Paclitaxel%' THEN 1 ELSE 0 END AS CHEMOTHERAPY | Binäre Kennzeichnung, ob der Patient eine Chemotherapie erhält (1) oder nicht (0), basierend auf den Synthea-Quelldaten. |
Targetedtherapy_YesNo | CASE WHEN Description LIKE '%Anastrozole%' THEN 1 WHEN Description LIKE '%Trastuzumab%' THEN 1 WHEN Description LIKE '%Palbociclib%' THEN 1 WHEN Description LIKE '%Tamoxifen%' THEN 1 WHEN Description LIKE '%Verzenio%' THEN 1 ELSE 0 END AS TARGETEDTHERAPY | Binäre Kennzeichnung, ob der Patient eine zielgerichtete Therapie erhält (1) oder nicht (0), basierend auf den Synthea-Quelldaten. |
Medication_ID | m.code | Eindeutige Identifikationsnummer für die Medikation des Patienten in den Synthea-Quelldaten. |
Medication_YesNo | m.code | Binäre Kennzeichnung, ob der Patient Medikation erhält (1) oder nicht (0), basierend auf den Synthea-Quelldaten. |
QoL_Value_first | o.value (QoLS) | Erster gemessener Wert der Lebensqualität des Patienten, basierend auf den Synthea-Quelldaten. |
QoL_Value_last | o.value (QoLS) | Letzter gemessener Wert der Lebensqualität des Patienten, basierend auf den Synthea-Quelldaten. |
D-Tabelle: d_Agegroups
Data Warehouse Variable | Ursprungsquellvariable | Ursprungstabelle | Bedeutung |
---|---|---|---|
ID | Integer [primary key] | Eindeutige Identifikationsnummer für die Altersgruppe in den Data-Warehouse-Daten. | |
Age_group | String [not null] | Bezeichnung der Altersgruppe, z.B. '<50' oder '>=50'. | |
Min_Age | Integer [not null] | Minimales Alter, das die Altersgruppe repräsentiert. | |
Max_Age | Integer [not null] | Maximales Alter, das die Altersgruppe repräsentiert. |
D-Tabelle: d_Patients
Data Warehouse Variable | Ursprungsquellvariable | Ursprungstabelle | Bedeutung |
---|---|---|---|
Id | p.id | patients | Eindeutige Identifikationsnummer für jeden Patienten in den Synthea-Quelldaten. |
AGE_Studyinclusion | STRFTIME(...) | patients, conditions | Alter des Patienten zum Zeitpunkt der Studienaufnahme basierend auf den Synthea-Quelldaten. |
AGE_diagnosis | STRFTIME(...) | patients, conditions | Alter des Patienten zum Zeitpunkt der Krebsdiagnose basierend auf den Synthea-Quelldaten. |
Maritalstatus | p.marital | patients | Familienstand des Patienten aus den Synthea-Quelldaten. |
D-Tabelle: d_Comorbidity
Data Warehouse Variable | Ursprungsquellvariable | Ursprungstabelle | Bedeutung |
---|---|---|---|
ID | code | medications | Eindeutige Identifikationsnummer für jedes Medikament. |
Description | Description | medications | Beschreibung des Medikaments aus den Synthea-Quelldaten. |
D-Tabelle: d_PrimaryTumor
Data Warehouse Variable | Ursprungsquellvariable | Ursprungstabelle | Bedeutung |
---|---|---|---|
ID | o.encounter | observations | Eindeutige Identifikationsnummer für den primären Tumor. |
HER2_Status | MAX(CASE WHEN ... | observations | HER2-Status des primären Tumors aus den Synthea-Quelldaten. |
HR_Status | MAX(CASE WHEN ... | observations | HR-Status des primären Tumors aus den Synthea-Quelldaten. |
Stage | MAX(CASE WHEN ... | observations | Stadium des primären Tumors aus den Synthea-Quelldaten. |
Nodal_Status | MAX(CASE WHEN ... | observations | Nodaler Status des primären Tumors aus den Synthea-Quelldaten. |
T_Status | MAX(CASE WHEN ... | observations | T-Status des |
Der ETL-Code (Extraktion, Transformation und Laden) dieses Projekts liegt im ETL-Notebook. Dieses Colab-Notebook führt die notwendigen Schritte durch, um die Quelldaten aus dem Synthea Breast Cancer-Datensatz zu extrahieren, zu transformieren und in eine Data Warehouse-Datenbank zu laden. Durch die Ausführung dieses Codes wird die Grundlage für Analysen und Auswertungen geschaffen, die Einblicke in verschiedene Aspekte des Brustkrebsdatensatzes ermöglichen.
Hinweis: Vor der Ausführung des Notebooks ist es wichtig sicherzustellen, dass die Quelldaten auf Google Drive verfügbar sind und die Ziel-SQLite-Datenbank den Namen TeamB_Warehouse.db
trägt.
Bitte beachte, dass für die Verwendung des ETL-Codes grundlegende Kenntnisse in der Verwendung von Colab-Notebooks und SQL erforderlich sind.