Teilen

07. February 2024

Microsoft Fabric im Fokus: Implementation einer Datenpipeline (Teil 2)

Im ersten Teil dieser Blogserie wurden die wichtigsten Komponenten von Microsoft Fabric vorgestellt. Der zweite Teil zeigt nun die praktische Umsetzung eines ETL- bzw. ELT-Prozesses auf. Dazu werden Technologien von Fabric benutzt, die typischerweise für diese Data-Engineering-Tätigkeiten eingesetzt werden, wie zum Beispiel Data Factory, Notebooks und Power BI.

Ein Diagramm der Cloud Infrastruktur, welches die verbunden Quellen und Datenspeicher zeigt.

Szenario in der Praxis

Aus Datenschutzgründen können keine realen Kundendaten verwendet werden. Stattdessen wird ein praxisnahes Szenario nachgestellt: Mit einer Data Pipeline wird ein Datensatz von einem HTTP- Endpoint in ein Lakehouse kopiert, danach mit in Notebooks ausgeführtem PySpark transformiert, als Parquet Files gespeichert, in Delta Tables geladen und mit Power BI visualisiert.

Als Datensets werden Textfiles der Internet Movie Database (IMDb) verwendet, welche unter datasets.imdbws.com zur Verfügung stehen. Davon werden folgende Dateien verwendet:

  • title.basics.tsv.gz (ca. 10.5 Mio Zeilen): u.a. Name des Titels, Dauer, Erscheinungsjahr

  • title.episode.tsv.gz (ca. 8 Mio Zeilen): Seasonnummer, Episodenummer sowie Angabe, zu welcher Show eine Episode gehört

  • title.ratings.tsv.gz (ca. 1.4 Mio Zeilen): Rating sowie Anzahl der Votes

Diese Dateien beinhalten Millionen von Datensätzen, die nicht nur Filme und Serien, sondern auch Videospiele, Musikvideos und Podcasts umfassen (siehe IMDb Advanced Search) und deshalb ein spannendes Beispiel für die Verarbeitung in Fabric darstellen.

Durch die Datenpipeline

Ein Data Lake oder Lakehouse, sowie auch ein klassisches DWH, gliedert sich üblicherweise in die drei Ebenen Bronze, Silver und Gold, auch Medallion Architecture genannt. Auf Databricks und Microsoft ist dieses Architekturprinzip ausführlich erklärt. Databricks geht zudem darauf ein, weshalb heutzutage im Lakehouse-Kontext oft von ELT- statt ETL-Prozessen die Rede ist (und wieso dies deshalb auch hier zutrifft).

Entsprechend der drei Schichten dieser Medallion Architecture wird der Lade- und Transformationsprozess für dieses Szenario gestaltet. Die Data Factory bzw. eine Data Pipeline orchestriert dabei den Datenfluss vom Bronze zum Silver und danach zum Gold Layer.

Für jedes der drei Datensets werden separate Kopieraktivitäten und Notebooks erstellt. Damit können die Ladevorgänge bis zum Silver Layer pro Quelle parallel gestartet werden. Nur wenn diese separaten Prozesse erfolgreich durchlaufen, wird der Gold Layer befüllt. Als letzter Schritt wird bei erfolgreichem Abschluss der gesamten Pipeline eine Meldung in einem Teams-Kanal abgesetzt. Das Verhalten bei Fehlern wird einfachheitshalber für diesen Blogpost nicht implementiert.

1) Beladen des Bronze Layer mit Copy Activity

  • Die gezippten Textdateien von datasets.imdbws.com laden und im Lakehouse nach Jahr/Monat/Tag ablegen.

2) Beladen des Silver Layer mit Notebooks und PySpark

  • Rohdaten entpacken und als benutzerfreundlichere Parquet Files sowie als Delta Tables speichern.

  • Kleinere Transformationen, wie die Anpassung von Datentypen oder Löschen von ungültigen Zeilen, ausführen, um validierte und vertrauenswürdige Daten bereitzustellen.

  • Die Daten sind nach der dritten Normalform modelliert (alternativ ist auch Data Vault denkbar).

