Esempi di piani di dispiegamento (anteprima)

Questo articolo mostra i modelli per cui i piani di dispiegamento sono comunemente utilizzati. Ognuno descrive i gruppi di distribuzione e le azioni a loro associate, così da poter costruire l'equivalente sulla tela.

Per come costruire un piano, vedi Crea un piano di deployment.

Distribuisci un elemento che dipende dai dati prodotti da un altro elemento

Questa è la ragione più comune per usare un piano.

Area di lavoro

Un team di vendita mantiene la sua soluzione di analytics in un unico workspace connesso a git-connected che contiene quattro elementi:

Item Tipo Funzionamento
Sales_Lakehouse Lakehouse Memorizza le tabelle di vendita. È vuoto quando viene distribuito, perché una distribuzione copia le definizioni degli elementi, non i dati.
Hydrate_TopCustomers Notebook Scrive le file della sorgente grezza nella casa del lago.
Publish_TopCustomers Notebook Trasforma quelle righe nella tabella pubblicata dbo.top_customers .
Sales_Warehouse Magazzino Contiene la vista dbo.vw_top_customers, con la dicitura dbo.top_customers.

Perché l'ordine di dispiegamento da solo non basta

Fabric utilizza la lineage degli oggetti per rilevare che la vista del magazzino fa riferimento a un tavolo della casa sul lago, quindi schiera la casa del lago prima del magazzino.

Lineage non mostra che la tabella debba essere popolata prima che la vista sia valida. La tabella non arriva con la definizione dell'oggetto. I due notebook lo producono in tempo reale:

Diagramma che mostra il notebook Hydrate che scrive una tabella di origine nel lakehouse, il notebook Publish che la trasforma in dbo.top_customers e la vista del data warehouse che legge tale tabella.

Distribuisci questo spazio di lavoro senza un piano e la distribuzione fallisce. Ogni elemento viene copiato correttamente, ma la vista warehouse viene creata su una tabella che nessuno ha ancora prodotto, e il deployment segnala che il nome dell'oggetto è invalido. Il bersaglio è lasciato parzialmente dispiegato.

Non c'è nulla che non va con gli oggetti. Quello che manca è l'istruzione per eseguire i quaderni tra il dispiegamento della casa sul lago e quello del magazzino. Quell'istruzione è il piano.

Il piano

Il piano prevede due gruppi di dispiegamento, uno per la casa sul lago e uno per il magazzino. Il gruppo lakehouse esegue entrambi i quaderni come azioni post-dispiegamento:

Gruppo di distribuzione del software Elemento dispiegato Azioni post-dispiegamento Dipende da
Sales_Lakehouse Sales_Lakehouse (casa sul lago) 1. Esegui Hydrate_TopCustomers
2. Esegui Publish_TopCustomers
Niente
Sales_Warehouse Sales_Warehouse (magazzino) None Sales_Lakehouse

Dopo la distribuzione del lakehouse, Hydrate_TopCustomers scrive le righe di origine. Poi Publish_TopCustomers crea dbo.top_customers e aspetta che l'endpoint di analisi SQL esponga la tabella. Il gruppo lakehouse termina solo dopo che entrambe le azioni sono terminate. Fabric può quindi dispiegare il magazzino e creare la sua visualizzazione.

I quaderni sono azioni nel gruppo lakehouse, non gruppi di dispiegamento separati. Publish_TopCustomers dipende da Hydrate_TopCustomers e il gruppo warehouse dipende dal gruppo lakehouse completato.

Ecco lo stesso piano sulla tela:

Screenshot del piano di distribuzione di SalesRelease che mostra il gruppo Sales_Lakehouse con Hydrate_TopCustomers e Publish_TopCustomers come azioni post-distribuzione nell'ordine indicato, seguito dal gruppo dipendente Sales_Warehouse.

Comprendi la struttura plan.yml

Costruisci un piano sulla tela. Quando lo spazio di lavoro è collegato a Git, il piano viene memorizzato come plan.yml file nella cartella dell'elemento del piano di deployment, quindi viene revisionato e versionato come qualsiasi altro elemento:

$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

Il file ha la struttura seguente:

