Del via


Variabelreferanser i en dataflyt

Note

Denne artikkelen fokuserer på en løsningsarkitektur fra CI/CD- og ALM-løsningsarkitekturer (Application Lifecycle Management) for Dataflow Gen2 som er avhengig av integrering av variable biblioteker og bare gjelder for Dataflow Gen2 med CI/CD-støtte.

Strukturvariabelbiblioteker i Dataflow Gen2 muliggjør sentralisert, gjenbrukbar konfigurasjonsadministrasjon på tvers av miljøer. Ved å referere til variabler direkte i dataflytskriptene kan du justere virkemåten dynamisk uten hardkodingsverdier, noe som er ideelt for CI/CD-arbeidsflyter. Denne integreringen forenkler distribusjonen på tvers av faser ved å tillate at arbeidsområdespesifikke verdier (for eksempel Lakehouse- eller arbeidsområde-ID-er) kan settes inn under kjøring, noe som gjør dataflytene mer tilpasningsdyktige og vedlikeholdbare.

Denne opplæringen veileder deg gjennom en eksempelløsning som bruker variabelreferanser i en dataflyt, og viser deg hvordan du kan:

  • Angi variabler: Bruke Fabric-variabelbibliotekene og deres distinkte datatyper
  • Variabeldrevet kilde: Bruke et Lakehouse med eksempeldatasettet WideWorldImpoters som kilde
  • Variabeldrevet logikk: Bruke inndatakontrollprogrammene som er tilgjengelige i hele dataflytopplevelsen
  • Variabeldrevet mål: Bruke et lager som mål

Diagram over en løsningsarkitektur som bruker variabelreferanser i Dataflow Gen2.

Note

Konseptene som vises i denne artikkelen, er universelle for Dataflow Gen2 og gjelder for andre kilder og mål utover de som vises her.

Scenarioet

Skjermbilde av spørringen med navnet dimension_city for scenarioet i Dataflow Gen2.

Dataflyten som brukes i dette scenariet, er enkel, men kjerneprinsippene som er beskrevet, gjelder for alle typer dataflyter. Den kobles til tabellen kalt dimension_city fra eksempeldatasettet for Wide World Importers som er lagret i et Lakehouse. Den filtrerer rader der SalesTerritory-kolonnen er lik Sørøst, og laster inn resultatet i en ny tabell kalt By i et lager. Alle komponentene – Lakehouse, Warehouse og Dataflow – er plassert i samme arbeidsområde. Hvis du vil gjøre dataflyten dynamisk, bruker du variabler til å drive kildetabellen, filterverdien og måltabellen. Disse endringene gjør at dataflyten kan kjøre med verdier som er lagret i Fabric-variabelbiblioteker i stedet for hardkodede.

Angi variabler

Note

Sørg for at Fabric-variabelbiblioteker er aktivert for organisasjonen eller sikkerhetsgruppen. Finn ut mer om hvordan du kommer i gang med variable biblioteker.

Som en anbefalt fremgangsmåte anbefales det alltid å ha en utforming i tankene før du oppretter en løsning, og hvilke komponenter fra dataflyten som er dynamisk hentet fra et variabelt bibliotek. Selv om du kan opprette flere biblioteker i et arbeidsområde, bruker dette eksemplet ett enkelt bibliotek kalt Mitt bibliotek som inneholder variablene som Dataflow Gen2 bruker:

Variabelnavn Type Formål
WorkspaceId GUID Brukes for datakilde- og målskript i dataflyten
LakehouseId GUID Bestemmer ID-en til Lakehouse som brukes som kilde
Lager-ID GUID Bestemmer ID-en til lageret som brukes som mål
Territorium Streng Angir hvilken verdi som skal brukes til å drive filterlogikken i dataflyten

Pass på at du angir standardverdiene som tilsvarer ditt eget miljø, og lagre deretter variabelbiblioteket.

Skjermbilde av de nylig opprettede Fabric-variabelbibliotekene med variablene WorkspaceId, LakehouseId, WarehouseId og Territory.

Variabeldrevet kilde

