Implementierung einer Medaillon-Architektur (Bronze, Silver, Gold) und der Notwendigkeit, auf Daten über Schichten hinweg ohne physische Datenverdopplung zuzugreifen.
→Verwenden Sie OneLake-Shortcuts, um auf Daten in anderen Lakehouses oder Schichten zu verweisen.
Warum: Shortcuts sind symbolische Links in OneLake. Sie bieten einen einheitlichen Namensraum und ermöglichen den Zugriff auf Daten ohne Kopieren, was ideal für ein logisches Data Mesh oder eine Medaillon-Architektur ist.
Referenz↗
Migration einer bestehenden, T-SQL-lastigen Analyse-Workload von Azure Synapse zu Fabric.
→Verwenden Sie ein Fabric Data Warehouse.
Warum: Das Fabric Warehouse bietet volle T-SQL-Kompatibilität und ist somit das ideale Ziel für die Migration bestehender SQL-Skripte, gespeicherter Prozeduren und Analystenabfragen mit minimalen Änderungen. Der Lakehouse SQL-Endpunkt hat schreibgeschützten T-SQL-Zugriff und verwendet Spark SQL für Schreibvorgänge.
Erfassen und Abfragen von hochvolumigen, hochfrequenten Streaming-Daten (z. B. IoT-Telemetrie) mit Latenzzeiten im Sub-Sekundenbereich.
→Verwenden Sie Fabric Eventstream für die Erfassung und eine KQL-Datenbank für Speicherung und Analyse.
Warum: Dies ist der speziell für Streaming-Analysen entwickelte Stack in Fabric. KQL (Kusto Query Language) ist für die Zeitreihenanalyse von Streaming-Daten optimiert und bietet eine wesentlich geringere Latenz als Batch-orientierte Lakehouses oder Warehouses.
Implementierung von Slowly Changing Dimension (SCD) Typ 2, um eine vollständige Historie von Dimensionsänderungen in einem Lakehouse zu pflegen.
→Verwenden Sie eine `MERGE INTO`-Anweisung in einem Spark-Notebook oder einer Pipeline. Gleichen Sie den Geschäftsschlüssel ab; `WHEN MATCHED` aktualisiert den alten Datensatz (setzt `IsCurrent` auf false, `EndDate` auf jetzt); `WHEN NOT MATCHED` fügt den neuen Datensatz ein.
Warum: Die `MERGE`-Operation von Delta Lake bietet atomare Upsert-Funktionen, was sie zur Standard- und effizientesten Methode zur Implementierung von SCD-Logik in einem Fabric Lakehouse macht.
Replikation von Daten nahezu in Echtzeit aus einer operativen Datenbank (z. B. Azure SQL DB) in ein Fabric Lakehouse für Analysen.
→Verwenden Sie Fabric Mirroring.
Warum: Mirroring ist eine in Fabric integrierte CDC-Lösung (Change Data Capture) mit geringer Latenz und geringem Impact. Es repliziert Daten- und Schemaänderungen automatisch in OneLake als Delta-Tabellen, wodurch die Notwendigkeit komplexer ETL-Pipelines entfällt.
Erfassen und Transformieren komplexer, verschachtelter JSON-Daten aus einer API in eine abgeflachte, strukturierte Delta-Tabelle.
→Verwenden Sie ein PySpark-Notebook. Verwenden Sie Funktionen wie `from_json` zum Parsen des Schemas und `explode` zum Abflachen von Arrays in Zeilen.
Warum: PySpark bietet die leistungsstärksten und flexibelsten Tools zur programmatischen Handhabung komplexer und sich entwickelnder JSON-Strukturen, weit über die Fähigkeiten einer Standard-Kopieraktivität hinaus.
Erfassen von Daten in Fabric aus einer lokalen SQL Server-Datenbank, die sich hinter einer Unternehmensfirewall befindet.
→Installieren und konfigurieren Sie ein lokales Datengateway auf einem Server innerhalb des lokalen Netzwerks. Fügen Sie das Gateway als Datenquelle in Fabric hinzu.
Warum: Das Gateway fungiert als sichere Brücke, die Abfragen und Daten zwischen Fabric-Cloud-Diensten und lokalen Datenquellen weiterleitet, ohne dass eingehende Firewall-Ports geöffnet werden müssen.
Die Abfrageleistung einer großen, häufig aktualisierten Delta-Tabelle hat sich aufgrund der Ansammlung vieler kleiner Datendateien verschlechtert.
→Führen Sie den Befehl `OPTIMIZE` aus, um kleine Dateien zu größeren zu verdichten. Verwenden Sie optional `ZORDER BY` für häufig gefilterte Spalten, um verwandte Daten zusammenzufassen.
Warum: Weniger, größere Dateien sind für Spark wesentlich effizienter zu lesen. Die Z-Sortierung verbessert das Überspringen von Daten, wodurch Abfragen noch weniger Daten lesen können. Dies ist eine kritische Wartungsaufgabe für Delta-Tabellen.
Aggregieren von Streaming-Zeitreihendaten in feste, nicht überlappende Zeitintervalle (z. B. Durchschnittstemperatur pro Sensor alle 5 Minuten).
→Verwenden Sie eine KQL-Abfrage mit dem Operator `summarize` und der Funktion `bin()`. Beispiel: `SensorData | summarize avg(temperature) by sensor_id, bin(timestamp, 5m)`.
Warum: Die Funktion `bin()` ist in KQL die standardmäßige, hochoptimierte Methode, um Ereignisse für die Aggregation in feste Zeitfenster (Tumbling Windows) zu gruppieren.
Die Aktualisierung eines Dataflow Gen2 ist langsam. Die Datenquelle ist eine relationale Datenbank wie Azure SQL.
→Überprüfen Sie die Transformationsschritte im Power Query-Editor, um sicherzustellen, dass Query Folding aktiv ist. Ordnen oder ändern Sie Schritte, um das Folding zu maximieren.
Warum: Query Folding verschiebt die Transformationslogik zurück zur Quelldatenbank, um als einzelne native Abfrage ausgeführt zu werden. Dies ist wesentlich effizienter, als alle Rohdaten in die Dataflow-Engine zu ziehen und sie im Speicher zu transformieren.
Ein Spark-Notebook führt einen langsamen Join zwischen einer sehr großen Faktentabelle (Milliarden von Zeilen) und einer kleinen Dimensionstabelle (Tausende von Zeilen) durch.
→Verwenden Sie einen Broadcast-Join, indem Sie einen Hinweis (`spark.sql.functions.broadcast`) geben oder den Optimierer basierend auf Statistiken auswählen lassen.
Warum: Broadcasting sendet die gesamte kleine Tabelle an jeden Executor-Knoten. Dies vermeidet einen kostspieligen "Shuffle"-Vorgang, bei dem die Daten der großen Tabelle neu partitioniert und über das Netzwerk gesendet werden müssen, was die Leistung drastisch verbessert.
Eine Datenpipeline orchestriert mehrere Aktivitäten. Eine Aktivität kann fehlschlagen, aber nachfolgende, unabhängige Aktivitäten sollten weiterhin ausgeführt werden, und der Gesamtfehler sollte protokolliert werden.
→Konfigurieren Sie Aktivitätenabhängigkeiten. Aktivitäten, die unabhängig vom Ergebnis ausgeführt werden sollen, sollten von der vorherigen Aktivität mit der Bedingung "Abschluss" abhängen.
Warum: Dies ermöglicht den Aufbau robuster, paralleler Ausführungspfade. Sie können separate Branches für "Erfolgreich" und "Fehlgeschlagen" Bedingungen erstellen, um benutzerdefinierte Protokollierungs- oder Benachrichtigungslogik zu implementieren.
Eine Pipeline zum inkrementellen Laden von Daten aus einer Quelle mit einem `last_modified`-Zeitstempel.
→Implementieren Sie ein Wasserzeichen-Muster. Speichern Sie den `max(last_modified)` des letzten erfolgreichen Laufs. Fragen Sie beim nächsten Lauf die Quelle nach Datensätzen ab, bei denen `last_modified` größer als das gespeicherte Wasserzeichen ist.
Warum: Dies ist das effizienteste Muster für inkrementelle Ladevorgänge aus Quellen, die einen Änderungszeitstempel bereitstellen, wodurch sichergestellt wird, dass nur neue oder aktualisierte Daten verarbeitet werden, was Datenübertragung und Rechenaufwand minimiert.
Analysieren Sie einen Echtzeitstrom von IoT-Daten, um ungewöhnliche Spitzen oder Einbrüche bei Sensorwerten zu erkennen.
→Verwenden Sie die Funktion `series_decompose_anomalies()` in einer KQL-Abfrage innerhalb einer Eventhouse/KQL-Datenbank.
Warum: Diese integrierte KQL-Funktion wurde speziell für die Anomalieerkennung in Zeitreihen entwickelt. Sie zerlegt die Reihe automatisch in saisonale, Trend- und Restkomponenten, um statistisch signifikante Ausreißer zu identifizieren, was nur minimale manuelle Konfiguration erfordert.
Daten aus einem Warehouse, einem Lakehouse und einer gespiegelten Azure SQL-Datenbank in einer einzigen T-SQL-Abfrage verknüpfen müssen, ohne Daten zu verschieben.
→Verwenden Sie dreiteilige Namenskonventionen (`database.schema.table`) in einer Abfrage, die vom Warehouse- oder Lakehouse SQL-Endpunkt ausgeführt wird. Verwenden Sie Shortcuts, um auf die gespiegelte Datenbank zu verweisen.
Warum: Fabric bietet eine vereinheitlichte Abfrage-Engine, die über verschiedene Fabric-Elemente innerhalb desselben Arbeitsbereichs mit einer einzigen SQL-Anweisung auf Daten zugreifen kann, was die Datenvirtualisierung ermöglicht.
Ein Dataflow muss eine Datei verarbeiten, in der einige Zeilen ungültig sein können. Der gesamte Flow sollte nicht fehlschlagen; gültige Zeilen sollten geladen und ungültige Zeilen protokolliert werden.
→Fügen Sie in Power Query einen Schritt hinzu, um Zeilen zu validieren und eine Spalte "IsValid" zu erstellen. Erstellen Sie dann von diesem Punkt aus zwei Referenzabfragen: eine, die nach `IsValid = true` filtert, um in das Ziel zu laden, und eine weitere, die nach `IsValid = false` filtert, um in ein Fehlerprotokoll zu laden.
Warum: Dieses Muster bietet eine robuste Fehlerbehandlung durch Aufteilung des Datenstroms. Es verhindert, dass einige fehlerhafte Zeilen den gesamten Prozess stoppen und bietet einen klaren Mechanismus zur Überprüfung von Datenqualitätsproblemen.