Bewährte Methoden für das Entwerfen und Entwickeln komplexer Dataflows

Wenn der Dataflow, den Sie entwickeln, immer größer und komplexer wird, finden Sie hier einige Möglichkeiten, wie Sie Ihr ursprüngliches Design verbessern können.

In mehrere Dataflows aufteilen

Führen Sie nicht alles in einem Dataflow aus. Ein einzelner, komplexer Dataflow verlängert nicht nur den Datentransformationsprozess, sondern macht es auch schwieriger, den Dataflow zu verstehen und wiederzuverwenden. Sie können Ihren Dataflow in mehrere Dataflows aufteilen, indem Sie Tabellen in verschiedene Dataflows oder sogar eine Tabelle in mehrere Dataflows aufteilen. Sie können das Konzept einer berechneten Tabelle oder einer verknüpften Tabelle verwenden, um einen Teil der Transformation in einem Dataflow zu erstellen und ihn in anderen Dataflows wiederzuverwenden.

Datentransformations-Dataflows von Staging-/Extraktions-Dataflows trennen

Einige Dataflows nur zum Extrahieren von Daten (d. h. zum Staging von Dataflows) und andere nur zum Transformieren von Daten sind nicht nur hilfreich für die Erstellung einer mehrschichtigen Architektur, sondern auch für die Reduzierung der Komplexität von Dataflows. Einige Schritte extrahieren nur Daten aus der Datenquelle, z. B. Abrufen von Daten, Navigation und Datentypänderungen. Indem Sie die Staging-Dataflows und Transformations-Dataflows trennen, können Sie Ihre Dataflows einfacher entwickeln.

Multilayered dataflow architecture.

Bild mit Daten, die aus einer Datenquelle extrahiert werden, um Dataflows bereitzustellen, wobei die Tabellen entweder im Dataverse-Speicher oder im Azure Data Lake Storage gespeichert werden. Anschließend werden die Daten in Transformations-Dataflows verschoben, in denen die Daten transformiert und in die Data Warehouse-Struktur konvertiert werden. Anschließend werden die Daten in das semantische Modell verschoben.

Benutzerdefinierte Funktionen verwenden

Benutzerdefinierte Funktionen sind in Szenarien hilfreich, in denen eine bestimmte Anzahl von Schritten für eine Reihe von Abfragen aus verschiedenen Quellen ausgeführt werden muss. Benutzerdefinierte Funktionen können über die grafische Benutzeroberfläche im Power Query-Editor oder mithilfe eines M-Skripts entwickelt werden. Funktionen können in einem Dataflow in beliebig vielen Tabellen wiederverwendet werden.

Wenn Sie eine benutzerdefinierte Funktion verwenden, müssen Sie nur eine einzige Version des Quellcodes verwenden, sodass Sie den Code nicht duplizieren müssen. Daher ist die Aufrechterhaltung der Power Query-Transformationslogik und des gesamten Dataflows wesentlich einfacher. Weitere Informationen hierzu erhalten Sie im folgenden Blogbeitrag: In Power BI Desktop vereinfachte benutzerdefinierte Funktionen.

Screenshot of the Queries pane with the Get Holidays custom function and its data emphasized.

Hinweis

Gelegentlich erhalten Sie möglicherweise eine Benachrichtigung, die Ihnen mitteilt, dass eine Premium-Kapazität erforderlich ist, um einen Dataflow mit einer benutzerdefinierten Funktion zu aktualisieren. Sie können diese Nachricht ignorieren und den Dataflow-Editor erneut öffnen. Dadurch wird Ihr Problem in der Regel gelöst, es sei denn, Ihre Funktion bezieht sich auf die Abfrage „Last aktiviert“.

Abfragen in Ordner platzieren

Die Verwendung von Ordnern für Abfragen hilft beim Gruppieren verwandter Abfragen. Verbringen Sie beim Entwickeln des Dataflows etwas mehr Zeit damit, Abfragen in Ordnern anzuordnen, die sinnvoll sind. Mit diesem Ansatz können Sie in Zukunft Abfragen leichter finden und die Verwaltung des Codes wird deutlich einfacher.

Berechnete Tabellen verwenden

Berechnete Tabellen machen Ihren Dataflow nicht nur verständlicher, sie sorgen auch für eine bessere Leistung. Wenn Sie eine berechnete Tabelle verwenden, beziehen die anderen darin referenzierten Tabellen Daten aus einer „bereits verarbeiteten und gespeicherten“ Tabelle. Die Transformation ist viel einfacher und schneller.

