Eksempler på distribusjonsplaner (forhåndsvisning)

Denne artikkelen viser mønstre som utplasseringsplaner ofte brukes til. Hver av dem beskriver distribusjonsgruppene og handlingene knyttet til dem, slik at du kan bygge tilsvarende på lerretet.

For hvordan du bygger en plan, se Lag en utplasseringsplan.

Distribuer et element som er avhengig av data et annet element produserer

Dette er den vanligste grunnen til å bruke en plan.

Arbeidsområdet

Et salgsteam oppbevarer analyseløsningen sin i et enkelt git-tilkoblet arbeidsområde som inneholder fire elementer:

Element Type Hva det gjør
Sales_Lakehouse Lakehouse Oppbevarer salgsbordene. Den er tom når den deployeres, fordi en deployering kopierer item-definisjoner, ikke data.
Hydrate_TopCustomers Notebook Skriver de rå kilderadene inn i hytta ved innsjøen.
Publish_TopCustomers Notebook Gjør disse radene om til den publiserte dbo.top_customers tabellen.
Sales_Warehouse Lager Holder visningen dbo.vw_top_customers, som lyder dbo.top_customers.

Hvorfor ikke bare utplasseringsrekkefølge er nok

Fabric bruker item lineage for å oppdage at lagervisningen refererer til en lakehouse-tabell, så den deployerer lakehouse før lageret.

Lineage viser ikke at tabellen må fylles før visningen er gyldig. Tabellen kommer ikke med gjenstandsdefinisjonen. De to notatbøkene produserer den under kjøring:

Diagram som viser Hydrate-notatboken som skriver en kildetabell inn i innsjøhuset, Publish-notatboken som gjør den om til dbo.top_customers, og lagervisningen som leser den tabellen.

Distribuerer du dette arbeidsområdet uten en plan, mislykkes utrullingen. Hvert element kopieres korrekt, men varelagervisningen opprettes mot en tabell som ingen har laget ennå, og distribusjonen rapporterer at objektnavnet er ugyldig. Målet blir delvis utplassert.

Det er ingenting galt med gjenstandene. Det som mangler er instruksjonen om å kjøre notatbøkene mellom utrulling av innsjøhuset og utrulling av lageret. Den instruksjonen er planen.

Planen

Planen har to utplasseringsgrupper, én for innsjøhuset og én for lageret. Lakehouse-gruppen kjører begge notatbøkene som post-deployeringsaksjoner:

Distribusjonsgruppe Gjenstand utplassert Handlinger etter utplassering Kommer an på
Sales_Lakehouse Sales_Lakehouse (innsjøhus) 1. Løp Hydrate_TopCustomers
2. Løp Publish_TopCustomers
Ingenting
Sales_Warehouse Sales_Warehouse (lager) Ingen Sales_Lakehouse

Etter at innsjøhuset er utplassert, Hydrate_TopCustomers skriver kilderadene. Deretter Publish_TopCustomers oppretter dbo.top_customers og venter til SQL-analyseendepunktet eksponerer tabellen. Lakehouse-gruppen fullfører først etter at begge handlingene er ferdige. Fabric kan deretter distribuere lageret og lage sin visning.

Notatbøkene er handlinger i lakehouse-gruppen, ikke separate deployeringsgrupper. Publish_TopCustomers Det avhenger av Hydrate_TopCustomers, og lagergruppen avhenger av den ferdige Lakehouse-gruppen.

Her er samme plan på lerretet:

Skjermbilde av SalesRelease-distribusjonsplanen som viser Sales_Lakehouse-gruppen med Hydrate_TopCustomers og Publish_TopCustomers som ordnede handlinger etter utrulling, etterfulgt av den avhengige Sales_Warehouse-gruppen.

Forstå den plan.yml strukturen

Du bygger en plan på lerretet. Når arbeidsområdet er koblet til Git, lagres planen som en plan.yml fil i mappen til deployeringsplan-elementet, slik at den blir gjennomgått og versjonsbasert som alle andre elementer:

$schema: https://developer.microsoft.com/json-schemas/fabric/item/deploymentPlan/definition/plan/1.0.0/schema.json
version: 1.0.0
groups:
  - name: Sales_Lakehouse
    logicalId: 11111111-1111-1111-1111-111111111111
    postActions:
      - name: Run Hydrate_TopCustomers
        job:
          type: Execute
          logicalId: 22222222-2222-2222-2222-222222222222
      - name: Run Publish_TopCustomers
        dependsOn:
          - actionName: Run Hydrate_TopCustomers
        job:
          type: Execute
          logicalId: 33333333-3333-3333-3333-333333333333
  - name: Sales_Warehouse
    logicalId: 44444444-4444-4444-4444-444444444444
    dependsOn:
      - groupName: Sales_Lakehouse

