Bei den Ankündigungen der letzten FabCon Europe in Wien ging es möglicherweise unter dem Radar um die Leistungsverbesserungen und die Kostenoptimierung für Dataflows Gen2.

Bevor wir näher darauf eingehen, wie sich diese Verbesserungen auf Ihr aktuelles Dataflows-Setup auswirken, gehen wir einen Schritt zurück und geben einen kurzen Überblick über Dataflows. Für diejenigen unter Ihnen, die neu bei Microsoft Cloth sind: Ein Dataflow Gen2 ist das No-Code/Low-Code-Cloth-Ingredient, das zum Extrahieren, Transformieren und Laden der Daten (ETL) verwendet wird.

Ein Dataflow Gen2 bietet zahlreiche Vorteile:

  • Nutzen Sie über 100 integrierte Konnektoren, um Daten aus einer Vielzahl von Datenquellen zu extrahieren
  • Nutzen Sie eine vertraute GUI von Energy Question, um Dutzende Transformationen auf die Daten anzuwenden, ohne eine einzige Codezeile schreiben zu müssen – a Traum wird wahr für viele Bürgerentwickler
  • Speichern Sie die Ausgabe der Datentransformation als Deltatabelle in OneLake, sodass die transformierten Daten nachgelagert von verschiedenen Cloth-Engines (Spark, T-SQL, Energy BI…) verwendet werden können.

Allerdings ist Einfachheit meist mit Kosten verbunden. Im Fall von Dataflows waren die Kosten ein deutlich höherer CU-Verbrauch im Vergleich zu Code-First-Lösungen wie Cloth-Notebooks und/oder T-SQL-Skripten. Dies wurde bereits in zwei großartigen Blogbeiträgen meines MVP-Kollegen Gilbert Quevauvilliers (Fourmoo) intestine erklärt und untersucht: Vergleich von Dataflow Gen2 und Pocket book hinsichtlich Kosten und Benutzerfreundlichkeitund Stepan Resl: Kopieraktivität, Dataflows Gen2 und Notebooks vs. SharePoint-Pay attentionadditionally werde ich keine Zeit damit verschwenden, über die Vergangenheit zu diskutieren. Konzentrieren wir uns stattdessen auf das, was die Gegenwart (und Zukunft) für Dataflows bringt!

Änderungen am Preismodell

Bild vom Autor erstellt

Sehen wir uns kurz an, was in der Abbildung oben angezeigt wird. Zuvor wurde jede Sekunde des Dataflow Gen2-Laufs mit 16 CU abgerechnet (CU steht für Capability Unit und stellt einen gebündelten Satz von Ressourcen dar – CPU, Speicher und I/O –, die in Synergie verwendet werden, um einen bestimmten Vorgang auszuführen). Abhängig von der Cloth-Kapazitätsgröße erhalten Sie eine bestimmte Anzahl von Kapazitätseinheiten – F2 stellt 2 CUs bereit, F4 stellt 4 CUs bereit und so weiter.

Kehren wir zu unserem Dataflows-Szenario zurück und lassen Sie uns dies anhand eines Beispiels aus der Praxis aufschlüsseln. Angenommen, Sie haben einen Datenfluss, der 20 Minuten (1200 Sekunden) läuft …

  • Bisher hätte dieser Dataflow-Lauf Sie gekostet 19.200 GE: 1200 Sekunden * 16 CUs
  • Nun, dieser Dataflow-Lauf wird Sie kosten 8.100 GE: 600 Sekunden (erste 10 Minuten) * 12 CUs + 600 Sekunden (nach den ersten 10 Minuten) * 1,5 CUs

Je länger Ihr Dataflow zur Ausführung benötigt, desto größer sind die potenziellen Einsparungen an CUs.

Das ist an sich schon erstaunlich, aber es steckt noch mehr dahinter. Ich meine, es ist schön, für den gleichen Arbeitsaufwand weniger zu bezahlen, aber was wäre, wenn wir diese 1200 Sekunden, sagen wir, 800 Sekunden schaffen könnten? Das würde uns additionally nicht nur CUs ersparen, sondern auch die Zeit bis zur Analyse verkürzen, da die Daten schneller verarbeitet worden wären. Und genau darum geht es bei den nächsten beiden Verbesserungen …

Moderner Gutachter

Die neue Vorschaufunktion mit dem Namen Fashionable Evaluator ermöglicht die Verwendung der neuen Abfrageausführungs-Engine (ausgeführt auf .NET Core Model 8) zum Ausführen von Dataflows. Gemäß der offizielle Microsoft-DokumenteDatenflüsse, auf denen der moderne Evaluator ausgeführt wird, können die folgenden Vorteile bieten:

  • Schnellere Datenflussausführung
  • Effizientere Verarbeitung
  • Skalierbarkeit und Zuverlässigkeit