Når du bruker noen av Fabric-koblingene, for eksempel Lakehouse, Warehouse eller Fabric SQL, følger de alle samme navigasjonsstruktur og bruker samme inndataformat. I dette scenariet krever ingen av koblingene manuell inndata for å opprette en tilkobling. Hver av dem viser imidlertid hvilket arbeidsområde og element den kobler til gjennom navigasjonstrinnene i spørringen. Det første navigasjonstrinnet inneholder for eksempel workspaceId som spørringen kobler til.

Skjermbilde av Navigasjon 1-trinnet med workspaceId-verdien på formellinjen for dimension_city spørringen.

Målet er å erstatte de hardkodede verdiene på formellinjen med variabler. Mer spesifikt vil du bruke variablene WorkspaceId og LakehouseId til å drive denne logikken. Først må du hente disse variablene inn i Dataflow Gen2. En anbefalt tilnærming er å opprette spørringer for hver enkelt variabel for å sentralisere og enkelt administrere alle variabler du planlegger å bruke. Hvis du vil gjøre dette, oppretter du en tom spørring ved å gå inn i Hent data-oppføringen på båndet og velge alternativet Tom spørring fra rullegardinmenyen.

Skjermbilde av oppføringen i Hent data i Hjem-fanen for å opprette en tom spørring.

Hvis du velger dette alternativet, vises en ny dialogboks der du kan se den tomme spørringen som er opprettet. Du kan velge OK for å hente denne nye tomme spørringen.

Skjermbilde av den tomme spørringsdialogboksen.

Når spørringen er opprettet og vises i dataflyten, endrer du navnet på den til WorkspaceId og erstatter formelen i Kilde-trinnet til:

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

Dette skriptet er i utgangspunktet det som er i stand til å bestemme hvilket bibliotek og variabel som skal hentes. Det andre argumentet i Variable.ValueOrDefault funksjonen bestemmer hvilken verdi som skal angis når en variabel ikke kan hentes.

Note

Pass på at du erstatter strengen til «Arbeidsområde-ID-en din», det andre argumentet i funksjonen, med din egen tilsvarende verdi i miljøet ditt, og lagre spørringen.

Gjenta denne prosessen for LakehouseId-variabelen , og opprett en spørring med samme navn som variabelen, men bruk følgende formel for kildetrinnet:

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

Note

Pass på at du erstatter strengen til "Din Lakehouse-ID", det andre argumentet for funksjonen, med din egen tilsvarende verdi i miljøet ditt, og lagre spørringen.

Skjermbilde som viser en nylig opprettet spørring kalt LakehouseId og WorkspaceId.

Når begge spørringene er opprettet, kan du oppdatere spørringsskriptet slik at det bruker dem i stedet for hardkodede verdier. Dette innebærer å manuelt erstatte de opprinnelige verdiene på formellinjen med referanser til WorkspaceId- og LakehouseId-spørringene. Det opprinnelige spørringsskriptet ser slik ut:

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 oppdatert referansene i navigasjonstrinnene, kan det nye oppdaterte skriptet se slik ut:

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 legger merke til at den fortsatt evaluerer forhåndsvisningen av data på riktig måte i redigeringsprogrammet for dataflyt med de direkte referansene som er opprettet i diagramvisningen mellom alle de involverte spørringene:

Skjermbilde med WorkspaceId- og LakehouseId-spørringer som refereres til i dimension_city spørringen.

Variabeldrevet logikk

Nå som kilden bruker variabler, kan du fokusere på å endre transformasjonslogikken for dataflyten. I dette scenariet er filtertrinnet der logikken brukes, og verdien som filtreres, for øyeblikket hardkodet som Sørøst, bør erstattes med en spørring som refererer til en variabel. Hvis du vil gjøre dette, gjentar du den samme prosessen med å opprette en ny tom spørring og bruker formelen for kildetrinnet på nytt til å holde variabelen for Distrikt og endre navnet på spørringen til variabelnavnet også. Bruk følgende skript:

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

Skjermbilde av distriktsspørringen som er opprettet i dataflyten.

