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 scrittura del codice collaborativi e procedure consigliate, ad esempio il controllo della versione, la documentazione e la modularità.
dbt non estrae o carica i dati. dbt è incentrato solo sul passaggio di trasformazione, usando un'architettura di "trasformazione dopo il caricamento". dbt presuppone che nel database sia già presente una copia dei dati.
L'articolo è incentrato su 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).
È disponibile anche una versione locale di dbt denominata 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 può essere usata gratuitamente ed è open source. Per ulteriori informazioni, consultare Connettersi a dbtCore.
Poiché dbt Cloud e dbt Core possono usare repository git ospitati (per esempio, su GitHub, GitLab o BitBucket), è possibile usare dbt Cloud per creare un progetto dbt e poi renderlo disponibile agli utenti di dbt Cloud e dbt Core. Per altre informazioni, consultare Creazione di un progetto dbt e Utilizzo di un progetto esistente nel sito Web dbt.
Per una panoramica generale e una dimostrazione di Prophecy, guardare il seguente video di YouTube (26 minuti).
Connettersi a dbt Cloud tramite Partner Connect
Questa sezione descrive come connettere un databricks SQL warehouse a dbt Cloud tramite Partner Connect e poi concedere a dbt Cloud l'accesso in lettura ai dati.
Differenze tra connessioni standard e dbt Cloud
Per connettersi a dbt Cloud tramite Partner Connect, seguire la procedura descritta in Connettersi ai partner di elaborazione dei dati utilizzando Partner Connect. La connessione dbt Cloud è diversa dalla preparazione dei dati standard e dalle connessioni di trasformazione nei seguenti modi:
- Oltre a un'entità servizio e a un token di accesso personale, Partner Connect crea un archivio SQL (in precedenza endpoint SQL) denominato DBT_CLOUD_ENDPOINT per impostazione predefinita.
Passaggi per la connessione
Per Connettersi a dbt Cloud tramite Partner Connect, seguire le istruzioni riportate qui sotto:
Connettersi ai partner di preparazione dati tramite Partner Connect.
Dopo la connessione a dbt Cloud, viene visualizzata la dashboard dbt Cloud. Per esplorare un progetto dbt Cloud, nella barra dei menu, accanto al logo dbt, selezionare il nome del proprio account dbt dal primo menu a discesa, se non è visualizzato e poi selezionare il progetto Databricks Partner Connect Trial dal secondo menu a discesa, se non è visualizzato.
Suggerimento
Per visualizzare le impostazioni del progetto, fare clic sul menu "tre strisce" o "hamburger", fare clic su Impostazioni account > Progetti e poi sul nome del progetto. Per visualizzare le impostazioni di connessione, fare clic sul collegamento accanto a Connessione. Per modificare qualsiasi impostazione, fare clic su Modifica.
Per visualizzare le informazioni sul token di accesso personale di Azure Databricks per questo progetto, fare clic sull'icona "persona" sulla barra dei menu, fare clic su Profilo > Credenziali > Databricks Partner Connect Trial e poi fare clic sul nome del progetto. Per apportare una modifica, fare clic su Modifica.
Passaggi per concedere a dbt Cloud l'accesso in lettura ai dati
Partner Connect concede l'autorizzazione di sola creazione all'entità servizio di DBT_CLOUD_USER solo nel catalogo predefinito. Seguire questa procedura nell'area di lavoro di Azure Databricks per concedere all'entità servizio di DBT_CLOUD_USER l'accesso in lettura ai dati scelti.
Avviso
È possibile adattare questi passaggi per fornire a dbt Cloud un accesso aggiuntivo ai cataloghi, ai database e alle tabelle dell'area di lavoro. Tuttavia, come procedura consigliata per la sicurezza, Databricks raccomanda vivamente di concedere l'accesso solo alle singole tabelle con cui è necessario che l’entità servizio DBT_CLOUD_USER possa operare e l'accesso in sola lettura a tali tabelle.
Fare clic su Catalogo nella barra laterale.
Selezionare il Warehouse SQL (DBT_CLOUD_ENDPOINT) nell'elenco a discesa in alto a destra.
- In Esplora cataloghi selezionare il catalogo che contiene il database per la tabella.
- Selezionare il database che contiene la tabella.
- Seleziona la tabella.
Suggerimento
Se il catalogo, il database o la tabella non sono elencati, inserire una parte qualsiasi del nome rispettivamente nelle caselle Seleziona catalogo, Seleziona database o Filtra tabelle per restringere l'elenco.
Fare clic su Autorizzazioni.
Fare clic su Concedi.
Per Digita per aggiungere più utenti o gruppi, selezionare DBT_CLOUD_USER. Si tratta dell'entità servizio di Azure Databricks creata automaticamente da Partner Connect nella sezione precedente.
Suggerimento
Se non viene visualizzato DBT_CLOUD_USER, iniziare a digitare
DBT_CLOUD_USER
nella casella Digita per aggiungere più utenti o gruppi fino a quando non viene visualizzato nell'elenco, poi sarà possibile selezionarlo.Concedere l'accesso in lettura solo selezionando
SELECT
eREAD METADATA
.Fare clic su OK.
Ripetere i passaggi da 4 a 9 per ogni tabella aggiuntiva a cui si vuole concedere l'accesso in lettura a dbt Cloud.
Risolvere i problemi relativi alla connessione a dbt Cloud
Se qualcuno elimina il progetto in dbt Cloud per questo account e si fa clic sul riquadro dbt, viene visualizzato un messaggio di errore che informa che è impossibile trovare il progetto. Per risolvere il problema, fare clic su Elimina connessione e quindi iniziare dall'inizio di questa procedura per creare di nuovo la connessione.
Connettersi manualmente a dbt Cloud
Questa sezione descrive come connettere un cluster di Azure Databricks o un Warehouse SQL Databricks nell'area di lavoro di Azure Databricks a dbt Cloud.
Importante
Databricks consiglia di connettersi a un'istanza di SQL Warehouse. Se non si ha il diritto di accesso a Databricks SQL o se si vogliono eseguire modelli Python, è invece possibile connettersi a un cluster.
Requisiti
Un cluster o SQL Warehouse nell'area di lavoro di Azure Databricks.
I dettagli di connessione per il cluster o SQL Warehouse, in particolare i valori Nome host server, Porta e Percorso HTTP.
Un token di accesso personale di Azure Databricks o un token Microsoft Entra ID (in precedenza Azure Active Directory). Per creare un token di accesso personale, seguire la procedura descritta in Token di accesso personali di Azure Databricks per gli utenti dell'area di lavoro.
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, consultare Gestire i token per un'entità servizio.
Per connettere dbt Cloud ai dati gestiti dal catalogo Unity, dbt versione 1.1 o successiva.
I passaggi descritti in questo articolo creano un nuovo ambiente che utilizza la versione dbt più recente. Per informazioni sull'aggiornamento della versione dbt per un ambiente esistente, consultare Aggiornamento alla versione più recente di dbt in Cloud nella documentazione di dbt.
Passaggio 1: Registrarsi a dbt Cloud
Passare a dbt Cloud - Registrati e immettere le informazioni di posta elettronica, nome e società. Creare una password e fare clic su Crea account personale.
Passaggio 2: Creare un progetto
In questo passaggio si crea un progetto dbt che contiene una connessione a un cluster Azure Databricks o a un warehouse SQL, un repository che contiene il codice sorgente e uno o più ambienti (ad esempio, ambienti di test e di produzione).
Fare clic sull'icona delle impostazioni, poi su Impostazioni account.
Fai clic su Nuovo progetto.
In Nome immettere un nome univoco per il progetto e poi fare clic su Continua.
In Scegli una connessione fare clic su Databricks e poi su Avanti.
In Nome immettere un nome univoco per la connessione dati.
Per Seleziona adattatore fare clic su Databricks (dbt-databricks).
Nota
Databricks consiglia di usare
dbt-databricks
, che supporta il catalogo Unity, anzichédbt-spark
. Per impostazione predefinita, i nuovi progetti usanodbt-databricks
. Per eseguire la migrazione di un progetto esistente adbt-databricks
, consultare Migrazione da dbt-spark a dbt-databricks nella documentazione di dbt.In Impostazioni, per Nome host server, immettere il valore del nome host del server in base ai requisiti.
Per Percorso HTTP immettere il valore del percorso HTTP in base ai requisiti.
Se l'area di lavoro è abilitata per il catalogo Unity , in Impostazioni facoltative immettere il nome del catalogo per dbt Cloud da usare.
In Credenziali di sviluppo, per Token immettere il token di accesso personale o il token di Microsoft Entra ID a seconda dei requisiti.
Per Schema immettere il nome dello schema in cui si vuole che dbt Cloud crei le tabelle e le viste (ad esempio
default
).Fare clic su Verifica connessione.
Se il test ha esito positivo, fare clic su Avanti.
Per altre informazioni, consultare Connessione a Databricks ODBC nel sito Web dbt.
Suggerimento
Per visualizzare o modificare le impostazioni per questo progetto o per eliminare completamente il progetto, fare clic sull'icona delle impostazioni, fare clic su Impostazioni account > Progetti e poi sul nome del progetto. Per modificare le impostazioni, fare clic su Modifica. Per eliminare il progetto, fare clic su Modifica > Elimina progetto.
Per visualizzare o modificare il valore del token di accesso personale di Azure Databricks per questo progetto, fate clic sull'icona “persona”, su Profilo > Credenziali e sul nome del progetto. Per apportare una modifica, fare clic su Modifica.
Dopo la connessione a un cluster Azure Databricks o a un Warehouse SQL databricks , seguire le istruzioni visualizzate in Configura un repository e poi fare clic su Continua.
Dopo aver configurato il repository, seguire le istruzioni visualizzate per invitare gli utenti e poi fare clic su Completa. In alternativa, fare clic su Ignora e completa.
Esercitazione
In questa sezione si utilizza il progetto dbt Cloud per lavorare con alcuni dati di esempio. Questa sezione presuppone che il progetto sia già stato creato e che l'IDE dbt Cloud sia aperto a quel progetto.
Passaggio 1: Creare ed eseguire modelli
In questo passaggio si usa l'IDE dbt Cloud per creare ed eseguire modelli, ovvero istruzioni select
che creano una nuova vista (impostazione predefinita) o una nuova tabella in un database, in base ai dati esistenti nello stesso database. Questa procedura crea un modello basato sulla tabella di esempio diamonds
dei Set di dati di esempio.
Usare il seguente comando per creare questo ruolo.
DROP TABLE IF EXISTS diamonds;
CREATE TABLE diamonds USING CSV OPTIONS (path "/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv", header "true")
Questa procedura presuppone che la tabella sia già stata creata nel database default
dell'area di lavoro.
Con il progetto aperto, fare clic su Sviluppa nella parte superiore dell'interfaccia utente.
Fare clic su Inizializza progetto dbt.
Fare clic su Commit e sincronizzazione, immettere un messaggio di commit e poi fare clic su Commit.
Fare clic su Crea ramo, immettere un nome per il ramo e poi fare clic su Invia.
Creare il primo modello: fare clic su Crea nuovo file.
Nell'editor di testo, inserire la seguente istruzione SQL. Questa istruzione seleziona solo i dettagli carat, cut, color e clarity per ogni diamante della tabella
diamonds
. Il bloccoconfig
indica a dbt di creare una tabella nel database in base a questa istruzione.{{ config( materialized='table', file_format='delta' ) }}
select carat, cut, color, clarity from diamonds
Suggerimento
Per altre opzioni
config
, ad esempio per la strategia incrementalemerge
, consultare Configurazioni di Databricks nella documentazione di dbt.Fare clic su Salva con nome.
Per il nome del file, immettere
models/diamonds_four_cs.sql
e poi fare clic su Crea.Creare un secondo modello: fare clic su (Crea nuovo file) nell'angolo in alto a destra.
Nell'editor di testo, inserire la seguente istruzione SQL. Questa istruzione seleziona valori univoci dalla colonna
colors
nella tabelladiamonds_four_cs
, ordinando i risultati in ordine alfabetico prima per ultimo. Poiché non è presente alcun bloccoconfig
, questo modello indica a dbt di creare una vista nel database in base a questa istruzione.select distinct color from diamonds_four_cs sort by color asc
Fare clic su Salva con nome.
Per il nome del file, immettere
models/diamonds_list_colors.sql
e poi fare clic su Crea.Creare un terzo modello: fare clic su (Crea nuovo file) nell'angolo in alto a destra.
Nell'editor di testo, inserire la seguente istruzione SQL. Questa istruzione calcola i prezzi dei diamanti in base al colore, ordinando i risultati in base al prezzo medio dal più alto al più basso. Questo modello indica a dbt di creare una vista nel database in base a questa istruzione.
select color, avg(price) as price from diamonds group by color order by price desc
Fare clic su Salva con nome.
Per il nome del file, immettere
models/diamonds_prices.sql
e fare clic su Crea.Eseguire i modelli: nella riga di comando eseguire il comando
dbt run
con i percorsi dei tre file precedenti. Nel databasedefault
, dbt crea una tabella denominatadiamonds_four_cs
e due viste denominatediamonds_list_colors
ediamonds_prices
. dbt ottiene questi nomi di vista e tabella dai nomi file correlati.sql
.dbt run --model models/diamonds_four_cs.sql models/diamonds_list_colors.sql models/diamonds_prices.sql
... ... | 1 of 3 START table model default.diamonds_four_cs.................... [RUN] ... | 1 of 3 OK created table model default.diamonds_four_cs............... [OK ...] ... | 2 of 3 START view model default.diamonds_list_colors................. [RUN] ... | 2 of 3 OK created view model default.diamonds_list_colors............ [OK ...] ... | 3 of 3 START view model default.diamonds_prices...................... [RUN] ... | 3 of 3 OK created view model default.diamonds_prices................. [OK ...] ... | ... | Finished running 1 table model, 2 view models ... Completed successfully Done. PASS=3 WARN=0 ERROR=0 SKIP=0 TOTAL=3
Eseguire il seguente codice SQL per elencare le informazioni sulle nuove viste e per selezionare tutte le righe dalla tabella e dalle viste.
Se ci si connette a un cluster, è possibile eseguire questo codice SQL da un notebook collegato al cluster, specificando SQL come linguaggio predefinito per il notebook. Se ci si connette a un'istanza di SQL Warehouse, è possibile eseguire questo codice SQL da una query.
SHOW views IN default
+-----------+----------------------+-------------+ | namespace | viewName | isTemporary | +===========+======================+=============+ | default | diamonds_list_colors | false | +-----------+----------------------+-------------+ | default | diamonds_prices | false | +-----------+----------------------+-------------+
SELECT * FROM diamonds_four_cs
+-------+---------+-------+---------+ | carat | cut | color | clarity | +=======+=========+=======+=========+ | 0.23 | Ideal | E | SI2 | +-------+---------+-------+---------+ | 0.21 | Premium | E | SI1 | +-------+---------+-------+---------+ ...
SELECT * FROM diamonds_list_colors
+-------+ | color | +=======+ | D | +-------+ | E | +-------+ ...
SELECT * FROM diamonds_prices
+-------+---------+ | color | price | +=======+=========+ | J | 5323.82 | +-------+---------+ | I | 5091.87 | +-------+---------+ ...
Passaggio 2: Creare ed eseguire modelli più complessi
In questo passaggio vengono creati modelli più complessi per un set di tabelle dati correlate. Queste tabelle di dati contengono informazioni su una lega sportiva fittizia di tre squadre che giocano una stagione di sei partite. Questa procedura crea le tabelle dati, crea ed esegue i modelli.
Eseguire il seguente codice SQL per creare le tabelle di dati necessarie.
Se ci si connette a un cluster, è possibile eseguire questo codice SQL da un notebook collegato al cluster, specificando SQL come linguaggio predefinito per il notebook. Se ci si connette a un'istanza di SQL Warehouse, è possibile eseguire questo codice SQL da una query.
Le tabelle e le viste in questo passaggio iniziano con
zzz_
per identificarle come parte di questo esempio. Non è necessario seguire questo modello per tabelle e viste personalizzate.DROP TABLE IF EXISTS zzz_game_opponents; DROP TABLE IF EXISTS zzz_game_scores; DROP TABLE IF EXISTS zzz_games; DROP TABLE IF EXISTS zzz_teams; CREATE TABLE zzz_game_opponents ( game_id INT, home_team_id INT, visitor_team_id INT ) USING DELTA; INSERT INTO zzz_game_opponents VALUES (1, 1, 2); INSERT INTO zzz_game_opponents VALUES (2, 1, 3); INSERT INTO zzz_game_opponents VALUES (3, 2, 1); INSERT INTO zzz_game_opponents VALUES (4, 2, 3); INSERT INTO zzz_game_opponents VALUES (5, 3, 1); INSERT INTO zzz_game_opponents VALUES (6, 3, 2); -- Result: -- +---------+--------------+-----------------+ -- | game_id | home_team_id | visitor_team_id | -- +=========+==============+=================+ -- | 1 | 1 | 2 | -- +---------+--------------+-----------------+ -- | 2 | 1 | 3 | -- +---------+--------------+-----------------+ -- | 3 | 2 | 1 | -- +---------+--------------+-----------------+ -- | 4 | 2 | 3 | -- +---------+--------------+-----------------+ -- | 5 | 3 | 1 | -- +---------+--------------+-----------------+ -- | 6 | 3 | 2 | -- +---------+--------------+-----------------+ CREATE TABLE zzz_game_scores ( game_id INT, home_team_score INT, visitor_team_score INT ) USING DELTA; INSERT INTO zzz_game_scores VALUES (1, 4, 2); INSERT INTO zzz_game_scores VALUES (2, 0, 1); INSERT INTO zzz_game_scores VALUES (3, 1, 2); INSERT INTO zzz_game_scores VALUES (4, 3, 2); INSERT INTO zzz_game_scores VALUES (5, 3, 0); INSERT INTO zzz_game_scores VALUES (6, 3, 1); -- Result: -- +---------+-----------------+--------------------+ -- | game_id | home_team_score | visitor_team_score | -- +=========+=================+====================+ -- | 1 | 4 | 2 | -- +---------+-----------------+--------------------+ -- | 2 | 0 | 1 | -- +---------+-----------------+--------------------+ -- | 3 | 1 | 2 | -- +---------+-----------------+--------------------+ -- | 4 | 3 | 2 | -- +---------+-----------------+--------------------+ -- | 5 | 3 | 0 | -- +---------+-----------------+--------------------+ -- | 6 | 3 | 1 | -- +---------+-----------------+--------------------+ CREATE TABLE zzz_games ( game_id INT, game_date DATE ) USING DELTA; INSERT INTO zzz_games VALUES (1, '2020-12-12'); INSERT INTO zzz_games VALUES (2, '2021-01-09'); INSERT INTO zzz_games VALUES (3, '2020-12-19'); INSERT INTO zzz_games VALUES (4, '2021-01-16'); INSERT INTO zzz_games VALUES (5, '2021-01-23'); INSERT INTO zzz_games VALUES (6, '2021-02-06'); -- Result: -- +---------+------------+ -- | game_id | game_date | -- +=========+============+ -- | 1 | 2020-12-12 | -- +---------+------------+ -- | 2 | 2021-01-09 | -- +---------+------------+ -- | 3 | 2020-12-19 | -- +---------+------------+ -- | 4 | 2021-01-16 | -- +---------+------------+ -- | 5 | 2021-01-23 | -- +---------+------------+ -- | 6 | 2021-02-06 | -- +---------+------------+ CREATE TABLE zzz_teams ( team_id INT, team_city VARCHAR(15) ) USING DELTA; INSERT INTO zzz_teams VALUES (1, "San Francisco"); INSERT INTO zzz_teams VALUES (2, "Seattle"); INSERT INTO zzz_teams VALUES (3, "Amsterdam"); -- Result: -- +---------+---------------+ -- | team_id | team_city | -- +=========+===============+ -- | 1 | San Francisco | -- +---------+---------------+ -- | 2 | Seattle | -- +---------+---------------+ -- | 3 | Amsterdam | -- +---------+---------------+
Creare il primo modello: fare clic su (Crea nuovo file) nell'angolo in alto a destra.
Nell'editor di testo, inserire la seguente istruzione SQL. Questa istruzione crea una tabella che fornisce i dettagli di ogni gioco, ad esempio i nomi e i punteggi della squadra. Il blocco
config
indica a dbt di creare una tabella nel database in base a questa istruzione.-- Create a table that provides full details for each game, including -- the game ID, the home and visiting teams' city names and scores, -- the game winner's city name, and the game date.
{{ config( materialized='table', file_format='delta' ) }}
-- Step 4 of 4: Replace the visitor team IDs with their city names. select game_id, home, t.team_city as visitor, home_score, visitor_score, -- Step 3 of 4: Display the city name for each game's winner. case when home_score > visitor_score then home when visitor_score > home_score then t.team_city end as winner, game_date as date from ( -- Step 2 of 4: Replace the home team IDs with their actual city names. select game_id, t.team_city as home, home_score, visitor_team_id, visitor_score, game_date from ( -- Step 1 of 4: Combine data from various tables (for example, game and team IDs, scores, dates). select g.game_id, go.home_team_id, gs.home_team_score as home_score, go.visitor_team_id, gs.visitor_team_score as visitor_score, g.game_date from zzz_games as g, zzz_game_opponents as go, zzz_game_scores as gs where g.game_id = go.game_id and g.game_id = gs.game_id ) as all_ids, zzz_teams as t where all_ids.home_team_id = t.team_id ) as visitor_ids, zzz_teams as t where visitor_ids.visitor_team_id = t.team_id order by game_date desc
Fare clic su Salva con nome.
Per il nome del file, immettere
models/zzz_game_details.sql
e poi fare clic su Crea.Creare un secondo modello: fare clic su (Crea nuovo file) nell'angolo in alto a destra.
Nell'editor di testo, inserire la seguente istruzione SQL. Questa istruzione crea una visualizzazione che elenca i record di vittoria della squadra per la stagione.
-- Create a view that summarizes the season's win and loss records by team. -- Step 2 of 2: Calculate the number of wins and losses for each team. select winner as team, count(winner) as wins, -- Each team played in 4 games. (4 - count(winner)) as losses from ( -- Step 1 of 2: Determine the winner and loser for each game. select game_id, winner, case when home = winner then visitor else home end as loser from zzz_game_details ) group by winner order by wins desc
Fare clic su Salva con nome.
Per il nome del file, immettere
models/zzz_win_loss_records.sql
e poi fare clic su Crea.Eseguire i modelli: nella riga di comando eseguire il comando
dbt run
con i percorsi dei due file precedenti. Nel databasedefault
(come specificato nelle impostazioni del progetto), dbt crea una tabella denominatazzz_game_details
e una vista denominatazzz_win_loss_records
. dbt ottiene questi nomi di vista e tabella dai nomi file correlati.sql
.dbt run --model models/zzz_game_details.sql models/zzz_win_loss_records.sql
... ... | 1 of 2 START table model default.zzz_game_details.................... [RUN] ... | 1 of 2 OK created table model default.zzz_game_details............... [OK ...] ... | 2 of 2 START view model default.zzz_win_loss_records................. [RUN] ... | 2 of 2 OK created view model default.zzz_win_loss_records............ [OK ...] ... | ... | Finished running 1 table model, 1 view model ... Completed successfully Done. PASS=2 WARN=0 ERROR=0 SKIP=0 TOTAL=2
Eseguire il seguente codice SQL per elencare le informazioni sulla nuova vista e per selezionare tutte le righe dalla tabella e dalla vista.
Se ci si connette a un cluster, è possibile eseguire questo codice SQL da un notebook collegato al cluster, specificando SQL come linguaggio predefinito per il notebook. Se ci si connette a un'istanza di SQL Warehouse, è possibile eseguire questo codice SQL da una query.
SHOW VIEWS FROM default LIKE 'zzz_win_loss_records';
+-----------+----------------------+-------------+ | namespace | viewName | isTemporary | +===========+======================+=============+ | default | zzz_win_loss_records | false | +-----------+----------------------+-------------+
SELECT * FROM zzz_game_details;
+---------+---------------+---------------+------------+---------------+---------------+------------+ | game_id | home | visitor | home_score | visitor_score | winner | date | +=========+===============+===============+============+===============+===============+============+ | 1 | San Francisco | Seattle | 4 | 2 | San Francisco | 2020-12-12 | +---------+---------------+---------------+------------+---------------+---------------+------------+ | 2 | San Francisco | Amsterdam | 0 | 1 | Amsterdam | 2021-01-09 | +---------+---------------+---------------+------------+---------------+---------------+------------+ | 3 | Seattle | San Francisco | 1 | 2 | San Francisco | 2020-12-19 | +---------+---------------+---------------+------------+---------------+---------------+------------+ | 4 | Seattle | Amsterdam | 3 | 2 | Seattle | 2021-01-16 | +---------+---------------+---------------+------------+---------------+---------------+------------+ | 5 | Amsterdam | San Francisco | 3 | 0 | Amsterdam | 2021-01-23 | +---------+---------------+---------------+------------+---------------+---------------+------------+ | 6 | Amsterdam | Seattle | 3 | 1 | Amsterdam | 2021-02-06 | +---------+---------------+---------------+------------+---------------+---------------+------------+
SELECT * FROM zzz_win_loss_records;
+---------------+------+--------+ | team | wins | losses | +===============+======+========+ | Amsterdam | 3 | 1 | +---------------+------+--------+ | San Francisco | 2 | 2 | +---------------+------+--------+ | Seattle | 1 | 3 | +---------------+------+--------+
Passaggio 3: Creare ed eseguire test
In questo passaggio vengono creati test, che sono affermazioni sui modelli. Quando si eseguono questi test, dbt dice se ogni test del progetto ha esito positivo o negativo.
Esistono due tipi di test. I test dello schema, scritti in YAML, restituiscono il numero di record che non superano un'asserzione. Quando questo numero è zero, tutti i record vengono superati e quindi i test vengono superati. I test dei dati sono query specifiche che devono restituire zero record affinché l' esito sia positivo.
Creare i test dello schema: fare clic su (Crea nuovo file) nell'angolo in alto a destra.
Nell'editor di testo immettere il seguente contenuto. Questo file include test dello schema che determinano se le colonne specificate hanno valori unici, non sono nulle, hanno solo i valori specificati o una loro combinazione.
version: 2 models: - name: zzz_game_details columns: - name: game_id tests: - unique - not_null - name: home tests: - not_null - accepted_values: values: ['Amsterdam', 'San Francisco', 'Seattle'] - name: visitor tests: - not_null - accepted_values: values: ['Amsterdam', 'San Francisco', 'Seattle'] - name: home_score tests: - not_null - name: visitor_score tests: - not_null - name: winner tests: - not_null - accepted_values: values: ['Amsterdam', 'San Francisco', 'Seattle'] - name: date tests: - not_null - name: zzz_win_loss_records columns: - name: team tests: - unique - not_null - relationships: to: ref('zzz_game_details') field: home - name: wins tests: - not_null - name: losses tests: - not_null
Fare clic su Salva con nome.
Per il nome del file, immettere
models/schema.yml
e poi fare clic su Crea.Creare il primo test dati: fare clic su (Crea nuovo file) nell'angolo in alto a destra.
Nell'editor di testo, inserire la seguente istruzione SQL. Questo file include un test dati per determinare se eventuali partite si sono verificate al di fuori della stagione regolare.
-- This season's games happened between 2020-12-12 and 2021-02-06. -- For this test to pass, this query must return no results. select date from zzz_game_details where date < '2020-12-12' or date > '2021-02-06'
Fare clic su Salva con nome.
Per il nome del file, immettere
tests/zzz_game_details_check_dates.sql
e poi fare clic su Crea.Creare un secondo test dati: fare clic su (Crea nuovo file) nell'angolo in alto a destra.
Nell'editor di testo, inserire la seguente istruzione SQL. Questo file include un test dati per determinare se i punteggi sono stati negativi o se le partite sono state pareggiate.
-- This sport allows no negative scores or tie games. -- For this test to pass, this query must return no results. select home_score, visitor_score from zzz_game_details where home_score < 0 or visitor_score < 0 or home_score = visitor_score
Fare clic su Salva con nome.
Per il nome del file, immettere
tests/zzz_game_details_check_scores.sql
e poi fare clic su Crea.Creare un terzo test dati: fare clic su (Crea nuovo file) nell'angolo in alto a destra.
Nell'editor di testo, inserire la seguente istruzione SQL. Questo file include un test dei dati per determinare se le squadre hanno record negativi di vittorie o sconfitte, se hanno record di vittorie o sconfitte superiori alle partite giocate o se hanno giocato più partite di quelle consentite.
-- Each team participated in 4 games this season. -- For this test to pass, this query must return no results. select wins, losses from zzz_win_loss_records where wins < 0 or wins > 4 or losses < 0 or losses > 4 or (wins + losses) > 4
Fare clic su Salva con nome.
Per il nome del file, immettere
tests/zzz_win_loss_records_check_records.sql
e poi fare clic su Crea.Eseguire i test: nella riga di comando eseguire il comando
dbt test
.
Passaggio 4: Pulizia
È possibile eliminare le tabelle e le viste create per questo esempio eseguendo il codice SQL seguente.
Se ci si connette a un cluster, è possibile eseguire questo codice SQL da un notebook collegato al cluster, specificando SQL come linguaggio predefinito per il notebook. Se ci si connette a un'istanza di SQL Warehouse, è possibile eseguire questo codice SQL da una query.
DROP TABLE zzz_game_opponents;
DROP TABLE zzz_game_scores;
DROP TABLE zzz_games;
DROP TABLE zzz_teams;
DROP TABLE zzz_game_details;
DROP VIEW zzz_win_loss_records;
DROP TABLE diamonds;
DROP TABLE diamonds_four_cs;
DROP VIEW diamonds_list_colors;
DROP VIEW diamonds_prices;
Passaggi successivi
- Altre informazioni sui modelli dbt.
- Informazioni su come testare i progetti dbt.
- Informazioni su come usare Jinja, un linguaggio di creazione modelli, per la programmazione di SQL nei progetti dbt.
- Maggiori informazioni sulle procedure consigliate dbt.