Gestione del ciclo di vita del codice

Questo documento descrive le best practice per la gestione del ciclo di vita del codice in Dataform: creazione di ambienti di sviluppo, gestione temporanea e produzione, e configurare le impostazioni di compilazione ed esecuzione per ciascun ambiente.

creare un ciclo di vita standardizzato dei flussi di lavoro SQL Dataform che cura i dati, ottimizza i processi di sviluppo, ti consigliamo di:

  • Creare ambienti di esecuzione per isolare le tabelle create durante lo sviluppo da tabelle a disposizione degli utenti finali.

  • Configura release e configurazioni del flusso di lavoro per l'esecuzione di flussi di lavoro in un ambiente di produzione e, facoltativamente, in un ambiente di gestione temporanea.

Questo documento descrive le soluzioni per isolare lo sviluppo con override delle compilazioni delle aree di lavoro e configurazione di ambienti di gestione temporanea e produzione configurazioni della release e configurazioni del flusso di lavoro.

Queste soluzioni consentono di creare ambienti di esecuzione all'interno di un singolo Repository Dataform e progetto Google Cloud. Puoi scegliere di impostare più copie di un repository Dataform, ospitate in diverse Progetto Google Cloud, con ogni progetto corrispondente a una fase del codice del ciclo di vita, ad esempio sviluppo, gestione temporanea e produzione. Questo approccio consente di personalizzare le autorizzazioni di Identity and Access Management in ogni fase del ciclo di vita del codice.

Best practice per ambienti di esecuzione isolati

Ti consigliamo di isolare le tabelle create durante il flusso di lavoro SQL di sviluppo eseguite da tabelle di produzione in BigQuery. In questo modo gli utenti finali possono passare alla produzione ed elimina il rischio che gli utenti finali accedano a dati errati per errore.

Puoi creare ambienti di esecuzione isolati nei seguenti modi:

Suddividi le tabelle di sviluppo e produzione per schema
Consigliato per piccoli team. Dataform crea sviluppo di produzione con schemi diversi in BigQuery. Dataform esegue tutte le tabelle di sviluppo negli schemi che hanno lo stesso suffisso, che indica che sono stati creati durante lo sviluppo. Gli sviluppatori possono sovrascrivere le tabelle di sviluppo degli altri.
Suddividi le tabelle di sviluppo e produzione per schema e progetto Google Cloud
Consigliato per team di medie dimensioni. Dataform crea sviluppo in tabelle di produzione in diversi schemi e progetti in BigQuery. Dataform ha pubblicato tutte le tabelle di sviluppo in un progetto Google Cloud di sviluppo dedicato. Ogni sviluppatore Dataform ha il proprio schema di sviluppo univoco tabelle. Questa soluzione elimina il rischio per gli sviluppatori sovrascrivere accidentalmente le tabelle di sviluppo degli altri. Lo svantaggio di questo approccio è che eliminando tabelle e schemi di sviluppo e ricreando tutte le tabelle di ciascun ambiente possono richiedere più tempo.
Suddividi le tabelle di sviluppo, gestione temporanea e produzione per progetto Google Cloud
Consigliato per team di grandi dimensioni o team che richiedono un ambiente di gestione temporanea. Dataform esegue le tabelle da ogni ambiente in un ambiente progetto Google Cloud in BigQuery. Questa soluzione ti offre avere maggiore controllo sul ciclo di vita del codice.

Tutte le soluzioni richiedono un singolo repository Dataform connesso a un singolo repository remoto di terze parti.

In tutte le soluzioni, gli sviluppatori attivare manualmente le esecuzioni di sviluppo all'interno delle rispettive aree di lavoro Dataform. Dataform compila automaticamente le tabelle di produzione e di gestione temporanea in una configurazione di release, e le esegue con la frequenza impostata in una configurazione del flusso di lavoro.

Suddividi sviluppo e produzione per schema

Questa soluzione crea due ambienti di esecuzione in cui Dataform i flussi di lavoro SQL: sviluppo e produzione. Per suddividere le tabelle di sviluppo e produzione per schema, devi configurare impostazioni del flusso di lavoro, override di compilazione dell'area di lavoro e una release configurazione. Per pianificare le esecuzioni di produzione, devi per creare una configurazione del flusso di lavoro.

Dataform esegue tutte le tabelle di sviluppo negli schemi che hanno lo stesso suffisso, indicante che sono stati creati durante lo sviluppo. Dataform esegue tutte le tabelle di produzione negli schemi senza alcun suffisso.

La tabella seguente mostra una configurazione che suddivide lo sviluppo e tabelle di produzione per schema, con uno schema di sviluppo:

Impostazione Sviluppo Produzione
Progetto Google Cloud enterprise-analytics enterprise-analytics
Ramo Git nome dello spazio di lavoro main
Override di compilazione dell'area di lavoro suffisso dello schema: dev -
Configurazione della release - production
Configurazione del flusso di lavoro - production

In questa soluzione, le tabelle di sviluppo e produzione sono archiviate in un progetto Google Cloud.

Gli sviluppatori attivano l'esecuzione manualmente nelle proprie aree di lavoro Dataform. In tutte le esecuzioni attivate manualmente, Dataform esegue le tabelle in schemi che hanno lo stesso suffisso, che contrassegna che sono stati creati durante lo sviluppo. Gli sviluppatori devono sapere che possono sovrascrivono le tabelle degli altri.

In Dataform, gli sviluppatori eseguono il commit delle modifiche ed eseguono il push delle modifiche rami del repository remoto. Quindi, nella piattaforma di hosting Git di terze parti, invia richieste di pull. L'approvazione di una richiesta di pull unisce le modifiche nel ramo main del repository remoto.

Dataform compila automaticamente le tabelle di produzione Ramo main del repository remoto in un risultato di compilazione in base a le impostazioni di configurazione della release production.

Dataform esegue automaticamente il risultato della compilazione production in base alla pianificazione impostata nella configurazione del flusso di lavoro production.

Per implementare questa soluzione, configura le seguenti impostazioni Dataform:

Impostazioni del flusso di lavoro

A seconda della versione di Dataform core, le impostazioni del flusso di lavoro memorizzati in workflow_settings.yaml o dataform.json. Per ulteriori informazioni, vedi Configura le impostazioni del flusso di lavoro Dataform.

In workflow_settings.yaml, configura le seguenti impostazioni:

defaultProject: enterprise-analytics
defaultDataset: analytics

In dataform.json, configura le seguenti impostazioni:

{
defaultSchema: "analytics",
defaultDatabase: "enterprise-analytics"
}

Override dell'area di lavoro

Suffisso schema: "dev"

Configurazione della release

Commitish Git: "main"

Per pianificare le esecuzioni dei risultati della compilazione production: creare una configurazione del flusso di lavoro.

Esempio di processo di sviluppo

In questo esempio, gli sviluppatori Sasha e Kai lavorano nella lo stesso repository Dataform. Il repository Dataform è connesso in un repository Git remoto di terze parti.

Esegue il commit e il push delle modifiche ai rami personalizzati nel repository remoto, chiamati sasha e kai.

La tabella seguente mostra le impostazioni dell'ambiente applicate per Sasha, Kai, e l'ambiente di produzione:

Impostazione Sasha Kai Produzione
Progetto Google Cloud enterprise-analytics enterprise-analytics enterprise-analytics
Ramo Git sasha kai main
Schema analytics_dev analytics_dev analytics

Sasha crea una nuova tabella e ne esegue il deployment in produzione nel seguente processo:

  1. In un'area di lavoro Dataform, Sasha crea la tabella user_stats.sqlx.
  2. Nell'area di lavoro, Sasha attiva manualmente l'esecuzione della tabella.
  3. Dataform crea Tabella enterprise-analytics.analytics_dev.user_stats nella Schema analytics_dev in enterprise-analytics progetto Google Cloud in BigQuery.
  4. Nell'area di lavoro, Sasha esegue il commit della modifica e la invia a sasha nel repository Git remoto.
  5. Nel repository remoto, Sasha invia una richiesta di pull.
  6. Nel repository remoto, Kai esamina e approva la richiesta di pull. unendo la modifica al ramo main.
  7. Dataform aggiorna automaticamente il risultato della compilazione nei production release con la frequenza specificata. Durante il prossimo aggiornamento production, Dataform aggiunge il componente enterprise-analytics.analytics.user_stats al risultato della compilazione.
  8. Durante l'esecuzione pianificata della configurazione di un flusso di lavoro, Dataform esegue la tabella enterprise-analytics.analytics.user_stats Nello schema analytics nel progetto Google Cloud enterprise-analytics in BigQuery.
  9. La tabella user_stats.sqlx è disponibile per gli utenti finali nell'area analytics schema nel progetto enterprise-analytics Google Cloud in BigQuery.

Suddividi sviluppo e produzione per schema e progetto

Questa soluzione crea due ambienti di esecuzione: sviluppo e produzione. Per suddividere le tabelle di sviluppo e produzione per schema e progetto Google Cloud, devi configurare le impostazioni del flusso di lavoro, gli override delle compilazioni delle aree di lavoro e una configurazione di release. Per pianificare le esecuzioni di produzione, devi per creare una configurazione del flusso di lavoro.

In questa soluzione, Dataform esegue lo sviluppo in un progetto Google Cloud di sviluppo dedicato, in schemi con un suffisso di schema diverso per ogni area di lavoro.

Dataform esegue tutte le tabelle di produzione in BigQuery un progetto Google Cloud di produzione dedicato senza suffisso dello schema.

La tabella seguente mostra una configurazione che suddivide lo sviluppo e tabelle di produzione per schema e progetto Google Cloud, con un schema per un'area di lavoro Dataform:

Impostazione Sviluppo Produzione
Progetto Google Cloud enterprise-dev enterprise-prod
Ramo Git nome dello spazio di lavoro main
Override di compilazione dell'area di lavoro suffisso dello schema: ${workspaceName} -
Configurazione della release - production
Configurazione del flusso di lavoro - production

In questa soluzione, Dataform esegue tabelle di sviluppo e produzione in diversi schemi e progetti Google Cloud in BigQuery.

Gli sviluppatori attivano l'esecuzione manualmente nelle proprie aree di lavoro Dataform. Ogni sviluppatore lavora nell'area di lavoro dedicata, che prende il nome da lui ad esempio sasha.

Quando uno sviluppatore attiva l'esecuzione nell'area di lavoro, Dataform aggiunge il nome dell'area di lavoro come suffisso dello schema a tutti gli schemi. Quindi, Dataform esegue nello schema personalizzato.

Ad esempio, Dataform crea tabelle dall'area di lavoro sasha nello schema analytics_sasha in BigQuery. In questo modo, ogni sviluppatore archivia le proprie tabelle di sviluppo nei propri schemi. Non vi è alcun rischio di sovrascrivere accidentalmente tabelle di altri sviluppatori.

In Dataform, gli sviluppatori eseguono il commit delle modifiche ed eseguono il push delle modifiche rami del repository remoto. Quindi, nella piattaforma di hosting Git di terze parti, invia richieste di pull. L'approvazione di una richiesta di pull unisce le modifiche nel ramo main del repository remoto.

Dataform compila automaticamente le tabelle di produzione Ramo main del repository remoto in un risultato di compilazione in base a le impostazioni di configurazione della release production.

Dataform esegue automaticamente il risultato della compilazione production in base alla pianificazione impostata nella configurazione del flusso di lavoro production.

Per implementare questa soluzione, configura le seguenti impostazioni Dataform:

Impostazioni del flusso di lavoro

A seconda della versione di Dataform core, le impostazioni del flusso di lavoro memorizzati in workflow_settings.yaml o dataform.json. Per ulteriori informazioni, vedi Configura le impostazioni del flusso di lavoro Dataform.

In workflow_settings.yaml, configura le seguenti impostazioni:

defaultProject: enterprise-dev
defaultDataset: analytics

In dataform.json, configura le seguenti impostazioni:

{
defaultSchema: "analytics",
defaultDatabase: "enterprise-dev"
}

Override dell'area di lavoro

Suffisso schema: "${workspaceName}"

Configurazione della release

  • Commitish Git: "main"
  • ID progetto Google Cloud: "enterprise-prod"

Per pianificare le esecuzioni dei risultati della compilazione production: Creare una configurazione del flusso di lavoro con una pianificazione personalizzata che meglio risponde alle tue esigenze.

Esempio di processo di sviluppo

In questo esempio, gli sviluppatori Sasha e Kai lavorano lo stesso repository Dataform. Il repository Dataform è connesso in un repository Git remoto di terze parti.

Sasha lavora nella sua area di lavoro dedicata, sasha, e Kai lavora nella sua area di lavoro dedicata, Kai. Esegue il commit e il push delle modifiche ai rami personalizzati nel repository remoto, chiamati sasha e kai.

La tabella seguente mostra le impostazioni dell'ambiente applicate per Sasha, Kai, e l'ambiente di produzione:

Impostazione Sasha Kai Produzione
Progetto Google Cloud enterprise-dev enterprise-dev enterprise-prod
Ramo Git sasha kai main
Override di compilazione dell'area di lavoro suffisso dello schema: ${workspaceName} suffisso dello schema: ${workspaceName} -
Configurazione della release - - production
Configurazione del flusso di lavoro - - production

Sasha crea una nuova tabella e ne esegue il deployment in produzione nel seguente processo:

  1. Nell'area di lavoro Dataform sasha, Sasha crea la tabella user_stats.sqlx.
  2. Nell'area di lavoro sasha, Sasha attiva manualmente l'esecuzione della tabella.
  3. Dataform esegue Tabella enterprise-dev.analytics_sasha.user_stats nella Schema analytics_sasha nel progetto Google Cloud enterprise-dev in BigQuery.
  4. Nell'area di lavoro sasha, Sasha esegue il commit della modifica e la invia all'area di lavoro Ramo sasha nel repository Git remoto.
  5. Nel repository remoto, Sasha invia una richiesta di pull.
  6. Nel repository remoto, Kai esamina e approva la richiesta di pull. unendo la modifica al ramo main.
  7. Dataform aggiorna automaticamente il risultato della compilazione nei production release con la frequenza specificata. Durante il prossimo aggiornamento production, Dataform aggiunge il componente enterprise-prod.analytics.user_stats al risultato della compilazione.
  8. Durante l'esecuzione pianificata della configurazione di un flusso di lavoro, Dataform esegue la tabella enterprise-prod.analytics.user_stats Nello schema analytics nel progetto Google Cloud enterprise-prod in BigQuery.
  9. La tabella user_stats.sqlx è disponibile per gli utenti finali nell'area analytics schema nel progetto enterprise-prod Google Cloud in BigQuery.

Suddividi sviluppo, gestione temporanea e produzione per schema e progetto

Questa soluzione crea tre ambienti di esecuzione: sviluppo, gestione temporanea e produzione. Tutti gli ambienti sono suddivisi per progetto Google Cloud. Inoltre, lo sviluppo è suddiviso dalla gestione temporanea e dalla produzione per schema.

Per suddividere le tabelle di sviluppo, gestione temporanea e produzione per schema e progetto Google Cloud, devi configurare le impostazioni del flusso di lavoro, gli override delle compilazioni delle aree di lavoro e due configurazioni di release. Per pianificare la gestione temporanea e la produzione devi creare due configurazioni del flusso di lavoro separate.

In questa soluzione, Dataform esegue le tabelle di sviluppo BigQuery in più schemi di sviluppo, una per area di lavoro Dataform, in un progetto Google Cloud di sviluppo dedicato.

Dataform esegue tutte le tabelle temporanee in BigQuery in un progetto Google Cloud di gestione temporanea dedicato in schemi che hanno lo stesso suffisso, i segni che sono stati creati in fase di gestione temporanea.

Dataform esegue tutte le tabelle di produzione in BigQuery in un progetto Google Cloud di produzione dedicato in schemi che hanno lo stesso suffisso, che sono stati creati in fase di produzione.

La tabella seguente mostra una configurazione di esempio che suddivide lo sviluppo, le tabelle temporanee e di produzione per schema e progetto Google Cloud, schema di sviluppo per un'area di lavoro Dataform:

Impostazione Sviluppo Gestione temporanea Produzione
Progetto Google Cloud enterprise-dev enterprise-staging enterprise-prod
Ramo Git nome dello spazio di lavoro main prod
Override di compilazione dell'area di lavoro suffisso dello schema: ${workspaceName} - -
Configurazione della release - staging production
Configurazione del flusso di lavoro - staging production

In questa soluzione, Dataform esegue lo sviluppo, la gestione temporanea in diversi progetti Google Cloud in BigQuery. Inoltre, Dataform esegue tabelle di sviluppo in più schemi, uno per area di lavoro. Dataform esegue gestione temporanea e produzione nello stesso schema, ma in progetti Google Cloud diversi.

Gli sviluppatori attivano l'esecuzione manualmente nelle proprie aree di lavoro Dataform. Ogni sviluppatore lavora nell'area di lavoro dedicata, che prende il nome da lui ad esempio sasha.

Ogni area di lavoro corrisponde a uno schema BigQuery personalizzato, denominato in base all'area di lavoro. Quando uno sviluppatore attiva l'esecuzione nell'area di lavoro, Dataform aggiunge il nome dell'area di lavoro come suffisso dello schema secondo lo schema predefinito. Quindi, Dataform esegue nello schema personalizzato in BigQuery.

Ad esempio, Dataform esegue le tabelle dall'area di lavoro sasha nello schema analytics_sasha in BigQuery. In questo modo, ogni sviluppatore archivia le proprie tabelle di sviluppo in un proprio schema. Non vi è alcun rischio di sovrascrivere accidentalmente tabelle di altri sviluppatori.

In Dataform, gli sviluppatori eseguono il commit delle modifiche ed eseguono il push delle modifiche rami del repository remoto. Quindi, nella piattaforma di hosting Git di terze parti, inviano richieste di pull al ramo main. Approvazione di una richiesta di pull unisce le modifiche al ramo main del repository remoto.

Dataform compila automaticamente le tabelle di gestione temporanea Ramo main del repository remoto in un risultato di compilazione in base a le impostazioni di configurazione della release staging.

Dataform esegue automaticamente il risultato della compilazione staging in base alla pianificazione impostata nella configurazione del flusso di lavoro staging.

Per promuovere le tabelle dalla gestione temporanea alla produzione, nell'hosting Git di terze parti gli sviluppatori inviano richieste di pull dal ramo main a prod ramo. L'approvazione di una richiesta di pull unisce le modifiche al ramo prod del repository remoto.

Dataform compila automaticamente le tabelle di produzione Ramo prod del repository remoto in un risultato di compilazione in base a le impostazioni di configurazione della release production.

Dataform esegue automaticamente il risultato della compilazione production in base alla pianificazione impostata nella configurazione del flusso di lavoro production.

Per implementare questa soluzione, configura le seguenti impostazioni Dataform:

Impostazioni del flusso di lavoro

