Condividi tramite


Connettersi a dbt Core

Nota

Questo articolo illustra dbt Core, una versione di dbt per il computer di sviluppo locale che interagisce con databricks SQL warehouse e cluster Azure Databricks all'interno delle aree di lavoro di Azure Databricks. Per usare invece la versione ospitata di dbt (denominata dbt Cloud) o per usare Partner Connect per creare rapidamente un warehouse SQL all'interno dell'area di lavoro e quindi connetterlo a dbt Cloud, vedere Connettersi a dbt Cloud.

dbt (data build tool) è un ambiente di sviluppo che consente agli analisti dei dati e ai data engineer di trasformare i dati semplicemente scrivendo istruzioni select. dbt gestisce la trasformazione di queste istruzioni select in tabelle e viste. dbt compila il codice in SQL non elaborato e quindi esegue tale codice nel database specificato in Azure Databricks. dbt supporta modelli di codifica collaborativi e procedure consigliate, ad esempio il controllo della versione, la documentazione, la modularità e altro ancora.

dbt non estrae o carica i dati. dbt è incentrato solo sul passaggio di trasformazione, usando un'architettura "transform after load". dbt presuppone che nel database sia già presente una copia dei dati.

Questo articolo è incentrato sull'uso di dbt Core. dbt Core consente di scrivere codice dbt nell'editor di testo o nell'IDE di propria scelta nel computer di sviluppo locale e quindi eseguire dbt dalla riga di comando. dbt Core include l'interfaccia della riga di comando dbt. L'interfaccia della riga di comando di dbt è gratuita da usare e open source.

È disponibile anche una versione ospitata di dbt denominata dbt Cloud. dbt Cloud è dotato di supporto chiavi in mano per la pianificazione di processi, CI/CD, documentazione, monitoraggio e avvisi e un ambiente di sviluppo integrato (IDE). Per altre informazioni, vedere Connettersi a dbt Cloud. Il piano dbt Cloud Developer offre un posto gratuito per sviluppatori; Sono disponibili anche piani a pagamento team ed Enterprise. Per altre informazioni, vedere dbt Pricing (Prezzi dbt) nel sito Web dbt.

Poiché dbt Core e dbt Cloud possono usare repository Git ospitati (ad esempio, in GitHub, GitLab o BitBucket), è possibile usare dbt Core per creare un progetto dbt e renderlo disponibile agli utenti di dbt Cloud. Per altre informazioni, vedere Creazione di un progetto dbt e Uso di un progetto esistente nel sito Web dbt.

Per una panoramica generale di dbt, guardare il video di YouTube seguente (26 minuti).

Requisiti

Prima di installare dbt Core, è necessario installare quanto segue nel computer di sviluppo locale:

  • Python 3.7 o versione successiva
  • Utilità per la creazione di ambienti virtuali Python ( ad esempio pipenv)

Per eseguire l'autenticazione è necessario anche uno dei seguenti:

  • (Consigliato) dbt Core abilitato come applicazione OAuth nell'account. L'impostazione è abilitata per impostazione predefinita.

  • Un token di accesso personale

    Nota

    Come procedura consigliata per la sicurezza quando si esegue l'autenticazione con strumenti automatizzati, sistemi, script e app, Databricks consiglia di usare i token OAuth.

    Se si usa l'autenticazione del token di accesso personale, Databricks consiglia di usare token di accesso personali appartenenti alle entità servizio anziché agli utenti dell'area di lavoro. Per creare token per le entità servizio, vedere Gestire i token per un'entità servizio.

Passaggio 1: Creare e attivare un ambiente virtuale Python

