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. Hiervoor gebruikt u de geavanceerde bewerking voor query's voor gegevensbestemmingen , waarmee u het doelqueryscript rechtstreeks in de gegevensstroomeditor kunt wijzigen met behulp van Power Query M-code.

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

Voordat u begint, maakt u een query voor de variabele WarehouseId . Volg hetzelfde proces dat in eerdere secties is 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.

Het inschakelen van geavanceerde bewerkingen voor gegevensbestemmingsquery's

Als u de doelquery rechtstreeks in de gegevensstroomeditor wilt wijzigen, moet u eerst de geavanceerde bewerkingsfunctie inschakelen:

  1. Selecteer Opties op het tabblad Start op het lint.

  2. Schuif in het dialoogvenster Opties omlaag naar de sectie Gegevensbestemmingen .

  3. Selecteer het selectievakje voor Geavanceerde bewerking inschakelen voor query's voor gegevensbestemmingen.

  4. Er verschijnt een waarschuwingsdialoogvenster waarin wordt uitgelegd dat het wijzigen van doelquery's onverwacht gedrag kan veroorzaken of dat de gegevensstroom kan worden verbroken. Lees de waarschuwing zorgvuldig en selecteer OK om te bevestigen.

  5. Selecteer OK om het dialoogvenster Opties te sluiten.

De doelquery wijzigen

Nadat u geavanceerde bewerking hebt ingeschakeld, kunt u de doelquery voor uw gegevensbestemming openen en wijzigen:

  1. Zoek in het deelvenster Query's de sectie gegevensbestemming met de geconfigureerde bestemmingen.

  2. Klik met de rechtermuisknop op de doelquery met de naam dimension_city.

  3. Selecteer Geavanceerde editor in het contextmenu.

De doelquery ziet er als volgt uit:

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

Net als bij het script van de bron voor Lakehouse heeft dit script voor de bestemming een vergelijkbaar patroon waarbij de workspaceId en warehouseId worden vastgelegd. Vervang deze vaste waarden door de id's van de query's die u hebt gemaakt en uw script ziet er als volgt uit:

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

Selecteer OK om uw wijzigingen op te slaan in de geavanceerde editor.

Belangrijk

Nadat u een doelquery hebt gewijzigd met behulp van geavanceerde bewerking, werkt de standaardgebruikersinterface voor het wijzigen van die bestemming niet meer. U moet de geavanceerde editor blijven gebruiken voor verdere wijzigingen aan die bestemming. Zie Geavanceerd bewerken voor query's voor gegevensbestemmingen voor meer informatie.

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