Del via


Parametrisert dataflyt Gen2

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 funksjonen for fellesparametermodus, og som bare gjelder for Dataflow Gen2 med CI/CD-støtte.

Med parametere i Fabric Dataflow Gen2 kan du definere gjenbrukbare inndata som former hvordan en dataflyt utformes, og med modus for offentlige parametere kan disse inndataene angis under kjøring via pipeliner eller API-er. Det gjør én enkelt dataflyt svært fleksibel og allsidig, siden du kan bruke den samme logikken på nytt på tvers av mange scenarioer ved å sende forskjellige verdier, noe som muliggjør dynamiske, automatiserte arbeidsflyter uten å måtte skrive om eller duplisere transformasjonene.

Denne opplæringen veileder deg gjennom et eksempel som viser deg hvordan du kan:

  • Parametriser en kilde: Bruke et Lakehouse med WideWorldImpoters-eksempeldatasettet som kilde
  • Parametriser logikk: Bruke inndatakontrollprogrammene som er tilgjengelige i hele dataflytopplevelsen
  • Parametriser mål: Bruke et lager som mål
  • Send inn en kjøreforespørsel med parameterverdier: sende parameterverdier gjennom dataflytaktivitetsopplevelsen i et Fabric-datasamlebånd

Diagram over en parametrisert løsningsarkitektur for dataflyt 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, parametriserer du kildetabellen, filterverdien og måltabellen. Disse endringene gjør at dataflyten kan kjøre med bestemte verdier i stedet for hardkodede.

Før du fortsetter, aktiverer du modus for offentlige parametere ved å gå til Hjem-fanen , velge Alternativer, og i Parametere-delen merker du av i boksen Aktiver parametere som skal oppdages og overstyres for kjøring , og la dataflyten godta parametere under kjøring.

Skjermbilde av alternativdialogboksen i Dataflow Gen2 med Parametere-delen som viser innstillingen «Aktiver for å bli oppdaget og overstyrt for kjøring».

Parametriser 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 parametere. Nærmere bestemt må du opprette én parameter for WorkspaceId og en annen for LakehouseId. Hvis du vil opprette parametere, går du til Hjem-fanen på båndet, velger Administrer parametere og velger deretter Ny parameter fra rullegardinmenyen.

Skjermbilde av oppføringen i Hjem-fanen for å opprette en ny parameter.

Når du oppretter parameterne, må du sørge for at begge er merket som nødvendige og satt til teksttypen . For gjeldende verdier bruker du de som samsvarer med de tilsvarende verdiene fra ditt spesifikke miljø.

Skjermbilde av LakehouseId-parameteren som ble opprettet i dialogboksen Administrer parametere.

Når begge parameterne er opprettet, kan du oppdatere spørringsskriptet slik at det bruker dem i stedet for hardkodede verdier. Dette innebærer å erstatte de opprinnelige verdiene på formellinjen manuelt med referanser til parameterne for arbeidsområde-ID og Lakehouse-ID. 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.

Parametriser logikk

Nå som kilden bruker parametere, kan du fokusere på å parametrisere 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 parameter. Dette gjør du ved å opprette en ny parameter kalt Distrikt, angi datatypen til tekst, merke den som ikke nødvendig og angi gjeldende verdi til Midtøsten.

Skjermbilde av Territory-parameteren som ble opprettet i dialogboksen Administrer parametere.

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 parameter i stedet for en statisk verdi:

Skjermbilde av inndatakontrollprogrammet i dialogboksen for filterrader med mulighet for å referere til en parameter.

Når du har valgt alternativet Velg en parameter, vises en rullegardinliste som viser alle tilgjengelige parametere som samsvarer med den nødvendige datatypen. Fra denne listen kan du velge den nyopprettede distriktsparameteren.

Skjermbilde av Territory-parameteren som er valgt i inndatakontrollprogrammet fra dialogboksen for filterrader.

Når du velger OK, legger du merke til at diagramvisningen allerede har opprettet koblingen mellom den nylig opprettede parameteren 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.

Parametriser 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 parameteriseres 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 for å parametrisere 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 parameter med navnet WarehouseId: sørg for å bruke den tilsvarende ID-en til lageret som gjeldende verdi, angi den etter behov og av tekstdatatypen.
  • 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 til parameterne, og skriptet ditt 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 bekrefte at alle endringer er på plass ved å åpne dataflyten og se gjennom datamålet og eventuelle tidligere parameterreferanser som ble lagt til. Dette fullfører all parametriseringen av dataflyten, og du kan nå gå videre til å kjøre dataflyten ved å sende parameterverdier for kjøring.

Kjør forespørsel med parameterverdier

Du kan bruke REST-API-en for infrastruktur til å sende en kjøreforespørsel med en egendefinert nyttelast som inneholder parameterverdiene for den bestemte kjøreoperasjonen, og du kan også bruke REST-API-en til å oppdage dataflytparametere og forstå hva dataflyten forventer, slik at den kan utløse en kjøring. I denne opplæringen skal du bruke opplevelsen som finnes i dataflytaktiviteten for Fabric-datasamlebånd. Start med å opprette en pipeline, og legg til en ny dataflytaktivitet på lerretet. Finn arbeidsområdet der dataflyten er plassert i innstillingene for aktiviteten, og velg deretter dataflyten fra rullegardinlisten.

Skjermbilde av dataflytaktiviteten med parametere i et datasamlebånd.

En del for dataflytparametere kan utvides for å vise deg alle tilgjengelige parametere i dataflyten og standardverdiene. Du kan erstatte alle verdier her, og verdiene som sendes, brukes til å definere hvilke kilder, logikk og mål som skal brukes til å evaluere dataflytkjøringen. Du kan også prøve nye scenarier ved å opprette et nytt lager og endre WarehouseId for evalueringen eller bruke dette mønsteret i et distribusjonssamlebånd der WorkspaceId og andre parametere må sendes for å peke til de riktige varene i det tilsvarende miljøet.