Freigeben über


Variable Verweise in einem Dataflow

Hinweis

Dieser Artikel konzentriert sich auf eine Lösungsarchitektur von CI/CD- und ALM-Lösungsarchitekturen (Application Lifecycle Management) für Dataflow Gen2 , die auf der Integration von Variablenbibliotheken basiert und nur für Dataflow Gen2 mit CI/CD-Unterstützung gilt.

Fabric-Variablenbibliotheken in Dataflow Gen2 ermöglichen die zentrale, wiederverwendbare Konfigurationsverwaltung in allen Umgebungen. Indem Sie direkt in Ihren Datenflussskripten auf Variablen verweisen, können Sie das Verhalten dynamisch anpassen, ohne hartcodierte Werte zu verwenden, was ideal für CI/CD-Workflows ist. Diese Integration vereinfacht die Bereitstellung über Phasen hinweg, indem arbeitsbereichspezifische Werte (z. B. Lakehouse- oder Workspace-IDs) zur Laufzeit eingefügt werden können, wodurch Ihre Datenflüsse anpassbarer und verwalteter werden können.

Dieses Lernprogramm führt Sie durch eine Beispiellösung, die Variablenverweise in einem Dataflow verwendet, und zeigt Ihnen, wie Sie:

  • Festlegen von Variablen: Verwenden der Fabric-Variablenbibliotheken und ihrer unterschiedlichen Datentypen
  • Variabel gesteuerte Quelle: Ein Lakehouse mit dem WideWorldImporters-Beispieldatensatz als Quelle verwenden
  • Variable gesteuerte Logik: Verwenden der Eingabe-Widgets, die im gesamten Bereich der Dataflow-Erfahrung verfügbar sind
  • Variablengetriebenes Ziel: Nutzung eines Lagers als Ziel

Diagramm einer Lösungsarchitektur, die variable Verweise in Dataflow Gen2 verwendet.

Hinweis

Die in diesem Artikel vorgestellten Konzepte sind universell für Dataflow Gen2 und gelten für andere Quellen und Ziele, die über die hier gezeigten hinausgehen.

Das Szenario

Screenshot der Abfrage mit dem Namen dimension_city für das Szenario in Dataflow Gen2.

Der in diesem Szenario verwendete Datenfluss ist einfach, aber die beschriebenen Kernprinzipien gelten für alle Datentypen von Datenflüssen. Sie stellt eine Verbindung mit der Tabelle mit dem Namen dimension_city aus dem Beispieldatensatz "Wide World Importers" her, der in einem Lakehouse gespeichert ist. Sie filtert Zeilen, in denen die Spalte "SalesTerritory" "Südost" entspricht, und lädt das Ergebnis in eine neue Tabelle namens "City in a Warehouse". Alle Komponenten – Lakehouse, Warehouse und Dataflow – befinden sich im gleichen Arbeitsbereich. Um den Datenfluss dynamisch zu gestalten, verwenden Sie Variablen, um die Quelltabelle, den Filterwert und die Zieltabelle zu steuern. Diese Änderungen ermöglichen die Ausführung des Datenflusses mit Werten, die in Fabric-Variablenbibliotheken gespeichert sind, anstelle hartcodierter.

Festlegen von Variablen

Hinweis

Stellen Sie sicher, dass Fabric-Variablenbibliotheken für Ihre Organisation oder Sicherheitsgruppe aktiviert sind. Erfahren Sie mehr über die ersten Schritte mit Variablenbibliotheken.

Als bewährte Methode empfiehlt es sich immer, vor dem Erstellen einer Lösung einen Entwurf zu berücksichtigen und welche Komponenten aus Ihrem Dataflow dynamisch aus einer Variablenbibliothek stammen. Während Sie mehrere Bibliotheken in einem Arbeitsbereich erstellen können, verwendet dieses Beispiel eine einzelne Bibliothek mit dem Namen "Meine Bibliothek" , die die Variablen enthält, die von der Dataflow Gen2 verwendet werden:

Variablenname Typ Zweck
WorkspaceId Leitfaden Wird für die Datenquellen- und Zielskripts im Dataflow verwendet
LakehouseId Leitfaden Ermittelt die ID des Lakehouses, das als Quelle genutzt wird.
WarehouseId Leitfaden Bestimmt die ID des Lagers, das als Ziel verwendet wird.
Gebiet String Legt fest, welcher Wert verwendet werden soll, um die Filterlogik im Dataflow zu steuern.

