Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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
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
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.
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.
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.
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.
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.
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:
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")
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:
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.
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.
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.
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.
Belangrijk
Zorg ervoor dat alle query's met een variabele fasering zijn uitgeschakeld.
- Sla de Gegevensstroom op: gebruik de knop Opslaan op het tabblad Startmenu van het lint.
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.