Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
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
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
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.
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.
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.
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.
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.
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:
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")
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:
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.
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.
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. Informationen darüber, was das Datenziel ist, finden Sie im Dataflow-Editor. Um diesen Teil des Datenflusses zu ändern, müssen Sie Git oder die REST-API verwenden.
In diesem Lernprogramm erfahren Sie, wie Sie die Änderungen über Git vornehmen. Bevor Sie Änderungen über Git vornehmen können, stellen Sie folgendes sicher:
- Erstellen Sie eine Abfrage für die WarehouseId-Variable: Befolgen Sie den in früheren Abschnitten beschriebenen Prozess, 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.
Von Bedeutung
Stellen Sie sicher, dass alle Abfragen, die eine Variable enthalten, staging deaktiviert sind.
- Speichern Sie den Datenfluss: Verwenden Sie die Schaltfläche "Speichern" auf der Registerkarte "Start" des Menübands.
Nachdem Ihr Datenfluss gespeichert wurde, stellen Sie sicher, dass Sie die Änderungen in Ihrem Git-Repository committen und wechseln Sie zu Ihrem Repository, um die mashup.pq-Datei Ihres Datenflusses anzuzeigen. Suchen Sie beim Betrachten der Datei mashup.pq nach der Abfrage, der Sie das Datenziel zugeordnet haben. In diesem Szenario ist der Name dieser Abfrage dimension_city. Oberhalb dieses Abfragenamens ist ein Datensatzattribut angezeigt.
[DataDestinations = {[Definition = [Kind = "Reference", QueryName = "dimension_city_DataDestination", IsNewTarget = true], Settings = [Kind = "Manual", AllowCreation = true, ColumnSettings = [Mappings = {[SourceColumnName = "CityKey", DestinationColumnName = "CityKey"], [SourceColumnName = "WWICityID", DestinationColumnName = "WWICityID"], [SourceColumnName = "City", DestinationColumnName = "City"], [SourceColumnName = "StateProvince", DestinationColumnName = "StateProvince"], [SourceColumnName = "Country", DestinationColumnName = "Country"], [SourceColumnName = "Continent", DestinationColumnName = "Continent"], [SourceColumnName = "SalesTerritory", DestinationColumnName = "SalesTerritory"], [SourceColumnName = "Region", DestinationColumnName = "Region"], [SourceColumnName = "Subregion", DestinationColumnName = "Subregion"], [SourceColumnName = "Location", DestinationColumnName = "Location"], [SourceColumnName = "LatestRecordedPopulation", DestinationColumnName = "LatestRecordedPopulation"]}], DynamicSchema = false, UpdateMethod = [Kind = "Replace"], TypeSettings = [Kind = "Table"]]]}]
shared dimension_city = let
Dieser Attributdatensatz weist ein Feld mit dem Namen QueryName auf, der den Namen der Abfrage enthält, die alle Datenziellogik für diese Abfrage zugeordnet hat. Diese Abfrage sieht wie folgt aus:
shared dimension_city_DataDestination = 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
Sie erkennen, dass dieses Skript für das Ziel ähnlich wie das Quellskript für das Lakehouse ein Muster aufweist, bei dem sowohl die zu verwendende Arbeitsbereichs-ID als auch die Lagerhaus-ID hartcodiert sind. Ersetzen Sie diese festen Werte durch die Bezeichner der von Ihnen erstellten Abfragen, und Ihr Skript sieht wie folgt aus:
shared dimension_city_DataDestination = 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
Sie können diese Änderung jetzt übernehmen und ihren Datenfluss mithilfe der Änderungen aus Ihrem Dataflow über das Feature zur Quellcodeverwaltung in Ihrem Arbeitsbereich aktualisieren.
Sie können jetzt Ihren Dataflow ausführen, der Werte aus Variablenbibliotheken verwendet.