Von der erweiterten Compute-Engine profitieren

Stellen Sie bei Dataflows, die im Power BI-Administratorportal entwickelt wurden, sicher, dass Sie die erweiterte Compute-Engine nutzen, indem Sie Verknüpfungen und Filtertransformationen zuerst in einer berechneten Tabelle durchführen, bevor Sie andere Arten von Transformationen vornehmen.

Viele Schritte in mehrere Abfragen aufteilen

Es ist schwierig, eine große Anzahl von Schritten in einer Tabelle nachzuverfolgen. Stattdessen sollten Sie eine große Anzahl von Schritten in mehrere Tabellen unterteilen. Sie können Last aktivieren für andere Abfragen verwenden. Deaktivieren Sie sie, wenn es sich um Zwischenabfragen handelt, und laden Sie nur die endgültige Tabelle über den Dataflow. Wenn Sie mehrere Abfragen mit jeweils kleineren Schritten haben, ist es einfacher, das Abhängigkeitsdiagramm zu verwenden und jede Abfrage zur weiteren Untersuchung zu verfolgen, als Hunderte von Schritten in einer Abfrage zu untersuchen.

Eigenschaften für Abfragen und Schritte hinzufügen

Die Dokumentation ist der Schlüssel zur einfachen Verwaltung von Code. In Power Query können Sie den Tabellen Eigenschaften hinzufügen und auch Schritte ausführen. Der Text, den Sie in den Eigenschaften hinzufügen, wird als QuickInfo angezeigt, wenn Sie die Maus über die Abfrage oder den Schritt bewegen. Diese Dokumentation hilft Ihnen, Ihr Modell in Zukunft zu verwalten. Mit einem Blick auf eine Tabelle oder einen Schritt können Sie verstehen, was dort passiert, anstatt noch einmal darüber nachzudenken und sich daran zu erinnern, was Sie in diesem Schritt getan haben.

Sicherstellen, dass sich die Kapazität in derselben Region befindet

Dataflows unterstützen derzeit nicht mehrere Länder oder Regionen. Die Premium-Kapazität muss sich in derselben Region wie Ihr Power BI-Mandant befinden.

Lokale Quellen von Cloud-Quellen trennen

Es wird empfohlen, einen separaten Dataflow für jeden Quelltyp zu erstellen, z. B. lokal, Cloud, SQL Server, Spark und Dynamics 365. Das Trennen von Dataflows nach Quelltyp erleichtert die schnelle Problembehandlung und vermeidet interne Grenzwerte, wenn Sie Ihre Dataflows aktualisieren.

Dataflows basierend auf der geplanten Aktualisierung trennen, die für Tabellen erforderlich ist

Wenn Sie eine Verkaufstransaktionstabelle haben, die stündlich im Quellsystem aktualisiert wird, und eine Produktzuordnungstabelle, die jede Woche aktualisiert wird, teilen Sie diese beiden Tabellen in zwei Dataflows mit unterschiedlichen Datenaktualisierungsplänen auf.

Terminplanung für verknüpfte Tabellen im selben Arbeitsbereich vermeiden

Wenn Sie regelmäßig von Ihren Dataflows ausgeschlossen werden, die verknüpfte Tabellen enthalten, kann dies an einem entsprechenden, abhängigen Dataflow im selben Arbeitsbereich liegen, der während der Dataflow-Aktualisierung gesperrt ist. Eine solche Sperre sorgt für Transaktionsgenauigkeit und stellt sicher, dass beide Dataflows erfolgreich aktualisiert werden. Sie kann jedoch die Bearbeitung blockieren.

Wenn Sie einen separaten Zeitplan für den verknüpften Dataflow einrichten, können Dataflows unnötig aktualisiert werden und die Bearbeitung des Dataflows blockieren. Es gibt zwei Empfehlungen, um dieses Problem zu vermeiden:

  • Legen Sie keinen Aktualisierungszeitplan für einen verknüpften Dataflow im selben Arbeitsbereich wie den Quell-Dataflow fest.
  • Wenn Sie einen Aktualisierungszeitplan separat konfigurieren und das Sperrverhalten vermeiden möchten, verschieben Sie den Dataflow in einen separaten Arbeitsbereich.