Filen har følgende struktur:

Element Formål
$schema Identifiserer skjemaet som validerer plandefinisjonen.
version Identifiserer plandefinisjonsversjonen.
groups Inneholder deployeringsgruppene i planen.
name Gir en gruppe eller handling et unikt navn som avhengigheter kan referere til.
logicalId Identifiserer Fabric-varen på tvers av arbeidsområder.
dependsOn Erklærer avhengigheter av en annen gruppe eller handling ved navn.
preActions Og postActions Kjør støttede jobber før eller etter gruppens gjenstand deployeres.
job Identifiserer jobbtype, elementlogisk ID og valgfrie parametere for en handling.

Noen ting å merke seg i denne definisjonen:

  • En gruppe navngir én gjenstand. logicalId er elementets logiske ID, samme identifikator som Git-integrasjonen bruker, slik at planen forblir gyldig når elementet flyttes mellom arbeidsområder.
  • Gruppeordenen uttrykkes med dependsOn, ikke etter posisjon i filen. Omorganisering av gruppene i filen endrer ingenting.
  • Handlingsrekkefølgen uttrykkes også med dependsOn. Run Publish_TopCustomers starter først etter Run Hydrate_TopCustomers mål.
  • postActions Løp etter at gruppens gjenstand er utplassert. Bruk preActions det til arbeid som må gjøres først, som en valideringssjekk.

Tips

En handling er ferdig når varens kjøring er over, ikke når nedstrømstjenestene tar igjen. I dette eksempelet venter den siste cellen til Publish_TopCustomers lakehouse SQL-analyseendepunkt har katalogisert den nye tabellen. Sett inn en slik beredskapssjekk i handlingen, for planen venter ikke på dine vegne.

Oppdater innholdet etter at det er distribuert

En utrulling oppdaterer varedefinisjoner. Den kjører ingenting, så en semantisk modell eller en rapport reflekterer den nye definisjonen, men ikke nye data.

Distribusjonsgruppe Gjenstand utplassert Kjører etter at gjenstanden er utplassert Kommer an på
Sales_Warehouse Sales_Warehouse (lager) Ingen Ingenting
Sales_Model Sales_Model (semantisk modell) Kjør en datapipeline som oppdaterer modellen Sales_Warehouse

Legg denne planen til en distribusjonspipeline-utrulling slik at promotering til et stadium etterlater målet klart til bruk i stedet for manuell oppdatering.

Valider før noe deployeres

En pre-deploy-handling kjøres før gjenstanden i gruppen deployeres, så du kan bruke en som port.

En handling kan bare kjøre et element som allerede er distribuert, så selve sjekken blir distribuert av en tidligere gruppe:

Distribusjonsgruppe Gjenstand utplassert Kjører før gjenstanden deployeres Kommer an på
Forhåndsvisning Preflight_Checks (notatbok) Ingen Ingenting
First_Real_Item Det første punktet i utgivelsen Løp Preflight_Checks Forhåndsvisning

Hvis sjekken feiler, stopper utrullingen og ingenting som avhenger av den gruppen deployeres. Bruk dette for å bekrefte at tilkoblinger løses, at en nødvendig kapasitet kjører, eller at et kildesystem er tilgjengelig før en utgivelse begynner.

Bemerkning

En pre-deploy-handling kan ikke kjøre gjenstanden dens egen gruppe deployer, fordi den gjenstanden ennå ikke eksisterer i målet. Distribuer elementet som utfører sjekken i en tidligere gruppe, som vist her.

Bestillingsarbeid som slekten ikke kan se

To gjenstander kan være helt uavhengige når det gjelder slektslinje, og likevel kreve en bestilling. En plan er måten du uttrykker det på.

Distribusjonsgruppe Gjenstand utplassert Kommer an på
Reference_Data Elementet som produserer referansedata Ingenting
Domain_Item Et element som leser referansedata gjennom en forbindelse i stedet for en direkte referanse Reference_Data

Fordi avhengigheten går gjennom en forbindelse i stedet for en gjenstandsreferanse, kan ikke Fabric utlede den. Planen leverer bestillingen.