Del via


Variabelreferencer i et dataflow

Notat

Denne artikel fokuserer på en løsningsarkitektur fra CI/CD- og ALM-løsningsarkitekturer (Application Lifecycle Management) til Dataflow Gen2 , der er afhængig af integration af variable biblioteker og kun gælder for Dataflow Gen2 med CI/CD-understøttelse.

Strukturvariable biblioteker i Dataflow Gen2 muliggør centraliseret, genanvendelig konfigurationsstyring på tværs af miljøer. Ved at referere til variabler direkte i dine dataflowscripts kan du dynamisk justere funktionsmåde uden hardcode-værdier, hvilket er ideelt til CI/CD-arbejdsprocesser. Denne integration forenkler udrulningen på tværs af faser ved at tillade, at arbejdsområdespecifikke værdier (f.eks. Lakehouse- eller arbejdsområde-id'er) indsættes på kørselstidspunktet, hvilket gør dine dataflow mere tilpasningsdygtige og vedligeholdelsesvenlige.

I dette selvstudium gennemgås du en eksempelløsning, der bruger variabelreferencer i et dataflow, og viser dig, hvordan du:

  • Angiv variabler: Brug af Fabric-variabelbibliotekerne og deres forskellige datatyper
  • Variabeldrevet kilde: Brug af et Lakehouse med WideWorldImpoters-eksempeldatasættet som kilde
  • Variabelbaseret logik: Brug af de inputwidgets, der er tilgængelige i hele dataflowoplevelsen
  • Variabeldrevet destination: Brug af et lagersted som destination

Diagram over en løsningsarkitektur, der bruger variabelreferencer i Dataflow Gen2.

Notat

De begreber, der vises i denne artikel, er universelle for Dataflow Gen2 og kan anvendes på andre kilder og destinationer ud over dem, der er vist her.

Scenariet

Skærmbillede af forespørgslen med navnet dimension_city for scenariet i Dataflow Gen2.

Det dataflow, der bruges i dette scenarie, er enkelt, men de beskrevne kerneprincipper gælder for alle typer dataflow. Den opretter forbindelse til tabellen med navnet dimension_city fra eksempeldatasættet Wide World Importers, der er gemt i et Lakehouse. Den filtrerer rader, hvor kolonnen SalesTerritory er lig med Sydøst, og indlæser resultatet i en ny tabel med navnet By på et lagersted. Alle komponenter – Lakehouse, Warehouse og Dataflow – er placeret i det samme arbejdsområde. Hvis du vil gøre dataflowet dynamisk, skal du bruge variabler til at drive kildetabellen, filterværdien og destinationstabellen. Disse ændringer gør det muligt for dataflowet at køre med værdier, der er gemt i Fabric-variabelbiblioteker i stedet for hardcodede.

Indstil variabler

Notat

Sørg for at have Fabric-variabelbiblioteker aktiveret for din organisation eller sikkerhedsgruppe. Få mere at vide om, hvordan du kommer i gang med variable biblioteker.

Som bedste praksis anbefales det altid at have et design i tankerne, før du opretter en løsning, og hvilke komponenter fra dit dataflow der dynamisk hentes fra et variabelbibliotek. Selvom du kan oprette flere biblioteker i et arbejdsområde, bruger dette eksempel et enkelt bibliotek med navnet Mit bibliotek , der indeholder de variabler, som Dataflow Gen2 bruger:

Variabelnavn Type Purpose
WorkspaceId GUID Bruges til datakilden og destinationsscripts i dataflowet
LakehouseId GUID Bestemmer id'et for det søhus, der bruges som kilde
Lager-id GUID Bestemmer id'et for det lagersted, der bruges som destination
Territorium String Angiver, hvilken værdi der skal bruges til at drive filterlogikken i dataflowet

Sørg for at angive de standardværdier, der svarer til dit eget miljø, og gem derefter variabelbiblioteket.

Skærmbillede af de nyoprettede Fabric-variabelbiblioteker med variablerne WorkspaceId, LakehouseId, WarehouseId og Territory.

Variabel-drevet kilde

Når du bruger en af Fabric-connectorerne – f.eks. Lakehouse, Warehouse eller Fabric SQL – følger de alle den samme navigationsstruktur og bruger det samme inputformat. I dette scenarie kræver ingen af connectorerne manuelt input for at oprette en forbindelse. Hver enkelt viser dog, hvilket arbejdsområde og element den opretter forbindelse til via navigationstrinnene i forespørgslen. Det første navigationstrin indeholder f.eks. det workspaceId, som forespørgslen opretter forbindelse til.

Skærmbillede af trinnet Navigation 1 med værdien workspaceId på formellinjen for dimension_city forespørgslen.

Målet er at erstatte de hardcodede værdier i formellinjen med variabler. Du vil specifikt bruge variablerne WorkspaceId og LakehouseId til at drive denne logik. Først skal du overføre disse variabler til Dataflow Gen2. En anbefalet fremgangsmåde er at oprette forespørgsler for hver enkelt variabel for at centralisere og nemt administrere de variabler, du planlægger at bruge. Det gør du ved at oprette en tom forespørgsel ved at gå ind i posten Hent data på båndet og vælge indstillingen Tom forespørgsel i rullemenuen.

Skærmbillede af posten i Hent data under fanen Hjem for at oprette en tom forespørgsel.

Hvis du vælger denne indstilling, vises en ny dialogboks, hvor du kan se den tomme forespørgsel, der er oprettet. Du kan vælge OK for at hente denne nye tomme forespørgsel.

Skærmbillede af den tomme forespørgselsdialogboks.

Når din forespørgsel er oprettet og vises i dataflowet, skal du omdøbe den til WorkspaceId og erstatte formlen i trinnet Kilde, så den bliver:

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

Dette script er grundlæggende det, der er i stand til at bestemme, hvilket bibliotek og hvilken variabel der skal hentes. Det andet argument i Variable.ValueOrDefault funktionen bestemmer, hvilken værdi der skal angives, når en variabel ikke kan hentes.

Notat

Sørg for at erstatte strengen "Dit arbejdsområde-id", det andet argument i funktionen, med din egen tilsvarende værdi i dit miljø, og gem forespørgslen.

Gentag denne proces for variablen LakehouseId , og opret en forespørgsel med samme navn som variablen, men brug følgende formel til trinnet Kilde:

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

Notat

Sørg for at erstatte strengen "Dit Lakehouse-id", det andet argument for funktionen, med din egen tilsvarende værdi i dit miljø, og gem forespørgslen.

Skærmbillede, der viser en nyoprettet forespørgsel med navnene LakehouseId og WorkspaceId.

Når begge forespørgsler er oprettet, kan du opdatere forespørgselsscriptet, så det bruger dem i stedet for hardcodede værdier. Dette indebærer, at de oprindelige værdier på formellinjen manuelt erstattes med referencer til forespørgslerne WorkspaceId og LakehouseId. Det oprindelige forespørgselsscript ser sådan ud:

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"

Når du har opdateret referencerne i navigationstrinnene, kan dit nye opdaterede script se sådan ud:

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"

Og du bemærker, at den stadig evaluerer dataeksemplet korrekt i datafloweditoren med de direkte referencer, der er oprettet i diagramvisningen mellem alle de involverede forespørgsler:

Skærmbillede med WorkspaceId- og LakehouseId-forespørgsler, der refereres til i dimension_city forespørgslen.

Variabel-drevet logik

Nu, hvor kilden bruger variabler, kan du fokusere på at ændre transformationslogikken for dataflowet. I dette scenarie er filtertrinnet det sted, hvor logikken anvendes, og den værdi, der filtreres, og som i øjeblikket er hardcodet som Sydøst, skal erstattes med en forespørgsel, der refererer til en variabel. Det gør du ved at gentage den samme proces med at oprette en ny tom forespørgsel og genbruge formlen for trinnet Kilde til at indeholde variablen for Distrikt og også ændre navnet på forespørgslen til variabelnavnet. Brug følgende script:

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

Skærmbillede af den distriktsforespørgsel, der er oprettet i dataflowet.

I betragtning af at dit filtertrin blev oprettet ved hjælp af brugergrænsefladen, kan du gå over til trinnet Filtrerede rækker, dobbeltvælge det og få indstillingsdialogen for filtertrinnet. Denne dialog giver dig mulighed for via inputwidgetten at vælge, om du vil bruge en forespørgsel i stedet for en statisk værdi:

Skærmbillede af inputwidgeten i dialogboksen for filterrækker med mulighed for at referere til en forespørgsel.

Når du har valgt indstillingen Vælg en forespørgsel, vises en rullemenu, der viser alle forespørgsler, du kan vælge imellem. På denne liste kan du vælge den nyoprettede distriktsforespørgsel .

Skærmbillede af den områdeforespørgsel, der er valgt i inputwidgeten fra dialogboksen for filterrækker.

Når du har valgt OK, skal du bemærke, at diagramvisningen allerede har oprettet linket mellem distriktsforespørgslen og den anvendte forespørgsel. Ikke kun det, men dataeksemplet viser dig nu oplysninger om Mellemøsten .

Skærmbillede af diagramvisningen, forespørgselsindstillingerne og dataeksemplet for den dimension_city forespørgsel, der viser data for Mellemøsten SalesTerritory.

Variabel-drevet destination

Notat

Det anbefales, at du sætter dig ind i begrebet datadestinationer i Dataflow Gen2, og hvordan dets miksscript oprettes ud fra artiklen om datadestinationer og administrerede indstillinger

Den sidste komponent, der skal ændres i dette scenarie, er destinationen. For at gøre dette bruger du funktionen Advanced Edit for Data destination Queries , som lader dig ændre destinationsforespørgselsscriptet direkte i Dataflow-editoren ved hjælp af Power Query M-koden.

Skærmbillede af pop op-vinduet, der indeholder datadestinationsindstillingerne for den dimension_city forespørgsel.

Før du begynder, skal du oprette en forespørgsel til variablen WarehouseId . Følg samme proces beskrevet i tidligere afsnit for at oprette en ny tom forespørgsel og erstatte formlen for Kilde-trinnet til at være:

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

Notat

Sørg for at erstatte strengen "Dit lagersteds-id", det andet argument for funktionen, med din egen tilsvarende værdi i dit miljø, og gem forespørgslen.

Skærmbillede af alle forespørgsler i dataflowet, herunder den nyoprettede WarehouseId-forespørgsel.

Vigtige oplysninger

Sørg for, at alle dine forespørgsler, der indeholder en variabel, har midlertidig inddeling deaktiveret. Skærmbillede af den midlertidige indstilling for en forespørgsel i genvejsmenuen.

Aktivér avanceret redigering for datadestinationsforespørgsler

For at ændre destinationsforespørgslen direkte i Dataflow-editoren skal du først aktivere den avancerede redigeringsfunktion:

  1. Vælg Indstillinger fra fanen Hjem i båndet.

  2. I dialogen Indstillinger skal du scrolle ned til sektionen Datadestinationer .

  3. Vælg afkrydsningsboksen for Aktiver avanceret redigering for datadestinationsforespørgsler.

  4. En advarselsdialog vises, der forklarer, at ændring af destinationsforespørgsler kan forårsage uventet adfærd eller bryde dataflowet. Læs advarslen grundigt og vælg OK for at bekræfte.

  5. Vælg OK for at lukke dialogen Indstillinger.

Ændr destinationsforespørgslen

Når du har aktiveret avanceret redigering, kan du få adgang til og ændre destinationsforespørgslen for din datadestination:

  1. I panelet Forespørgsler skal du finde datadestinationssektionen, der viser dine konfigurerede destinationer.

  2. Højreklik på destinationsforespørgslen kaldet dimension_city.

  3. Fra kontekstmenuen vælger du Avanceret editor.

Destinationsforespørgslen ser således ud:

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

Ligesom scriptet til kildekoden til Lakehouse har dette script til destinationen et lignende mønster, hvor det hardkoder workspaceId og warehouseId. Erstat disse faste værdier med identifikatorerne for de forespørgsler, du har oprettet, og dit script ser således ud:

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

Vælg OK for at gemme dine ændringer i den avancerede editor.

Vigtige oplysninger

Efter du har ændret en destinationsforespørgsel ved hjælp af avanceret redigering, virker standardbrugerfladen til at ændre destinationen ikke længere. Du skal fortsætte med at bruge den avancerede editor til yderligere ændringer af den destination. For mere information, se Avanceret redigering for datadestinationsforespørgsler.

Du kan nu køre dit dataflow, som bruger værdier fra variabelbiblioteker.