Stellen Sie sicher, dass Sie die Standardwerte festlegen, die Ihrer eigenen Umgebung entsprechen, und speichern Sie dann die Variablebibliothek.

Screenshot der neu erstellten Fabric-Variablenbibliotheken mit Variablen WorkspaceId, LakehouseId, WarehouseId und Territory.

Variable gesteuerte Quelle

Wenn Sie einen der Fabric-Connectors wie Lakehouse, Warehouse oder Fabric SQL verwenden, befolgen sie alle dieselbe Navigationsstruktur und verwenden dasselbe Eingabeformat. In diesem Szenario erfordert keiner der Verbinder manuelle Eingaben, um eine Verbindung herzustellen. Jeder zeigt jedoch an, mit welchem Arbeitsbereich und Element es eine Verbindung über die Navigationsschritte in Ihrer Abfrage herstellt. Beispielsweise enthält der erste Navigationsschritt die workspaceId, mit der die Abfrage eine Verbindung herstellt.

Screenshot des Schritts Navigation 1 mit dem Wert workspaceId in der Formelzeile für die Dimension_Stadt-Abfrage.

Ziel ist es, die festkodierten Werte in der Formelleiste durch Variablen zu ersetzen. Insbesondere möchten Sie die Variablen WorkspaceId und LakehouseId verwenden, um diese Logik zu steuern. Zunächst müssen Sie diese Variablen in die Dataflow Gen2 übertragen. Ein empfohlener Ansatz besteht darin, Abfragen für jede unterschiedliche Variable zu erstellen, um variablen zu zentralisieren und einfach zu verwalten, die Sie verwenden möchten. Erstellen Sie dazu eine leere Abfrage, indem Sie im Menüband " Daten abrufen" aufrufen und im Dropdownmenü die Option "Leere Abfrage" auswählen.

Screenshot des Eintrags

Wenn Sie diese Option auswählen, wird ein neues Dialogfeld angezeigt, in dem die leere Abfrage angezeigt wird, die erstellt wird. Sie können "OK" auswählen, um diese neue leere Abfrage mitzubringen.

Screenshot des Dialogfelds

Nachdem Ihre Abfrage erstellt und im Datenfluss angezeigt wurde, benennen Sie sie in "WorkspaceId" um, und ersetzen Sie die Formel im Quellschritt wie folgt:

Variable.ValueOrDefault("$(/**/My Library/WorkspaceId)", "Your Workspace ID")

Dieses Skript ist im Grunde der, der bestimmen kann, welche Bibliothek und Variable abgerufen werden soll. Das zweite Argument der Variable.ValueOrDefault Funktion bestimmt, welcher Wert bereitgestellt werden soll, wenn eine Variable nicht abgerufen werden kann.

Hinweis

Ersetzen Sie die Zeichenfolge "Ihre Arbeitsbereichs-ID", das zweite Argument der Funktion, durch ihren eigenen entsprechenden Wert in Ihrer Umgebung und speichern Sie die Abfrage.

Wiederholen Sie diesen Vorgang für die LakehouseId-Variable , und erstellen Sie eine Abfrage mit demselben Namen wie die Variable, verwenden aber die folgende Formel für den Quellschritt:

Variable.ValueOrDefault("$(/**/My Library/LakehouseId)", "Your Lakehouse ID")

Hinweis

Stellen Sie sicher, dass Sie die Zeichenfolge "Your Lakehouse ID", das zweite Argument der Funktion, durch Ihren eigenen entsprechenden Wert in Ihrer Umgebung ersetzen und die Abfrage speichern.

Screenshot einer neu erstellten Abfrage namens LakehouseId und WorkspaceId.

Nachdem beide Abfragen erstellt wurden, können Sie das Abfrageskript aktualisieren, um sie anstelle hartcodierter Werte zu verwenden. Dazu müssen die ursprünglichen Werte in der Bearbeitungsleiste manuell durch Verweise auf die Abfragen "WorkspaceId" und "LakehouseId" ersetzt werden. Das ursprüngliche Abfrageskript sieht wie folgt aus:

let
  Source = Lakehouse.Contents([]),
  #"Navigation 1" = Source{[workspaceId = "8b325b2b-ad69-4103-93ae-d6880d9f87c6"]}[Data],
  #"Navigation 2" = #"Navigation 1"{[lakehouseId = "2455f240-7345-4c8b-8524-c1abbf107d07"]}[Data],
  #"Navigation 3" = #"Navigation 2"{[Id = "dimension_city", ItemKind = "Table"]}[Data],
  #"Filtered rows" = Table.SelectRows(#"Navigation 3", each ([SalesTerritory] = "Southeast")),
  #"Removed columns" = Table.RemoveColumns(#"Filtered rows", {"ValidFrom", "ValidTo", "LineageKey"})
in
  #"Removed columns"

Nachdem Sie die Verweise in den Navigationsschritten aktualisiert haben, sieht ihr neues aktualisiertes Skript möglicherweise wie folgt aus:

let
  Source = Lakehouse.Contents([]),
  #"Navigation 1" = Source{[workspaceId = WorkspaceId]}[Data],
  #"Navigation 2" = #"Navigation 1"{[lakehouseId = LakehouseId]}[Data],
  #"Navigation 3" = #"Navigation 2"{[Id = "dimension_city", ItemKind = "Table"]}[Data],
  #"Filtered rows" = Table.SelectRows(#"Navigation 3", each ([SalesTerritory] = "Southeast")),
  #"Removed columns" = Table.RemoveColumns(#"Filtered rows", {"ValidFrom", "ValidTo", "LineageKey"})
in
  #"Removed columns"

Und Sie stellen fest, dass die Datenvorschau im Dataflow-Editor weiterhin korrekt ausgewertet wird, wobei die direkten Verweise, die in der Diagrammansicht erstellt wurden, zwischen allen beteiligten Abfragen verwendet werden:

Screenshot mit WorkspaceId- und LakehouseId-Abfragen, auf die in der dimension_city-Abfrage verwiesen wird.

Variablengesteuerte Logik

Nachdem die Quelle Variablen verwendet, können Sie sich nun auf die Änderung der Transformationslogik des Datenflusses konzentrieren. In diesem Szenario ist der Filterschritt der Ort, an dem die Logik angewendet wird, und der gefilterte Wert, der derzeit als Südosten hartcodiert wird, sollte durch eine Abfrage ersetzt werden, die auf eine Variable verweist. Zu diesem Zweck wiederholen Sie denselben Vorgang zum Erstellen einer neuen leeren Abfrage und verwenden die Formel des Quellschritts, um die Variable für "Territory" zu speichern und den Namen der Abfrage auch in den Variablennamen zu ändern. Verwenden Sie das folgende Skript:

Variable.ValueOrDefault("$(/**/My Library/Territory)", "Mideast")

Screenshot der im Datenfluss erstellten Territory-Abfrage.

Da Ihr Filterschritt über die Benutzeroberfläche erstellt wurde, können Sie zum Schritt "Gefilterte Zeilen" wechseln, ihn doppelt auswählen und das Einstellungsdialogfeld für den Filterschritt abrufen. In diesem Dialogfeld können Sie über das Eingabe-Widget auswählen, wenn Sie eine Abfrage anstelle eines statischen Werts verwenden möchten:

Screenshot des Eingabe-Widgets im Dialogfeld

Nachdem Sie die Option zum Auswählen einer Abfrage ausgewählt haben, wird eine Dropdownliste angezeigt, um alle Abfragen anzuzeigen, aus denen Sie auswählen können. In dieser Liste können Sie die neu erstellte Territory-Abfrage auswählen.

Screenshot der Gebietsabfrage, die im Eingabefeld aus dem Dialogfeld für Filterzeilen ausgewählt wurde.

Nachdem Sie "OK" ausgewählt haben, beachten Sie, dass die Diagrammansicht bereits die Verknüpfung zwischen der Abfrage "Gebiet" und der verwendeten Abfrage erstellt hat. Nicht nur das, aber in der Datenvorschau werden nun Informationen für das Mideast-Gebiet angezeigt.

Screenshot der Diagrammansicht, der Abfrageeinstellungen und der Datenvorschau für die dimension_city Abfrage mit Daten für die Mideast SalesTerritory.

Variablegesteuertes Ziel

Hinweis

Es wird empfohlen, sich mit dem Konzept von Datenzielen in Dataflow Gen2 vertraut zu machen und wie das Mashup-Skript aus dem Artikel zu Datenzielen und verwalteten Einstellungen erstellt wird.

Die letzte Zu ändernde Komponente in diesem Szenario ist das Ziel. Dazu verwenden Sie das Feature "Erweiterte Bearbeitung für Datenzielabfragen ", mit dem Sie das Zielabfrageskript direkt im Dataflow-Editor mithilfe von Power Query M-Code ändern können.

Screenshot des Flyouts, das die Datenzieleinstellungen für die dimension_city Abfrage enthält.

Bevor Sie beginnen, erstellen Sie eine Abfrage für die WarehouseId-Variable . Folgen Sie dem in früheren Abschnitten beschriebenen Verfahren, um eine neue leere Abfrage zu erstellen und die Formel für den Quellschritt zu ersetzen:

Variable.ValueOrDefault("$(/**/My Library/WarehouseId)", "Your Warehouse ID")

Hinweis

Ersetzen Sie unbedingt die Zeichenfolge "Ihre Lager-ID", das zweite Argument der Funktion, durch ihren eigenen entsprechenden Wert in Ihrer Umgebung und speichern Sie die Abfrage.

Screenshot aller Abfragen im Datenfluss, einschließlich der neu erstellten WarehouseId-Abfrage.

Von Bedeutung

Stellen Sie sicher, dass alle Abfragen, die eine Variable enthalten, staging deaktiviert sind. Screenshot der Stagingoption für eine Abfrage im Kontextmenü.

Erweiterte Bearbeitung für Datenzielabfragen aktivieren

Um die Zielabfrage direkt im Dataflow-Editor zu ändern, müssen Sie zuerst das Feature "Erweiterte Bearbeitung" aktivieren:

  1. Wählen Sie " Optionen " auf der Registerkarte " Start " im Menüband aus.

  2. Scrollen Sie im Dialogfeld "Optionen " nach unten zum Abschnitt "Datenziele ".

  3. Aktivieren Sie das Kontrollkästchen zum Aktivieren der erweiterten Bearbeitung für Datenzielabfragen.

  4. Es wird ein Warndialogfeld angezeigt, in dem erläutert wird, dass das Ändern von Zielabfragen zu unerwartetem Verhalten führen oder den Datenfluss unterbrechen kann. Lesen Sie die Warnung sorgfältig, und wählen Sie "OK " aus, um dies zu bestätigen.

  5. Wählen Sie 'OK' aus, um das Dialogfeld "Optionen" zu schließen.

Ändern der Zielabfrage

Nachdem Sie die erweiterte Bearbeitung aktiviert haben, können Sie auf die Zielabfrage für Ihr Datenziel zugreifen und diese ändern:

  1. Suchen Sie im Bereich "Abfragen " den Abschnitt "Datenziel", in dem Ihre konfigurierten Ziele angezeigt werden.

  2. Klicken Sie mit der rechten Maustaste auf die Zielabfrage mit dem Namen dimension_city.

  3. Wählen Sie im Kontextmenü den erweiterten Editor aus.

Die Zielabfrage sieht wie folgt aus:

let
  Pattern = Fabric.Warehouse([HierarchicalNavigation = null, CreateNavigationProperties = false]),
  Navigation_1 = Pattern{[workspaceId = "8b325b2b-ad69-4103-93ae-d6880d9f87c6"]}[Data],
  Navigation_2 = Navigation_1{[warehouseId = "527ba9c1-4077-433f-a491-9ef370e9230a"]}[Data],
  TableNavigation = Navigation_2{[Item = "City", Schema = "dbo"]}?[Data]?
in
  TableNavigation

Ähnlich wie das Skript der Quelle für das Lakehouse weist dieses Skript für das Ziel ein ähnliches Muster auf, bei dem die workspaceId und warehouseId hartcodiert werden. Ersetzen Sie diese festen Werte durch die Bezeichner der von Ihnen erstellten Abfragen, und Ihr Skript sieht wie folgt aus:

let
  Pattern = Fabric.Warehouse([HierarchicalNavigation = null, CreateNavigationProperties = false]),
  Navigation_1 = Pattern{[workspaceId = WorkspaceId]}[Data],
  Navigation_2 = Navigation_1{[warehouseId = WarehouseId]}[Data],
  TableNavigation = Navigation_2{[Item = "City", Schema = "dbo"]}?[Data]?
in
  TableNavigation

Wählen Sie "OK" aus, um Ihre Änderungen im erweiterten Editor zu speichern.

Von Bedeutung

Nachdem Sie eine Zielabfrage mit erweiterter Bearbeitung geändert haben, funktioniert die Standardbenutzeroberfläche zum Ändern dieses Ziels nicht mehr. Sie müssen den erweiterten Editor weiterhin für weitere Änderungen an diesem Ziel verwenden. Weitere Informationen finden Sie unter "Erweiterte Bearbeitung für Datenzielabfragen".

Sie können jetzt Ihren Dataflow ausführen, der Werte aus Variablenbibliotheken verwendet.