Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln visar mönster som utplaceringsplaner ofta används för. Varje beskrivning beskriver distributionsgrupperna och de åtgärder som är kopplade till dem, så att du kan bygga motsvarande på canvasen.
För hur man bygger en plan, se Skapa en distributionsplan.
Distribuera ett objekt som är beroende av data som ett annat objekt producerar
Detta är den vanligaste anledningen att använda en plan.
Arbetsytan
Ett säljteam har sin analyslösning i en enda Git-ansluten arbetsyta som rymmer fyra objekt:
| Item | Type | Vad det gör |
|---|---|---|
Sales_Lakehouse |
Lakehouse | Lagrar försäljningstabellerna. Den är tom när den distribueras, eftersom en distribution kopierar artikeldefinitioner, inte data. |
Hydrate_TopCustomers |
Notebook | Skriver in råkällraderna i sjöhuset. |
Publish_TopCustomers |
Notebook | Omvandlar dessa rader till den publicerade dbo.top_customers tabellen. |
Sales_Warehouse |
Lager | Innehåller vyn dbo.vw_top_customers, med texten dbo.top_customers. |
Varför enbart distributionsordning inte räcker
Fabric använder objektursprung för att upptäcka att lagerdatabasvyn refererar till en lakehouse-tabell, så den distribuerar lakehouse innan lagerdatabasen.
Lineage visar inte att tabellen måste populeras innan vyn är giltig. Tabellen kommer inte med föremålsdefinitionen. De två anteckningsböckerna skapar den under körning:
Distribuera denna arbetsplats utan en plan och distributionen misslyckas. Varje objekt kopieras korrekt, men lagervyn skapas mot en tabell som ingen har producerat än, och distributionen rapporterar att objektnamnet är ogiltigt. Målet lämnas delvis utplacerat.
Det är inget fel på föremålen. Det som saknas är en instruktion om att köra notebookarna mellan distributionen av Lakehouse och distributionen av datalagret. Instruktionen är planen.
Planen
Planen har två utplaceringsgrupper, en för sjöhuset och en för lagret. Lakehousegruppen kör båda anteckningsböckerna som åtgärder efter distribution:
| Utplaceringsgrupp | Föremål utplacerat | Åtgärder efter utplacering | Beror på |
|---|---|---|---|
| Försäljning_Lakehouse | Sales_Lakehouse (sjöhus) | 1. Kör Hydrate_TopCustomers 2. Kör Publish_TopCustomers |
Ingenting |
| Försäljning_lager | Sales_Warehouse (lager) | None | Försäljning_Lakehouse |
När lakehouse har distribuerats skriver Hydrate_TopCustomers källraderna. Sedan Publish_TopCustomers skapar dbo.top_customers och väntar tills SQL-analysändpunkten exponerar tabellen. Sjöhusgruppen avslutas först efter att båda handlingarna är klara. Fabric kan då distribuera lagret och skapa sin vy.
Anteckningsböckerna är handlingar i lakehouse-gruppen, inte separata distributionsgrupper.
Publish_TopCustomers Det beror på Hydrate_TopCustomers, och lagergruppen beror på den färdiga Lakehouse-gruppen.
Här är samma plan på duken:
Förstå strukturen för plan.yml
Du bygger en plan på duken. När arbetsytan är ansluten till Git lagras planen som en plan.yml fil i mappen för utrullningsplanen, så den granskas och versionshanteras som vilket annat element som helst:
$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öljande struktur:
| Element | Purpose |
|---|---|
$schema |
Identifierar schemat som validerar plandefinitionen. |
version |
Identifierar versionen av plandefinitionen. |
groups |
Innehåller distributionsgrupperna i planen. |
name |
Ger en grupp eller åtgärd ett unikt namn som beroenden kan referera till. |
logicalId |
Identifierar Fabric-objektet över arbetsytor. |
dependsOn |
Deklarerar beroenden av en annan grupp eller handling med namn. |
preActions och postActions |
Kör jobb som stöds före eller efter att gruppens objekt distribueras. |
job |
Identifierar jobbtyp, objektlogiskt ID och valfria parametrar för en åtgärd. |
Några saker att notera i denna definition:
- En grupp namnger en sak.
logicalIdär objektets logiska ID, samma identifierare som Git-integrationen använder, så planen förblir giltig när objektet flyttas mellan arbetsytor. -
Gruppordningen uttrycks med
dependsOn, inte med position i filen. Att omordna grupperna i filen förändrar ingenting. - Handlingsordning uttrycks också med
dependsOn.Run Publish_TopCustomersstartar först efter attRun Hydrate_TopCustomershar slutförts. -
postActionskörs efter att gruppens objekt har distribuerats. AnvändpreActionsför arbete som måste göras först, som en valideringskontroll.
Tips/Råd
En åtgärd är klar när objektets körning är slut, inte när nedströmstjänster hinner ikapp. I detta exempel väntar den sista cellen i Publish_TopCustomers tills lakehouse-SQL-analysendpointen har katalogfört den nya tabellen. Lägg in den typen av beredskapskontroll i åtgärden, eftersom planen inte väntar på dig.
Uppdatera innehållet efter att det har distribuerats
En distribution uppdaterar objektdefinitioner. Den kör ingenting, så en semantisk modell eller en rapport speglar den nya definitionen men inte ny data.
| Utplaceringsgrupp | Föremål utplacerat | Körs efter att objektet har distribuerats | Beror på |
|---|---|---|---|
| Försäljning_Lager | Sales_Warehouse (lager) | None | Ingenting |
| Sales_Model | Sales_Model (semantisk modell) | Kör en datapipeline som uppdaterar modellen | Försäljning_lager |
Koppla denna plan till en distributionspipeline-utplacering så att en befordring till ett steg lämnar målet redo att användas istället för att behöva en manuell uppdatering.
Validera innan något distribueras
En åtgärd före distribution körs innan objektet i gruppen distribueras, så du kan använda den som en kontroll.
En åtgärd kan endast köra ett objekt som redan är distribuerat, så själva kontrollen distribueras av en tidigare grupp:
| Utplaceringsgrupp | Föremål utplacerat | Körs innan objektet distribueras | Beror på |
|---|---|---|---|
| Förprov | Preflight_Checks (anteckningsbok) | None | Ingenting |
| First_Real_Item | Den första posten i releasen | Kör Preflight_Checks | Förhandskontroll |
Om kontrollen misslyckas stoppas distributionen och inget som är beroende av den gruppen distribueras. Använd detta för att bekräfta att anslutningarna fungerar, att den nödvändiga kapaciteten är i drift eller att ett källsystem finns tillgängligt innan en lansering påbörjas.
Anmärkning
En pre-deploy-åtgärd kan inte köra det som gruppen själv distribuerar, eftersom det ännu inte finns i målmiljön. Distribuera objektet som utför kontrollen i en tidigare grupp, som visas här.
Beställning av arbete som släktlinjen inte kan se
Två föremål kan vara helt oberoende när det gäller släktskap, och ändå behöva en ordning. En plan är hur du uttrycker det.
| Utplaceringsgrupp | Föremål utplacerat | Beror på |
|---|---|---|
| Referensdata | Föremålet som producerar referensdata | Ingenting |
| Domain_Item | Ett objekt som läser referensdata via en anslutning istället för en direkt referens | Referensdata |
Eftersom beroendet går genom en koppling snarare än en artikelreferens kan Fabric inte dra slutsatsen. Planen tillhandahåller beställningen.