3) Beladen des Gold Layer mit Notebooks und SQL

  • In diesem Layer werden domänenspezifische Datenmodelle und Data Marts für Analytics und Reporting bereitgestellt.

  • Der Modellierungsansatz ist üblicherweise ein dimensionales Datenmodell nach Kimball, was hier aber nicht umgesetzt wird. Da die drei geladenen IMDb-Datensets die gleiche Granularität aufweisen (eine Zeile ist ein Titel), werden sie nur zu einem grossen Set zusammengeführt.

  • Es interessieren nur Filme und Serien im engeren Sinne und solche, die nicht allzu obskur sind. Deshalb gelten folgende Filterkriterien: keine Adult-Filme, Rating > 0, Dauer > 0, Votes > 0, nur Titles vom Typ Film, Serie, Short o.ä. (keine Videospiele o.ä). Von den 10.5 Millionen Records bleiben danach noch ca. 975k übrig.

Ein Screenshot einer Data Pipeline in Azure.Übersicht über die Data Pipeline: Jede Quelle wird separat und parallel geladen.

Ein Screenshot der Explorer View von Azure Lakehouse.Übersicht über die Delta Tables und Ordnerstruktur im Lakehouse.

Ein Screenshot eines Notebooks mit PySpark Code.Ein Ausschnitt eines Notebooks mit PySpark-Code.

Ein Screenshot eines Power BI Reports.

IMDb-Daten mit Power BI visualisieren

Das Lakehouse stellt ein automatisch erstelltes und aktualisiertes Datenset auf Basis der Delta Tables zur Verfügung. Dies ermöglicht es, in Power BI einfach und schnell Reports zu erstellen. Mit diesem sogenannten Default Semantic Model wird ein Power BI Bericht mit ein paar interessanten Visualisierungen erstellt:

  • Oben links: Höhepunkt der Veröffentlichungen ist im Jahr 2016-2019 zu beobachten. Hat die Corona-Pandemie ab 2020 zu einem Einbruch geführt?

  • Oben rechts: Ab den 1950er Jahr werden Shorts von TV-Serien bzw. Episoden verdrängt.

  • Unten links: Die durchschnittliche Bewertung bleibt konstant pro Title-Type, ausser bei Shorts, die im Laufe der Jahre durchschnittlich immer höher bewertet werden.

  • Unten rechts: Die Top 10 Titles nach Anzahl Stimmen verteilen sich auf 2 Serien und 8 Filme, wovon drei von Christopher Nolan sind.
    Hinweis: Dies ist eine simple Rangfolge des Ratings nach Anzahl der Stimmen und entspricht nicht derjenigen von IMDb,welche mehrere Faktoren berücksichtigt (IMDb Ratings FAQ).

Eine Historisierung der Daten wurde für diesen Beitrag nicht berücksichtigt, könnte aber interessante Fragen beantworten: Wie verändert sich das Rating eines Titels über die Zeit? Wann werden nach einer Veröffentlichung am meisten Stimmen abgegeben? Gibt es ältere Titel, die plötzlich wieder im Trend liegen?

Fazit: Fabric bietet Flexibilität in der Datenverarbeitung und im Reporting

In dieser zweiteiligen Serie wurden die Kernkonzepte vorgestellt sowie ein praxisnaher ELT-Prozess umgesetzt, der mit in Fabric verfügbaren Technologien wie Data Factory, Notebooks und Power BI grosse Datenmengen von der Internet Movie Database verarbeitet und visualisiert. Es hat sich gezeigt, dass sich mit dem integrativen Ansatz von Fabric rasch und unkompliziert eine Datenpipeline realisieren lässt. Die verfügbaren Technologien bieten dabei Flexibilität für die Entwicklung. Mittels Dataflow Gen2 wäre auch eine Low-Code-Variante des hier verwendeten Prozesses denkbar gewesen.

Das Ziel war es, Ihnen mit diesem Beitrag wertvolle Einblicke in die Möglichkeiten und Funktionsweise von Microsoft Fabric zu geben. Falls Sie mehr erfahren möchten oder Potenzial für Ihre Anforderungen sehen, stehen wir Ihnen gerne zur Verfügung.

Weiterführende Ressourcen

Notebooks mit Code

Microsoft Fabric vorgestellt (Teil 1)

"Wir helfen Ihnen dabei, das Beste aus Fabric herauszuholen und Ihre Datenverarbeitung nahtlos zu optimieren."

Simon Würsten