In questo passaggio si usa pipenv per creare un ambiente virtuale Python. È consigliabile usare un ambiente virtuale Python perché isola le versioni dei pacchetti e le dipendenze del codice in tale ambiente specifico, indipendentemente dalle versioni del pacchetto e dalle dipendenze del codice all'interno di altri ambienti. Ciò consente di ridurre le mancate corrispondenze impreviste della versione del pacchetto e i conflitti di dipendenza del codice.

  1. Dal terminale passare a una directory vuota, creando prima di tutto la directory, se necessario. Questa procedura crea una directory vuota denominata dbt_demo nella radice della home directory dell'utente.

    Unix, Linux, macOS

    mkdir ~/dbt_demo
    cd ~/dbt_demo
    

    Finestre

    mkdir %USERPROFILE%\dbt_demo
    cd %USERPROFILE%\dbt_demo
    
  2. In questa directory vuota creare un file denominato Pipfile con il contenuto seguente. Questo pipfile indica pipenv di usare Python versione 3.8.6. Se si usa una versione diversa, sostituire 3.8.6 con il numero di versione.

    [[source]]
    url = "https://pypi.org/simple"
    verify_ssl = true
    name = "pypi"
    
    [packages]
    dbt-databricks = "*"
    
    [requires]
    python_version = "3.8.6"
    

    Nota

    La riga dbt-databricks = "*" precedente indica pipenv di usare la versione più recente del dbt-databricks pacchetto. Negli scenari di produzione è consigliabile sostituire * con la versione specifica del pacchetto che si vuole usare. Databricks consiglia la versione 1.6.0 o successiva del pacchetto dbt-databricks. Vedere dbt-databricks Release history (Cronologia delle versioni di dbt-databricks) nel sito Web Python Package Index (PyPI).

  3. Creare un ambiente virtuale Python in questa directory eseguendo pipenv e specificando la versione di Python da usare. Questo comando specifica Python versione 3.8.6. Se si usa una versione diversa, sostituire 3.8.6 con il numero di versione:

    pipenv --python 3.8.6
    
  4. Installare l'adapter dbt Databricks eseguendo pipenv con l'opzione install . Vengono installati i pacchetti in Pipfile, che include il pacchetto dell'adapter dbt Databricks, , dbt-databricksda PyPI. Il pacchetto dell'adapter dbt Databricks installa automaticamente dbt Core e altre dipendenze.

    Importante

    Se il computer di sviluppo locale usa uno dei sistemi operativi seguenti, è necessario completare prima i passaggi aggiuntivi: CentOS, MacOS, Ubuntu, Debian e Windows. Vedere la sezione "Does my operating system have prerequisites" ( Usa pip per installare dbt nel sito Web dbt Labs).

    pipenv install
    
  5. Attivare questo ambiente virtuale eseguendo pipenv shell. Per confermare l'attivazione, il terminale viene visualizzato (dbt_demo) prima del prompt. L'ambiente virtuale inizia a usare la versione specificata di Python e isola tutte le versioni del pacchetto e le dipendenze del codice all'interno di questo nuovo ambiente.

    pipenv shell
    

    Nota

    Per disattivare questo ambiente virtuale, eseguire exit. (dbt_demo) scompare da prima del prompt. Se si esegue python --version o pip list con questo ambiente virtuale disattivato, è possibile che venga visualizzata una versione diversa di Python, un elenco diverso di pacchetti o versioni del pacchetto disponibili o entrambi.

  6. Verificare che l'ambiente virtuale esegua la versione prevista di Python eseguendo python con l'opzione --version .

    python --version
    

    Se viene visualizzata una versione imprevista di Python, assicurarsi di aver attivato l'ambiente virtuale eseguendo pipenv shell.

  7. Verificare che l'ambiente virtuale esegua le versioni previste di dbt e l'adapter dbt Databricks eseguendo dbt con l'opzione --version .

    dbt --version
    

    Se viene visualizzata una versione imprevista di dbt o della scheda dbt Databricks, assicurarsi di aver attivato l'ambiente virtuale eseguendo pipenv shell. Se viene ancora visualizzata una versione imprevista, provare a installare di nuovo dbt o l'adapter dbt Databricks dopo aver attivato l'ambiente virtuale.

Passaggio 2: Creare un progetto dbt e specificare e testare le impostazioni di connessione

In questo passaggio viene creato un progetto dbt, ovvero una raccolta di directory e file correlati necessari per usare dbt. Si configurano quindi i profili di connessione, che contengono le impostazioni di connessione a un cluster di Azure Databricks, a un'istanza di SQL Warehouse o a entrambi. Per aumentare la sicurezza, i progetti e i profili dbt vengono archiviati in posizioni separate per impostazione predefinita.

Suggerimento

È possibile connettersi a un cluster esistente o a sql warehouse oppure crearne uno nuovo.

  • Un cluster esistente o sql warehouse può essere efficiente per più progetti dbt, per l'uso di dbt in un team o per i casi d'uso di sviluppo.
  • Un nuovo cluster o sql warehouse consente di eseguire un singolo progetto dbt in isolamento per i casi d'uso di produzione, oltre a sfruttare la terminazione automatica per risparmiare sui costi quando il progetto dbt non è in esecuzione.

Usare Azure Databricks per creare un nuovo cluster o SQL Warehouse e quindi fare riferimento al cluster appena creato o esistente o a SQL Warehouse dal profilo dbt.

  1. Con l'ambiente virtuale ancora attivato, eseguire il comando dbt init con un nome per il progetto. Questa procedura crea un progetto denominato my_dbt_demo.

    dbt init my_dbt_demo
    
  2. Quando viene richiesto di scegliere un databricks database o spark , immettere il numero corrispondente a databricks.

  3. Quando viene richiesto un host valore, eseguire le operazioni seguenti:

    • Per un cluster, immettere il valore Nome host server dalla scheda Opzioni avanzate, JDBC/ODBC per il cluster Azure Databricks.
    • Per un'istanza di SQL Warehouse, immettere il valore Nome host server nella scheda Dettagli connessione per sql warehouse.
  4. Quando viene richiesto un http_path valore, eseguire le operazioni seguenti:

    • Per un cluster, immettere il valore percorso HTTP dalla scheda Opzioni avanzate, JDBC/ODBC per il cluster Azure Databricks.
    • Per un'istanza di SQL Warehouse, immettere il valore percorso HTTP nella scheda Dettagli connessione per sql warehouse.
  5. Per scegliere un tipo di autenticazione, immettere il numero corrispondente a use oauth (scelta consigliata) o use access token.

  6. Se si sceglie use access token per il tipo di autenticazione, immettere il valore del token di accesso personale di Azure Databricks.

    Nota

    Come procedura consigliata per la sicurezza, quando si esegue l'autenticazione con strumenti automatizzati, sistemi, script e app, Databricks consiglia di usare token di accesso personali appartenenti alle entità servizio anziché agli utenti dell'area di lavoro. Per creare token per le entità servizio, vedere Gestire i token per un'entità servizio.

  7. Quando viene richiesto il desired Unity Catalog option valore, immettere il numero corrispondente a use Unity Catalog o not use Unity Catalog.

  8. Se si sceglie di usare Unity Catalog, immettere il valore desiderato per catalog quando richiesto.

  9. Immettere i valori desiderati per schema e threads quando richiesto.

  10. dbt scrive le voci in un profiles.yml file. Il percorso di questo file è elencato nell'output del dbt init comando . È anche possibile elencare questo percorso in un secondo momento eseguendo il dbt debug --config-dir comando . È ora possibile aprire questo file per esaminarne e verificarne il contenuto.

    Se si è scelto use oauth per il tipo di autenticazione, aggiungere il profilo di autenticazione da computer a computer (M2M) o da utente a computer (U2M) a profiles.yml.

    Per esempi, vedere Configurare l'accesso ad Azure Databricks da dbt Core con Microsoft Entra ID.

    Databricks non consiglia di specificare direttamente i segreti.profiles.yml Impostare invece l'ID client e il segreto client come variabili di ambiente.

  11. Verificare che i dettagli della connessione siano corretti attraversando la my_dbt_demo directory ed eseguendo il dbt debug comando .

    Se si sceglie use oauth per il tipo di autenticazione, viene richiesto di accedere con il provider di identità.

    Importante

    Prima di iniziare, verificare che il cluster o SQL Warehouse sia in esecuzione.

    L'output dovrebbe essere simile al seguente:

    cd my_dbt_demo
    dbt debug
    
    ...
    Configuration:
      profiles.yml file [OK found and valid]
      dbt_project.yml file [OK found and valid]
    
    Required dependencies:
      - git [OK found]
    
    Connection:
      ...
      Connection test: OK connection ok
    

Passaggi successivi

  • Creare, eseguire e testare modelli dbt Core in locale. Vedere l'esercitazione su dbt Core.
  • Eseguire progetti dbt Core come attività di processo di Azure Databricks. Vedere Usare le trasformazioni dbt in un processo di Azure Databricks.

Risorse aggiuntive