Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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:
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:
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_TopCustomerssi avvia solo dopo cheRun Hydrate_TopCustomersè terminato. -
postActionseseguire dopo che l'elemento del gruppo viene distribuito. UsarepreActionsper 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.