Share via


Variabele verwijzingen in een gegevensstroom

Opmerking

Dit artikel is gericht op een oplossingsarchitectuur van CI/CD- en ALM-oplossingsarchitecturen voor Dataflow Gen2 die afhankelijk is van de integratie van variabelenbibliotheken en alleen van toepassing is op Dataflow Gen2 met CI/CD-ondersteuning.

Infrastructuurvariabelebibliotheken in Dataflow Gen2 maken gecentraliseerd, herbruikbaar configuratiebeheer mogelijk in omgevingen. Door rechtstreeks naar variabelen in uw gegevensstroomscripts te verwijzen, kunt u het gedrag dynamisch aanpassen zonder dat u waarden hoeft te coderen, wat ideaal is voor CI/CD-werkstromen. Deze integratie vereenvoudigt de implementatie in verschillende fasen doordat werkruimtespecifieke waarden (zoals Lakehouse- of Werkruimte-id's) tijdens runtime kunnen worden geïnjecteerd, waardoor uw gegevensstromen beter kunnen worden aangepast en onderhouden.

In deze zelfstudie wordt u begeleid bij een voorbeeldoplossing die gebruikmaakt van variabele verwijzingen in een gegevensstroom en leert u het volgende:

  • Variabelen instellen: De fabric-variabelebibliotheken en de bijbehorende afzonderlijke gegevenstypen gebruiken
  • Bron aangestuurd door variabelen: Een Lakehouse gebruiken met de WideWorldImporters-voorbeelddataset als de bron
  • Variabelegestuurde logica: de invoerwidgets gebruiken die beschikbaar zijn in de gegevensstroomervaring
  • Variabelegestuurde bestemming: Gebruik van een magazijn als bestemming

Diagram van een oplossingsarchitectuur die gebruikmaakt van variabele verwijzingen in Dataflow Gen2.

Opmerking

De concepten die in dit artikel worden weergegeven, zijn universeel voor Dataflow Gen2 en zijn van toepassing op andere bronnen en bestemmingen buiten de bronnen die hier worden weergegeven.

Het scenario

Schermopname van de query met de naam dimension_city voor het scenario in Dataflow Gen2.

De gegevensstroom die in dit scenario wordt gebruikt, is eenvoudig, maar de belangrijkste principes die worden beschreven, zijn van toepassing op alle typen gegevensstromen. Deze maakt verbinding met de tabel met de naam dimension_city uit de wide World Importers-voorbeeldgegevensset die is opgeslagen in een Lakehouse. Hiermee worden rijen gefilterd waarbij de kolom SalesTerritory gelijk is aan Zuidoost en het resultaat wordt geladen in een nieuwe tabel met de naam Plaats in een magazijn. Alle onderdelen( lakehouse, magazijn en gegevensstroom) bevinden zich in dezelfde werkruimte. Als u de gegevensstroom dynamisch wilt maken, gebruikt u variabelen om de brontabel, de filterwaarde en de doeltabel aan te sturen. Met deze wijzigingen kan de gegevensstroom worden uitgevoerd met waarden die zijn opgeslagen in Fabric-variabelebibliotheken in plaats van in code vastgelegde waarden.

Variabelen instellen

Opmerking

Zorg ervoor dat de Fabric-variabelenbibliotheken zijn ingeschakeld voor uw organisatie of beveiligingsgroep. Meer informatie over hoe u aan de slag gaat met variabelenbibliotheken.

Het wordt aanbevolen om een ontwerp in gedachten te houden voordat u een oplossing maakt en welke onderdelen van uw gegevensstroom dynamisch worden opgehaald uit een variabele bibliotheek. Hoewel u meerdere bibliotheken binnen een werkruimte kunt maken, wordt in dit voorbeeld één bibliotheek met de naam Mijn bibliotheek gebruikt die de variabelen bevat die de Dataflow Gen2 gebruikt:

Naam van de variabele Typologie Purpose
WorkspaceId Guid Wordt gebruikt voor scripts voor gegevensbron en bestemming in de Dataflow
LakehouseId Guid Bepaalt de ID van het Lakehouse dat als bron wordt gebruikt
WarehouseId Guid Bepaalt de ID van het magazijn dat als bestemming wordt gebruikt.
Territorium Snaar / Touwtje Hiermee stelt u in welke waarde moet worden gebruikt om de filterlogica in de gegevensstroom aan te sturen.

Zorg ervoor dat u de standaardwaarden instelt die overeenkomen met uw eigen omgeving en sla vervolgens de variabelebibliotheek op.

Schermopname van de zojuist gemaakte Fabric-variabelebibliotheken met variabelen WorkspaceId, LakehouseId, WarehouseId en Territory.

Variabelegestuurde bron

Bij het gebruik van een van de Fabric-connectors, zoals Lakehouse, Warehouse of Fabric SQL, volgen ze allemaal dezelfde navigatiestructuur en gebruiken ze dezelfde invoerindeling. In dit scenario is voor geen van de connectors handmatige invoer vereist om een verbinding tot stand te brengen. Elke werkruimte en het item waarmee deze verbinding maakt, worden echter weergegeven via de navigatiestappen in uw query. De eerste navigatiestap bevat bijvoorbeeld de workspaceId waarmee de query verbinding maakt.

Schermopname van de stap Navigatie 1 met de workspaceId-waarde in de formulebalk voor de dimension_city-query.

Het doel is om de vastgelegde waarden in de formulebalk te vervangen door variabelen. U wilt met name de variabelen WorkspaceId en LakehouseId gebruiken om deze logica te stimuleren. Eerst moet u deze variabelen overbrengen naar de Gegevensstroom Gen2. Een aanbevolen benadering is het maken van query's voor elke afzonderlijke variabele om eventuele variabelen te centraliseren en eenvoudig te beheren die u wilt gebruiken. Hiervoor maakt u een lege query door naar de vermelding Gegevens ophalen op het lint te gaan en de optie Lege query te selecteren in de vervolgkeuzelijst.

Schermopname van de vermelding Gegevens ophalen in het tabblad Start om een lege query te maken.

Als u deze optie selecteert, wordt een nieuw dialoogvenster geopend waarin u de lege query kunt zien die is gemaakt. U kunt OK selecteren om deze nieuwe lege query op te halen.

Schermopname van het lege dialoogvenster voor query's.

Zodra uw query is gemaakt en wordt weergegeven in de gegevensstroom, wijzigt u de naam ervan in WorkspaceId en vervangt u de formule in de bronstap:

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

Dit script is in wezen het script dat kan bepalen welke bibliotheek en variabele moeten worden opgehaald. Het tweede argument van de Variable.ValueOrDefault functie bepaalt welke waarde moet worden opgegeven wanneer een variabele niet kan worden opgehaald.

Opmerking

Zorg ervoor dat u de tekenreeks 'Uw werkruimte-id', het tweede argument van de functie, vervangt door uw eigen overeenkomstige waarde in uw omgeving en sla de query op.

Herhaal dit proces voor de LakehouseId-variabele en maak een query met dezelfde naam als de variabele, maar gebruik de volgende formule voor de bronstap:

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

Opmerking

Zorg ervoor dat u de tekenreeks 'Your Lakehouse ID', het tweede argument van de functie, vervangt door uw eigen overeenkomstige waarde in uw omgeving en sla de query op.

Schermopname van een zojuist gemaakte query met de naam LakehouseId en WorkspaceId.

Zodra beide query's zijn gemaakt, kunt u het queryscript bijwerken om ze te gebruiken in plaats van vastgelegde waarden. Hierbij moet u de oorspronkelijke waarden in de formulebalk handmatig vervangen door verwijzingen naar de query's WorkspaceId en LakehouseId. Het oorspronkelijke queryscript ziet er als volgt uit:

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"

Zodra u de verwijzingen in de navigatiestappen hebt bijgewerkt, ziet het nieuwe bijgewerkte script er mogelijk als volgt uit:

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"

En u ziet dat het nog steeds de voorbeeldweergave van gegevens in de gegevensstroomeditor correct evalueert met de directe verwijzingen die zijn gemaakt in de diagramweergave tussen alle betrokken query's:

Schermopname met WorkspaceId- en LakehouseId-query's waarnaar wordt verwezen in de dimension_city-query.

Variabelegestuurde logica

Nu de bron variabelen gebruikt, kunt u zich richten op het wijzigen van de transformatielogica van de gegevensstroom. In dit scenario is de filterstap waar de logica wordt toegepast en de waarde die wordt gefilterd, momenteel vastgelegd als Zuidoost, moet worden vervangen door een query die verwijst naar een variabele. Hiervoor herhaalt u hetzelfde proces voor het maken van een nieuwe lege query en wijzigt u de formule van de bronstap om de variabele voor Gebied te behouden en wijzigt u ook de naam van de query in de naam van de variabele. Gebruik het volgende script:

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

Schermopname van de gebiedsquery die is gemaakt in de gegevensstroom.

Aangezien de filterstap is gemaakt met behulp van de gebruikersinterface, kunt u naar de stap Gefilterde rijen gaan, deze dubbel selecteren en het dialoogvenster Instellingen voor de filterstap ophalen. In dit dialoogvenster kunt u via de invoerwidget een query selecteren in plaats van een statische waarde:

Schermopname van de invoerwidget in het dialoogvenster Filterrijen met de optie om naar een query te verwijzen.

Nadat u de optie voor het selecteren van een query hebt geselecteerd, wordt er een vervolgkeuzelijst weergegeven met alle query's waaruit u kunt kiezen. In deze lijst kunt u de zojuist gemaakte gebiedsquery selecteren.

Schermopname van de gebiedsquery die is geselecteerd in de invoerwidget in het dialoogvenster Filterrijen.

Zodra u OK hebt geselecteerd, ziet u dat de diagramweergave al de koppeling heeft gemaakt tussen de gebiedsquery en de query die wordt gebruikt. Niet alleen dat, maar het gegevensvoorbeeld toont u nu informatie voor het Midden-Oosten-gebied.

Schermopname van de diagramweergave, query-instellingen en gegevensvoorbeeld voor de dimension_city query met gegevens voor mideast SalesTerritory.

Variabelgestuurde bestemming

Opmerking

Het is raadzaam om kennis te maken met het concept van gegevensbestemmingen in Dataflow Gen2 en hoe het mashup-script wordt gemaakt vanuit het artikel over gegevensbestemmingen en beheerde instellingen

Het laatste onderdeel dat in dit scenario moet worden gewijzigd, is de bestemming. Hoewel de informatie over wat de gegevensbestemming is te vinden is in de gegevensstroomeditor, moet u Git of de REST API gebruiken om dit deel van de gegevensstroom te wijzigen.

Schermopname van de flyout met de doelinstellingen voor de gegevens voor de dimension_city-query.

In deze zelfstudie leert u hoe u de wijzigingen kunt aanbrengen via Git. Voordat u wijzigingen kunt aanbrengen via Git, moet u het volgende doen:

  • Maak een query voor de WarehouseId-variabele: volg hetzelfde proces dat in eerdere secties wordt beschreven om een nieuwe lege query te maken en de formule voor de bronstap te vervangen:
Variable.ValueOrDefault("$(/**/My Library/WarehouseId)", "Your Warehouse ID")

Opmerking

Zorg ervoor dat u de tekenreeks 'Uw magazijn-id', het tweede argument van de functie, vervangt door uw eigen overeenkomstige waarde in uw omgeving en sla de query op.

Schermopname van alle query's in de gegevensstroom, inclusief de zojuist gemaakte WarehouseId-query.

Belangrijk

Zorg ervoor dat alle query's met een variabele fasering zijn uitgeschakeld. Schermopname van de faseringsoptie voor een query in het contextmenu.

  • Sla de Gegevensstroom op: gebruik de knop Opslaan op het tabblad Startmenu van het lint.

Schermopname van de Opslaan-knop van de dataflow.

Zodra uw gegevensstroom is opgeslagen, moet u de wijzigingen doorvoeren in uw Git-opslagplaats en naar uw opslagplaats gaan om het mashup.pq-bestand van uw gegevensstroom te bekijken. Wanneer u naar het mashup.pq-bestand kijkt, zoekt u naar de query waarmee u de gegevensbestemming hebt gekoppeld. In dit scenario is de naam van die query dimension_city. U ziet een recordkenmerk boven deze querynaam:

[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

Deze kenmerkrecord heeft een veld met de naam QueryName, dat de naam bevat van de query waaraan alle logica voor de gegevensbestemming voor deze query is gekoppeld. Deze query ziet er als volgt uit:

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

U merkt dat dit script voor de bestemming, net als het script van de bron voor Lakehouse, een vergelijkbaar patroon heeft waarbij het de workspaceid en ook de warehouseId hardcodeert die moeten worden gebruikt. Vervang deze vaste waarden door de id's van de query's die u hebt gemaakt en uw script ziet er als volgt uit:

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

U kunt deze wijziging nu doorvoeren en uw gegevensstroom bijwerken met behulp van de wijzigingen van uw gegevensstroom via de functie voor broncodebeheer in uw werkruimte.

U kunt nu uw gegevensstroom uitvoeren, die gebruikmaakt van waarden uit variabelenbibliotheken.