Elemento Purpose
$schema Identifica lo schema che convalida la definizione del piano.
version Identifica la versione della definizione del piano.
groups Contiene i gruppi di dispiegamento nel piano.
name Dà a un gruppo o a un'azione un nome unico a cui le dipendenze possono fare riferimento.
logicalId Identifica l'elemento Fabric tra le aree di lavoro.
dependsOn Dichiara dipendenze da un altro gruppo o azione per nome.
preActions e postActions Esegui i processi supportati prima o dopo la distribuzione dell'elemento del gruppo.
job Identifica il tipo di lavoro, l'ID logico dell'elemento e i parametri opzionali per un'azione.

Alcune cose da notare in questa definizione:

  • Un gruppo nomina un elemento. logicalId è l'ID logico dell'elemento, lo stesso identificatore usato dall'integrazione Git, quindi il piano rimane valido mentre l'elemento si sposta tra gli spazi di lavoro.
  • L'ordine di gruppo è espresso con dependsOn, non per posizione nel file. Riorganizzare i gruppi nel file non cambia nulla.
  • L'ordine d'azione è espresso anche con dependsOn. Run Publish_TopCustomers si avvia solo dopo che Run Hydrate_TopCustomers è terminato.
  • postActions eseguire dopo che l'elemento del gruppo viene distribuito. Usare preActions per lavori che devono essere fatti prima, come un controllo di validazione.

Suggerimento

Un'azione si completa quando la run dell'oggetto termina, non quando i servizi a valle recuperano. In questo esempio, l'ultima cella di Publish_TopCustomers aspetta che l'endpoint SQL Analytics di Lakehouse abbia catalogato la nuova tabella. Metti quel tipo di controllo di prontezza all'interno dell'azione, perché il piano non aspetta per te.

Aggiorna il contenuto dopo la pubblicazione

Una distribuzione aggiorna le definizioni degli elementi. Non esegue nulla, quindi un modello semantico o un report riflette la nuova definizione ma non i nuovi dati.

Gruppo di distribuzione del software Elemento dispiegato Viene eseguito dopo la distribuzione dell'elemento Dipende da
Sales_Warehouse Sales_Warehouse (magazzino) None Niente
Sales_Model Sales_Model (modello semantico) Esegui una pipeline di dati che aggiorna il modello Vendite_Magazzino

Allega questo piano a una pipeline di distribuzione in modo che la promozione a una fase lasci la destinazione pronta per l'uso, anziché richiedere un aggiornamento manuale.

Convalida prima di qualsiasi distribuzione

Un'azione pre-deploy viene eseguita prima che l'oggetto del suo gruppo venga dispiegato, quindi puoi usarne una come gate.

Un'azione può eseguire solo un elemento già schierato, quindi il controllo stesso viene distribuito da un gruppo precedente:

Gruppo di distribuzione del software Elemento dispiegato Viene eseguito prima che l'elemento venga distribuito. Dipende da
Pre-volo Preflight_Checks (notebook) None Niente
First_Real_Item Il primo elemento del rilascio Esegui Preflight_Checks Pre-volo

Se il controllo non riesce, la distribuzione si interrompe e non viene distribuito nulla che dipenda da quel gruppo. Usa questo per confermare che le connessioni si risolvono, che una capacità richiesta sia in esecuzione o che un sistema sorgente sia disponibile prima dell'inizio del rilascio.

Annotazioni

Un'azione pre-deploy non può eseguire l'elemento distribuito dal proprio gruppo, perché tale elemento non esiste ancora nella destinazione. Distribuisci l'elemento che effettua il controllo in un gruppo precedente, come mostrato qui.

Ordina il lavoro che il lineage non può visualizzare

Due oggetti possono essere completamente indipendenti per quanto riguarda la discendenza, e richiedono comunque un ordine. Un piano è il modo in cui lo esprime.

Gruppo di distribuzione del software Elemento dispiegato Dipende da
Dati_di_riferimento L'elemento che produce dati di riferimento Niente
Domain_Item Un elemento che legge i dati di riferimento tramite una connessione piuttosto che un riferimento diretto Dati_di_riferimento

Poiché la dipendenza passa attraverso una connessione invece che un riferimento all'elemento, Fabric non può dedurlo. Il piano definisce l'ordine.