A seconda della versione di Dataform core, le impostazioni del flusso di lavoro memorizzati in workflow_settings.yaml o dataform.json. Per ulteriori informazioni, vedi Configura le impostazioni del flusso di lavoro Dataform.

In workflow_settings.yaml, configura le seguenti impostazioni:

defaultProject: enterprise-dev
defaultDataset: analytics

In dataform.json, configura le seguenti impostazioni:

{
defaultSchema: "analytics",
defaultDatabase: "enterprise-dev"
}

Override dell'area di lavoro

Suffisso schema: "${workspaceName}"

Configurazione della release staging

  • Commitish Git: "main"
  • ID progetto Google Cloud: "enterprise-staging"

Configurazione della release prod

  • Commitish Git: "prod"
  • ID progetto Google Cloud: "enterprise-prod"

Per pianificare le esecuzioni dei risultati delle compilazioni staging e production: Creare due configurazioni del flusso di lavoro separate con pianificazioni personalizzate più adatti alle tue esigenze.

Esempio di processo di sviluppo

In questo esempio, gli sviluppatori Sasha e Kai lavorano nella lo stesso repository Dataform. Il repository Dataform è connesso in un repository Git remoto di terze parti.

Sasha lavora nella sua area di lavoro dedicata, sasha, e Kai lavora nella sua area di lavoro dedicata, Kai. Esegue il commit e il push delle modifiche ai rami personalizzati nel repository remoto, chiamati sasha e kai.

La tabella seguente mostra le impostazioni dell'ambiente applicate per Sasha, Kai, e l'ambiente di produzione:

Impostazione Sasha Kai Gestione temporanea Produzione
Progetto Google Cloud enterprise-dev enterprise-dev enterprise-staging enterprise-prod
Ramo Git sasha kai main prod
Schema analytics_sasha analytics_kai analytics analytics

Sasha crea una nuova tabella e ne esegue il deployment in produzione nel seguente processo:

  1. Nell'area di lavoro Dataform sasha, Sasha crea la tabella user_stats.sqlx.
  2. Nell'area di lavoro sasha, Sasha attiva manualmente l'esecuzione della tabella.
  3. Dataform esegue Tabella enterprise-dev.analytics_sasha.user_stats nella Schema analytics_sasha nel progetto Google Cloud enterprise-dev in BigQuery.
  4. Nell'area di lavoro sasha, Sasha esegue il commit della modifica e la invia all'area di lavoro Ramo sasha nel repository Git remoto.
  5. Nel repository remoto, Sasha invia una richiesta di pull al ramo main.
  6. Nel repository remoto, Kai esamina e approva la richiesta di pull. unendo la modifica al ramo main.
  7. Dataform aggiorna automaticamente il risultato della compilazione nei staging release con la frequenza specificata. Durante il prossimo aggiornamento staging, Dataform aggiunge il componente enterprise-staging.analytics.user_stats al risultato della compilazione.
  8. Durante l'esecuzione pianificata della configurazione di un flusso di lavoro, Dataform esegue la tabella enterprise-staging.analytics.user_stats Nello schema analytics nel progetto Google Cloud enterprise-staging in BigQuery.
  9. Nel repository remoto, Sasha invia una richiesta di pull al ramo prod.
  10. Nel repository remoto, Kai esamina e approva la richiesta di pull. unendo la modifica al ramo prod.
  11. Dataform aggiorna automaticamente il risultato della compilazione nei production release con la frequenza specificata. Durante il prossimo aggiornamento production, Dataform aggiunge il componente enterprise-prod.analytics.user_stats al risultato della compilazione.
  12. Durante l'esecuzione pianificata della configurazione di un flusso di lavoro, Dataform esegue la tabella enterprise-prod.analytics.user_stats nello schema analytics nel progetto Google Cloud enterprise-prod in in BigQuery.
  13. La tabella user_stats.sqlx è disponibile per gli utenti finali nell'area analytics schema nel progetto enterprise-prod Google Cloud in BigQuery.

Passaggi successivi