Gitt at filtertrinnet ditt ble opprettet ved hjelp av brukergrensesnittet, kan du gå over til trinnet Filtrerte rader, dobbeltvelge det og få innstillingsdialogen for filtertrinnet. I denne dialogboksen kan du velge, gjennom inndatakontrollprogrammet, om du vil bruke en spørring i stedet for en statisk verdi:

Skjermbilde av inndatakontrollprogrammet i dialogboksen for filterrader med mulighet for å referere til en spørring.

Når du har valgt alternativet Velg en spørring, vises en rullegardinliste som viser alle spørringer du kan velge mellom. Fra denne listen kan du velge den nylig opprettede distriktsspørringen.

Skjermbilde av distriktsspørringen som er valgt i kontrollprogrammet for inndata, fra dialogboksen for filterrader.

Når du velger OK, legger du merke til at diagramvisningen allerede har opprettet koblingen mellom distriktsspørringen og spørringen som er i bruk. Ikke bare det, men forhåndsvisningen av data viser deg nå informasjon for Midtøsten-territoriet.

Skjermbilde av diagramvisningen, spørringsinnstillinger og dataforhåndsvisning for dimension_city spørringen som viser data for SalesTerritory i Midtøsten.

Variabeldrevet destinasjon

Note

Det anbefales at du gjør deg kjent med konseptet med datamål i Dataflow Gen2 og hvordan nettflettingsskriptet opprettes fra artikkelen om datamål og administrerte innstillinger

Den siste komponenten som skal endres i dette scenariet, er målet. Selv om informasjonen om hva datamålet er, finnes i redigeringsprogrammet for dataflyt, må du bruke Git eller REST-API-en for å endre denne delen av dataflyten.

Skjermbilde av undermenyen som inneholder datamålinnstillingene for dimension_city spørringen.

Denne opplæringen viser deg hvordan du gjør endringene gjennom Git. Før du kan gjøre endringer gjennom git, må du sørge for å:

  • Opprett en spørring for WarehouseId-variabelen: Følg den samme prosessen som beskrevet i tidligere deler for å opprette en ny tom spørring og erstatte formelen for Kilde-trinnet som skal være:
Variable.ValueOrDefault("$(/**/My Library/WarehouseId)", "Your Warehouse ID")

Note

Pass på at du erstatter strengen for "Lager-ID-en din", det andre argumentet for funksjonen, med din egen tilsvarende verdi i miljøet, og lagre spørringen.

Skjermbilde av alle spørringer i dataflyten, inkludert den nylig opprettede WarehouseId-spørringen.

Viktig!

Kontroller at alle spørringene som inneholder en variabel, har deaktivert oppsamling. Skjermbilde av oppsamlingsalternativet for en spørring i kontekstmenyen.

  • Lagre dataflyten: Bruk Lagre-knappen i Hjem-fanen på båndet.

Skjermbilde av lagringsknappen for dataflyten.

Når dataflyten er lagret, må du sørge for å utføre endringene i Git-repositoriet og gå over til repositoriet for å se mashup.pq-filen for dataflyten. Når du ser på mashup.pq-filen , ser du etter spørringen du knyttet datamålet til. I dette scenariet er navnet på spørringen dimension_city. Du ser et postattributt over dette spørringsnavnet:

[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

Denne attributtoppføringen har et felt med navnet QueryName, som inneholder navnet på spørringen som har all datamållogikken knyttet til denne spørringen. Denne spørringen ser slik ut:

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

Du legger merke til at på samme måte som skriptet til kilden for Lakehouse, har dette skriptet for målet et lignende mønster der det hardkoder workspaceid som må brukes, og også warehouseId. Erstatt de faste verdiene med identifikatorene for spørringene du opprettet, og skriptet skal se slik ut:

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

Du kan nå utføre denne endringen og oppdatere dataflyten ved hjelp av endringene fra dataflyten gjennom kildekontrollfunksjonen i arbeidsområdet.

Du kan nå kjøre dataflyten, som bruker verdier fra variabelbiblioteker.