Bild vom Autor erstellt

Die obige Abbildung zeigt die Leistungsunterschiede zwischen verschiedenen Dataflow-„Varianten“. Keine Sorge, wir werden diese Zahlen bald in einer Demo herausfordern und ich zeige Ihnen auch, wie Sie diese neuesten Verbesserungen in Ihren Cloth-Workloads aktivieren.

Partitioniertes Computing

Zuvor wurde eine Datenflusslogik nacheinander ausgeführt. Abhängig von der Komplexität der Logik kann es daher eine Weile dauern, bis bestimmte Vorgänge abgeschlossen sind, sodass andere Vorgänge im Datenfluss in der Warteschlange warten müssen. Mit dem Partitionierte RechenfunktionDataflow kann nun Teile der Transformationslogik parallel ausführen und so die Gesamtzeit bis zum Abschluss verkürzen.

Derzeit gibt es bestimmte Einschränkungen, wann die partitionierte Datenverarbeitung zum Einsatz kommt. Nämlich, dass nur ADLS Gen2-, Cloth Lakehouse-, Folder- und Azure Blob Storage-Konnektoren diese neue Funktion nutzen können. Wir werden später in diesem Artikel noch einmal untersuchen, wie es funktioniert.

3, 2, 1…Motion!

Okay, es ist an der Zeit, die von Microsoft bereitgestellten Zahlen in Frage zu stellen und zu prüfen, ob (und in welchem ​​Ausmaß) es einen Leistungsgewinn zwischen verschiedenen Datenflusstypen gibt.

Hier ist unser Szenario: Ich habe 50 CSV-Dateien generiert, die Dummy-Daten zu Bestellungen enthalten. Jede Datei enthält ca. 575.000 Datensätze, es sind additionally ca. Insgesamt 29 Millionen Datensätze (ca. 2,5 GB Daten). Alle Dateien sind bereits im SharePoint-Ordner gespeichert, was einen fairen Vergleich ermöglicht, da Dataflow Gen1 OneLake Lakehouse als Datenquelle nicht unterstützt.

Bild vom Autor

Ich habe vor, zwei Testreihen durchzuführen: Zuerst den Dataflow Gen1 in den Vergleich einbeziehen. In diesem Szenario werde ich die Daten nicht mit Dataflows Gen2 in OneLake schreiben (ja, ich weiß, es macht den Zweck von Dataflow Gen2 zunichte), da ich „Äpfel mit Äpfeln“ vergleichen und die Zeit ausschließen möchte, die zum Schreiben von Daten in OneLake benötigt wird. Ich werde die folgenden vier Szenarien testen, in denen ich einige grundlegende Operationen zum Kombinieren und Laden der Daten durchführe und dabei einige grundlegende Transformationen anwende (Spalten umbenennen usw.):

  1. Verwenden Sie Dataflow Gen1 (den alten Energy BI-Datenfluss).
  2. Nutzen Sie Dataflow Gen2 ohne zusätzliche Optimierungsverbesserungen
  3. Verwenden Sie Dataflow Gen2 nur mit aktiviertem Fashionable-Evaluator
  4. Verwenden Sie Dataflow Gen2 mit aktiviertem Fashionable Evaluator und Partitioned Compute

In der zweiten Serie vergleiche ich nur drei Varianten von Dataflow Gen2 (Punkte 2–4 aus der obigen Liste), wobei das Schreiben der Daten in ein Lakehouse aktiviert ist.

Fangen wir an!

Datenfluss Gen1

Der gesamte Transformationsprozess im alten Dataflow Gen1 ist ziemlich einfach – ich habe einfach alle 50 Dateien in einer einzigen Abfrage zusammengefasst, Spalten nach Trennzeichen aufgeteilt und Spalten umbenannt. Hier passiert additionally nichts wirklich Fortgeschrittenes:

Bild vom Autor

Der gleiche Satz von Operationen/Transformationen wurde auf alle drei Dataflows Gen2 angewendet.

Bitte beachten Sie, dass es mit Dataflow Gen1 nicht möglich ist, die Daten als Delta-Tabelle in OneLake auszugeben. Alle Transformationen werden im Datenfluss selbst gespeichert. Wenn Sie diese Daten additionally beispielsweise im semantischen Modell benötigen, müssen Sie die Zeit und die Ressourcen berücksichtigen, die zum Laden/Aktualisieren der Daten im semantischen Modell des Importmodus erforderlich sind. Aber dazu später mehr.

Dataflow Gen2 ohne Verbesserungen

Machen wir jetzt dasselbe, diesmal jedoch mit dem neuen Dataflow Gen2. In diesem ersten Szenario habe ich keine dieser neuen Leistungsoptimierungsfunktionen angewendet.

Bild vom Autor

Dataflow Gen2 mit Fashionable Evaluator

Okay, der Second der Wahrheit – aktivieren wir jetzt den Fashionable Evaluator für Dataflow Gen2. Ich gehe zu den Optionen und aktiviere dann auf der Registerkarte „Skalierung“ das Kontrollkästchen „Verwendung der modernen Abfrageauswertungs-Engine zulassen“:

Bild vom Autor

Alles andere bleibt genau wie im vorherigen Fall.

Dataflow Gen2 mit Fashionable Evaluator und Partitioned Compute

Im letzten Beispiel aktiviere ich beide neuen Optimierungsfunktionen in den Optionen des Dataflow Gen2:

Bild vom Autor

Kommen wir nun zum Testen und Analysieren der Ergebnisse. Ich werde alle vier Datenflüsse nacheinander aus der Cloth-Pipeline ausführen, damit wir sicher sein können, dass jeder von ihnen isoliert von den anderen ausgeführt wird.

Bild vom Autor

Und hier sind die Ergebnisse:

Bild vom Autor

Die Partitionierung spielte in diesem speziellen Szenario offensichtlich keine große Rolle, und ich werde in einem der folgenden Artikel anhand verschiedener Szenarios genauer untersuchen, wie die Partitionierung funktioniert. Dataflow Gen2 mit aktiviertem Fashionable Evaluator übertraf alle anderen bei weitemDies führt zu 30 % Einsparungen im Vergleich zum alten Dataflow Gen1 und ca. 20 % Zeitersparnis im Vergleich zum regulären Dataflow Gen2 ohne Optimierungen! Vergessen Sie nicht, dass sich diese Einsparungen auch in den CU-Einsparungen widerspiegeln, sodass die endgültigen geschätzten CU-Kosten für jede der verwendeten Lösungen wie folgt sind:

  • Dataflow Gen1: 550 Sekunden * 12 CUs = 6.600 CUs
  • Dataflow Gen2 ohne Optimierung: 520 Sekunden * 12 CUs = 6.240 CUs
  • Dataflow Gen2 mit Fashionable Evaluator: 368 Sekunden * 12 CUs = 4,416 CUs
  • Dataflow Gen2 mit Fashionable Evaluator und Partitionierung: 474 Sekunden * 12 CUs = 5,688 CUs

Ich wollte jedoch noch einmal überprüfen und bestätigen, dass meine Berechnung korrekt ist. Daher habe ich die Capability Metrics App geöffnet und einen Blick auf die von der App erfassten Metriken geworfen:

Bild vom Autor

Obwohl das Gesamtergebnis die im Pipeline-Ausführungsprotokoll angezeigten Zahlen genau widerspiegelt, ist die genaue Anzahl der verwendeten CUs in der App unterschiedlich:

  • Dataflow Gen1: 7.788 CUs
  • Dataflow Gen2 ohne Optimierung: 5.684 CUs
  • Dataflow Gen2 mit Fashionable Evaluator: 3.565 CUs
  • Dataflow Gen2 mit Fashionable Evaluator und Partitionierung: 4.732 CUs

Laut der Capability Metrics App verbrauchte ein Dataflow Gen2 mit aktiviertem Fashionable Evaluator in diesem speziellen Szenario weniger als 50 % der Kapazität im Vergleich zum Dataflow Gen1! Ich aircraft, in den folgenden Tagen/Wochen weitere Testanwendungsfälle zu erstellen und eine umfassendere Reihe von Checks und Vergleichen bereitzustellen, die auch die Zeit zum Schreiben der Daten in OneLake (mit Dataflows Gen2) im Vergleich zur Zeit zum Aktualisieren des semantischen Modells des Importmodus, das den alten Dataflow Gen1 verwendet, umfassen wird.

Abschluss

Im Vergleich zu anderen (Code-First-)Optionen galten Dataflows (zu Recht?) als „die langsamste und leistungsschwächste Choice“ für die Datenaufnahme in Energy BI/Microsoft Cloth. Allerdings verändern sich die Dinge in der Cloth-Welt schnell und ich finde es toll, wie das Cloth Information Integration-Workforce das Produkt ständig verbessert. Ehrlich gesagt bin ich gespannt, wie sich die Leistung und die Kosten von Dataflows Gen2 im Laufe der Zeit entwickeln, sodass wir in Betracht ziehen können, Dataflows nicht nur für Low-Code-/No-Code-Datenerfassungs- und Datentransformationsanforderungen zu nutzen, sondern auch als praktikable Different zu Code-First-Lösungen aus Kosten-/Leistungssicht.

Danke fürs Lesen!

Haftungsausschluss: Ich habe keine Verbindung zu Microsoft (außer dass ich ein Microsoft Information Platform MVP bin) und wurde von Microsoft weder angesprochen noch gesponsert, um diesen Artikel zu schreiben

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert