Csatlakozás a DBT Cloudhoz
A dbt (adatépítési eszköz) egy olyan fejlesztési környezet, amely lehetővé teszi az adatelemzők és adatmérnökök számára, hogy egyszerűen select utasítások írásával alakítsa át az adatokat. A dbt kezeli a select utasítások tables-gyé és views-vé alakítását. a dbt a kódot nyers SQL-be fordítja, majd lefuttatja a kódot az Azure Databricks megadott adatbázisán. a dbt támogatja a kollaboratív kódolási mintákat és a legjobb gyakorlatokat, mint például a verziókezelés, a dokumentáció és a modularitás.
A dbt nem nyer ki és nem tölt be adatokat. A dbt csak az átalakítási lépésre összpontosít, egy "átalakítás betöltése után" architektúrával. a dbt feltételezi, hogy már van egy másolat az adatokról az adatbázisban.
Ez a cikk a dbt Cloudról szól. a dbt Cloud kulcsrakészen támogatja a munkák ütemezését, a CI/CD-t, a dokumentáció kiszolgálását, a felügyeletet és a riasztást, valamint az integrált fejlesztői környezetet (IDE).
A dbt Core nevű helyi verzió is elérhető. a dbt Core lehetővé teszi, hogy a dbt kódot a helyi fejlesztőgépen a választott szövegszerkesztőben vagy IDE-ben írja meg, majd a dbt-t a parancssorból futtassa. a dbt Core tartalmazza a dbt parancssori felületet (CLI). A dbt CLI szabadon használható és nyílt forráskódú. További információ: Csatlakozás a dbt Core-hoz.
Mivel a DBT Cloud és a DBT Core használhat üzemeltetett Git-adattárakat (például GitHubon, GitLaben vagy BitBucketen), a DBT Cloud használatával létrehozhat egy dbt-projektet, majd elérhetővé teheti a dbt Cloud és a DBT Core felhasználói számára. További információ: Dbt-projekt létrehozása és meglévő projekt használata a dbt webhelyén.
A dbt általános áttekintéséhez tekintse meg az alábbi YouTube-videót (26 perc).
Csatlakozás a dbt Cloudhoz a Partner Connect használatával
Ez a szakasz azt ismerteti, hogyan csatlakoztathat Databricks SQL-tárolót a DBT Cloudhoz a Partner Connect használatával, majd hogyan adhat olvasási hozzáférést a DBT Cloud-nak az adatokhoz.
Standard connections és dbt Cloud közötti különbségek
Ha a Partner Connect használatával szeretne csatlakozni a dbt Cloudhoz, kövesse a Csatlakozás adat-előkészítő partnerekhez a Partner Connect használatával című témakörben leírt lépéseket. A dbt Cloud-kapcsolat különbözik a standard adatelőkészítési és -átalakítási connections a következő módokon:
- A szolgáltatásnév és a személyes hozzáférési jogkivonat mellett a Partner Connect alapértelmezés szerint létrehoz egy DBT_CLOUD_ENDPOINT nevű SQL Warehouse-t (korábbi nevén SQL-végpontot).
A csatlakozás lépései
Ha a Partner Connect használatával szeretne csatlakozni a DBT Cloudhoz, tegye a következőket:
Csatlakozás adat-előkészítő partnerekhez a Partner Connect használatával.
Miután csatlakozott a DBT Cloudhoz, megjelenik a DBT Cloud irányítópultja. A dbt Cloud-projekt megismeréséhez a dbt emblémája melletti menüsávon select a dbt-fiók nevét az első legördülő listából, ha nem jelenik meg, majd select a Databricks Partner Connect próbaverziós projektet a második legördülő menüből, ha az nem jelenik meg.
Tipp.
A projekt beállításainak megtekintéséhez kattintson a "három csík" vagy a "hamburger" menüre, kattintson a Fiókbeállítások > projektek elemre, és kattintson a projekt nevére. A kapcsolati beállítások megtekintéséhez kattintson a Kapcsolat melletti hivatkozásra. A beállítások módosításához kattintson a Szerkesztés gombra.
A projekthez tartozó Azure Databricks személyes hozzáférési jogkivonat adatainak megtekintéséhez kattintson a menüsáv "ember" ikonra, kattintson a Profil >Credentials> Databricks Partner Connect próbaverzióelemre, majd a projekt nevére. A módosításhoz kattintson a Szerkesztés gombra.
A dbt Cloud olvasási hozzáférésének biztosítása az adatokhoz
A Partner Connect csak "létrehozási" engedélyt ad a DBT_CLOUD_USER szolgáltatásnévnek kizárólag az alapértelmezett catalogesetében. Kövesse ezeket a lépéseket az Azure Databricks-munkaterületen, hogy a DBT_CLOUD_USER szolgáltatásnév olvasási hozzáférést biztosítson a kiválasztott adatokhoz.
Figyelmeztetés
Ezeket a lépéseket úgy módosíthatja, hogy a dbt Cloud további hozzáférést biztosítson a munkaterület catalogs, adatbázisai és tables között. Biztonsági legjobb gyakorlatként azonban a Databricks határozottan azt javasolja, hogy csak azokhoz az egyéni tables biztosítson hozzáférést, amelyekkel a DBT_CLOUD_USER szolgáltatásfőnévvel dolgoznia kell, és ezeknek csak olvasási hozzáférést adjon a tables-hoz.
Kattintson
Catalog az oldalsávon.
Select az SQL Warehouse (DBT_CLOUD_ENDPOINT) a jobb felső list legördülő list.
- Az Catalog Exploreralatt select a catalogadatbázisát tartalmazó table.
- Select az adatbázis, amely a table-et tartalmazza.
- Select a table.
Tipp.
Ha nem látja a listában a catalogadatbázist vagy table-et, adja meg a név bármely részét a Select Catalog, Select Adatbázisvagy a Szűrő tables mezőkben a listszűkítéséhez.
Kattintson az Engedélyek elemre.
Kattintson a Grantgombra.
Több felhasználó vagy csoport hozzáadásához a típushoz, selectDBT_CLOUD_USER. Ez az Azure Databricks szolgáltatásnév, amelyet a Partner Connect hozott létre Önnek az előző szakaszban.
Tipp.
Ha nem látja a DBT_CLOUD_USER, kezdje el beírni a
DBT_CLOUD_USER
a Típus mezőbe, hogy több felhasználót vagy csoportot adjon hozzá, amíg meg nem jelenik a list, majd select.Csak a Grant olvasható hozzáférése érhető el a
SELECT
és aREAD METADATA
kiválasztásával.Kattintson az OK gombra.
Ismételje meg a 4–9. lépést minden további table, amelyhez olvasási hozzáférést szeretne adni a DBT Cloudnak.
A dbt Cloud-kapcsolat hibaelhárítása
Ha valaki törli a projektet a dbt Cloudban ehhez a fiókhoz, és Ön a dbt csempére kattint, hibaüzenet jelenik meg, amely szerint a projekt nem található. A probléma megoldásához kattintson a Kapcsolat törlése elemre, majd az eljárás elejétől kezdve hozza létre újra a kapcsolatot.
Csatlakozás a dbt Cloudhoz manuálisan
Ez a szakasz azt ismerteti, hogyan csatlakoztathat egy Azure Databricks-fürtöt vagy egy Databricks SQL Warehouse-t az Azure Databricks-munkaterületen a DBT Cloudhoz.
Fontos
A Databricks azt javasolja, hogy csatlakozzon egy SQL-raktárhoz. Ha nem rendelkezik a Databricks SQL hozzáférési jogosultságával, vagy Python-modelleket szeretne futtatni, csatlakozhat egy fürthöz.
Követelmények
Fürt vagy SQL Warehouse az Azure Databricks-munkaterületen.
- Számítási konfigurációs referencia.
- SQL-raktár létrehozása.
A fürt vagy az SQL Warehouse kapcsolati adatai, különösen a kiszolgáló neve, portszámés HTTP-elérési útvalues.
- Get Azure Databricks számítási erőforráskapcsolati adatait.
Azure Databricks személyes hozzáférési jogkivonat vagy Microsoft Entra-azonosító (korábbi nevén Azure Active Directory-) jogkivonat. Személyes hozzáférési jogkivonat létrehozásához kövesse az Azure Databricks személyes hozzáférési jogkivonatainak lépéseit a munkaterület felhasználói számára.
Feljegyzés
Ajánlott biztonsági eljárásként, ha automatizált eszközökkel, rendszerekkel, szkriptekkel és alkalmazásokkal hitelesít, a Databricks azt javasolja, hogy munkaterület-felhasználók helyett a szolgáltatásnevekhez tartozó személyes hozzáférési jogkivonatokat használja. A szolgáltatásnevek jogkivonatainak létrehozásáról a szolgáltatásnév jogkivonatainak kezelése című témakörben olvashat.
A dbt Cloud csatlakoztatásához a Unity Catalogáltal kezelt adatokhoz a dbt 1.1-es vagy újabb verziója szükséges.
A cikk lépései egy új környezetet hoznak létre, amely a legújabb dbt-verziót használja. A dbt-verzió meglévő környezethez való frissítéséről további információt a dbt dokumentációjában, a dbt legújabb verziójára való frissítés a Felhőben című témakörben talál.
1. lépés: Regisztráció a DBT Cloud szolgáltatásra
Lépjen a dbt Cloud webhelyre – Regisztráljon , és adja meg az e-mail-címét, a nevét és a céges adatait. Hozzon létre egy jelszót, és kattintson a Fiók létrehozása gombra.
2. lépés: Dbt-projekt létrehozása
Ebben a lépésben létrehoz egy dbt-projektet, amely egy Azure Databricks-fürthöz vagy sql warehouse-hoz való kapcsolatot, egy forráskódot tartalmazó adattárat és egy vagy több környezetet (például tesztelési és éles környezeteket) tartalmaz.
- Jelentkezzen be a dbt Cloudba.
- Kattintson a Beállítások ikonra, majd a Fiókbeállítások parancsra.
- Kattintson a New Project (Új projekt) elemre .
- A Név mezőbe írja be a projekt egyedi nevét, majd kattintson a Folytatás gombra.
-
Select Azure Databricks számítási kapcsolatot a Válasszon egy kapcsolatot legördülő menüből, vagy hozzon létre egy új kapcsolatot:
Kattintson Új kapcsolat hozzáadásagombra.
A Új kapcsolat hozzáadása varázsló egy új lapon nyílik meg.
Kattintson a Databrickselemre, majd a Továbbgombra kattintson.
Feljegyzés
A Databricks
dbt-databricks
helyett a Unity Catalogtámogatódbt-spark
használatát javasolja . Alapértelmezés szerint az új projektek használjákdbt-databricks
. Meglévő projektdbt-databricks
migrálásához tekintse meg a dbt-sparkról a dbt-databricksre való migrálást a dbt-dokumentációban.A Beállítások területen adja meg a kiszolgáló gazdagépneve értékét a követelmények közül.
HTTP-elérési út esetén adja meg a HTTP-elérési út értékét a követelményekből.
Ha a munkaterületen be van kapcsolva a Unity Catalog, a Választható beállításokalatt adja meg a dbt által használandó catalog nevét.
Kattintson a Mentésgombra.
Térjen vissza az Új projekt varázslóhoz, és select az imént létrehozott kapcsolatot a Kapcsolat legördülő menüből.
- A Fejlesztési Credentialsterületen Tokenesetében adja meg a személyes hozzáférési jogkivonatot vagy a Microsoft Entra ID-jogkivonatot a követelmények közül.
- A Schemamezőben adja meg annak a schemawhere-nek a nevét, amelyet a dbt-nek létre kell hoznia a tables és a viewsszámára.
- Kattintson a Kapcsolat tesztelése elemre.
- Ha a teszt sikeresen befejeződött, kattintson a Mentésgombra.
További információ: Csatlakozás a Databricks ODBC-hez a dbt webhelyén.
Tipp.
A projekt beállításainak megtekintéséhez vagy módosításához, illetve a projekt teljes törléséhez kattintson a Beállítások ikonra, kattintson a Fiókbeállítások > projektek elemre, és kattintson a projekt nevére. A beállítások módosításához kattintson a Szerkesztés gombra. A projekt törléséhez kattintson > törlése szerkesztésére.
Az Azure Databricks személyes hozzáférési jogkivonat értékének megtekintéséhez vagy módosításához kattintson a "személy" ikonra, kattintson a Profil >Credentialselemre, és kattintson a projekt nevére. A módosításhoz kattintson a Szerkesztés gombra.
Miután csatlakozott egy Azure Databricks-fürthöz vagy egy Databricks SQL Warehouse-hoz, kövesse a képernyőn megjelenő utasításokat egy adattár beállításához, majd kattintson a Folytatás gombra.
Miután set az adattárat előkészítette, kövesse a képernyőn megjelenő utasításokat a felhasználók meghívásához, majd kattintson a Teljesgombra. Vagy kattintson a Kihagyás > Kész gombra.
Oktatóanyag
Ebben a szakaszban a dbt Cloud-projekttel dolgozhat néhány mintaadattal. Ez a szakasz feltételezi, hogy már létrehozta a projektet, és nyitva van a dbt Cloud IDE a projekt számára.
1. lépés: Modellek létrehozása és futtatása
Ebben a lépésben a dbt Cloud IDE használatával hozhat létre és futtathat modelleket, amelyek select
utasítások, amelyek új nézetet (alapértelmezett) vagy új table hoznak létre egy adatbázisban, ugyanazon adatbázis meglévő adatai alapján. Ez az eljárás egy modellt hoz létre a diamonds
table alapján.
Ezt a tablea következő kóddal hozhatja létre.
DROP TABLE IF EXISTS diamonds;
CREATE TABLE diamonds USING CSV OPTIONS (path "/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv", header "true")
Ez az eljárás feltételezi, hogy ez a table már létrejött a munkaterület default
adatbázisában.
Ha a projekt meg van nyitva, kattintson a fejlesztés gombra a felhasználói felület tetején.
Kattintson a DBT-projekt inicializálása elemre.
Kattintson a Véglegesítés és syncelemre, írjon be egy véglegesítési üzenetet, majd kattintson Véglegesítésgombra.
Kattintson az Ág létrehozása gombra, adja meg az ág nevét, majd kattintson a Küldés gombra.
Az első modell létrehozása: Kattintson az Új fájl létrehozása gombra.
A szövegszerkesztőben adja meg a következő SQL-utasítást. Ez az utasítás csak a karát, a vágás, a szín és a tisztaság részleteit választja ki az egyes gyémántok esetében a
diamonds
table. Aconfig
blokk arra utasítja a dbt-et, hogy ezen utasítás alapján hozzon létre egy table az adatbázisban.{{ config( materialized='table', file_format='delta' ) }}
select carat, cut, color, clarity from diamonds
Tipp.
További
config
lehetőségek, például amerge
növekményes stratégia, lásd a Databricks-konfigurációkat a dbt dokumentációjában.Kattintson a Mentés másként gombra.
Adja meg
models/diamonds_four_cs.sql
a fájlnevet, majd kattintson a Létrehozás gombra.Hozzon létre egy második modellt: Kattintson
az (Új fájl létrehozása) elemre a jobb felső sarokban.
A szövegszerkesztőben adja meg a következő SQL-utasítást. Ez az utasítás a values
colors
columndiamonds_four_cs
egyedi table elemet választja ki, és az eredményeket betűrendbe rendezi az elsőtől az utolsóig. Mivel nincsconfig
blokk, ez a modell arra utasítja a DBT-t, hogy hozzon létre egy nézetet az adatbázisban ezen utasítás alapján.select distinct color from diamonds_four_cs sort by color asc
Kattintson a Mentés másként gombra.
Adja meg
models/diamonds_list_colors.sql
a fájlnevet, majd kattintson a Létrehozás gombra.Harmadik modell létrehozása: Kattintson
az (Új fájl létrehozása) elemre a jobb felső sarokban.
A szövegszerkesztőben adja meg a következő SQL-utasítást. Ez az utasítás a gyémántárakat szín szerint átlagozza, és az eredményeket az átlagár alapján rendezi a legmagasabbtól a legalacsonyabbig. Ez a modell arra utasítja a dbt-t, hogy ezen utasítás alapján hozzon létre nézetet az adatbázisban.
select color, avg(price) as price from diamonds group by color order by price desc
Kattintson a Mentés másként gombra.
Adja meg
models/diamonds_prices.sql
a fájlnevet, és kattintson a Létrehozás gombra.Futtassa a modelleket: A parancssorban futtassa a
dbt run
parancsot az előző három fájl elérési útjával. Adefault
adatbázisban a dbt létrehoz egy table nevűdiamonds_four_cs
-t, valamint két views-t, amelyeketdiamonds_list_colors
-nek ésdiamonds_prices
-nek hívnak. A dbt ezeket a nézet- és table-neveket a hozzájuk kapcsolódó.sql
fájlnevekből kapja meg.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
Futtassa a következő SQL-kódot az új list adataira vonatkozó információk views-hoz, valamint a select és tableösszes sorának views-hoz.
Ha fürthöz csatlakozik, futtathatja ezt az SQL-kódot a fürthöz csatolt jegyzetfüzetből , és az SQL-t adja meg alapértelmezett nyelvként a jegyzetfüzethez. Ha SQL-raktárhoz csatlakozik, egy lekérdezésből futtathatja ezt az SQL-kódot.
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 | +-------+---------+ ...
2. lépés: Összetettebb modellek létrehozása és futtatása
Ebben a lépésben összetettebb modelleket hoz létre a kapcsolódó adatok settablesszámára. Ezek az adatok tables információkat tartalmaznak egy fiktív sportliga három csapatáról, amelyek egy hat mérkőzésből álló szezont játszanak. Ez az eljárás létrehozza az adatokat tables, létrehozza a modelleket, és futtatja a modelleket.
Futtassa a következő SQL-kódot a szükséges tablesadat létrehozásához.
Ha fürthöz csatlakozik, futtathatja ezt az SQL-kódot a fürthöz csatolt jegyzetfüzetből , és az SQL-t adja meg alapértelmezett nyelvként a jegyzetfüzethez. Ha SQL-raktárhoz csatlakozik, egy lekérdezésből futtathatja ezt az SQL-kódot.
Az ebben a lépésben szereplő tables és views
zzz_
-vel kezdődnek, hogy segítsenek azonosítani őket a példa részeként. Nincs szüksége arra, hogy kövesse ezt a mintát a saját tables és viewsesetében.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 | -- +---------+---------------+
Hozza létre az első modellt: Kattintson
az (Új fájl létrehozása) elemre a jobb felső sarokban.
A szövegszerkesztőben adja meg a következő SQL-utasítást. Ez az utasítás létrehoz egy table, amely tartalmazza az egyes játékok részleteit, például a csapatneveket és a pontszámokat. A
config
blokk arra utasítja a dbt-et, hogy ezen utasítás alapján hozzon létre egy table az adatbázisban.-- 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
Kattintson a Mentés másként gombra.
Adja meg
models/zzz_game_details.sql
a fájlnevet, majd kattintson a Létrehozás gombra.Hozzon létre egy második modellt: Kattintson
az (Új fájl létrehozása) elemre a jobb felső sarokban.
A szövegszerkesztőben adja meg a következő SQL-utasítást. Ez az utasítás létrehoz egy nézetet, amely felsorolja a csapat szezonbeli győzelmi rekordjait.
-- 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
Kattintson a Mentés másként gombra.
Adja meg
models/zzz_win_loss_records.sql
a fájlnevet, majd kattintson a Létrehozás gombra.Futtassa a modelleket: A parancssorban futtassa a
dbt run
parancsot az előző két fájl elérési útjával. Adefault
adatbázisban (a projektbeállításokban megadottak szerint) a dbt létrehoz egy table nevűzzz_game_details
és egyzzz_win_loss_records
nevű nézetet. A dbt ezeket a nézet- és table-neveket a hozzájuk kapcsolódó.sql
fájlnevekből kapja meg.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
Futtassa a következő SQL-kódot, hogy információt szerezzen az új nézetről (list), valamint törölje a select és a nézet összes sorát (table).
Ha fürthöz csatlakozik, futtathatja ezt az SQL-kódot a fürthöz csatolt jegyzetfüzetből , és az SQL-t adja meg alapértelmezett nyelvként a jegyzetfüzethez. Ha SQL-raktárhoz csatlakozik, egy lekérdezésből futtathatja ezt az SQL-kódot.
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 | +---------------+------+--------+
3. lépés: Tesztek létrehozása és futtatása
Ebben a lépésben teszteket hoz létre, amelyek a modellekkel kapcsolatos állítások. A tesztek futtatásakor a dbt jelzi, hogy a projekt egyes tesztjei sikeresek vagy sikertelenek-e.
Kétféle teszt létezik. Schema a YAML-ben írttesztek azon rekordok számát adják vissza, amelyek nem felelnek meg az állításnak. Ha ez a szám nulla, minden rekord átmegy, ezért a tesztek átmennek. Az adattesztek olyan lekérdezések, amelyeknek nulla rekordot kell visszaadni.
A schema tesztek létrehozása: Kattintson az
(Új fájl létrehozása) elemre a jobb felső sarokban.
A szövegszerkesztőben adja meg a következő tartalmat. Ez a fájl schema teszteket tartalmaz, amelyek meghatározzák, hogy a megadott columns-ek egyedi values-vel rendelkeznek-e, nem null értékűek, csak a megadott values-at tartalmaznak, vagy ezek kombinációjához tartoznak-e.
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
Kattintson a Mentés másként gombra.
Adja meg
models/schema.yml
a fájlnevet, majd kattintson a Létrehozás gombra.Hozza létre az első adattesztet: Kattintson
az (Új fájl létrehozása) elemre a jobb felső sarokban.
A szövegszerkesztőben adja meg a következő SQL-utasítást. Ez a fájl egy adattesztet tartalmaz annak megállapítására, hogy az alapszakaszon kívül történtek-e játékok.
-- 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'
Kattintson a Mentés másként gombra.
Adja meg
tests/zzz_game_details_check_dates.sql
a fájlnevet, majd kattintson a Létrehozás gombra.Hozzon létre egy második adattesztet: Kattintson
az (Új fájl létrehozása) elemre a jobb felső sarokban.
A szövegszerkesztőben adja meg a következő SQL-utasítást. Ez a fájl tartalmaz egy adattesztet annak megállapítására, hogy a pontszámok negatívak voltak-e, vagy bármilyen játék meg volt-e kötve.
-- 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
Kattintson a Mentés másként gombra.
Adja meg
tests/zzz_game_details_check_scores.sql
a fájlnevet, majd kattintson a Létrehozás gombra.Hozzon létre egy harmadik adattesztet: Kattintson
az (Új fájl létrehozása) elemre a jobb felső sarokban.
A szövegszerkesztőben adja meg a következő SQL-utasítást. Ez a fájl egy adattesztet tartalmaz annak megállapítására, hogy bármely csapat negatív győzelmi vagy veszteségrekordokkal rendelkezik-e, több győzelmi vagy veszteségrekordot adott-e meg, mint a lejátszott játékok, vagy több játékot játszott, mint amennyit engedélyezett.
-- 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
Kattintson a Mentés másként gombra.
Adja meg
tests/zzz_win_loss_records_check_records.sql
a fájlnevet, majd kattintson a Létrehozás gombra.Futtassa a teszteket: Futtassa a parancsot a parancssorban
dbt test
.
4. lépés: Tisztítás
A példához létrehozott tables és views az alábbi SQL-kód futtatásával törölheti.
Ha fürthöz csatlakozik, futtathatja ezt az SQL-kódot a fürthöz csatolt jegyzetfüzetből , és az SQL-t adja meg alapértelmezett nyelvként a jegyzetfüzethez. Ha SQL-raktárhoz csatlakozik, egy lekérdezésből futtathatja ezt az SQL-kódot.
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;
Következő lépések
- További információ a dbt-modellekről.
- Megtudhatja, hogyan tesztelheti a dbt-projekteket.
- Megtudhatja, hogyan használhatja a Jinja nyelvet, egy csábító nyelvet az SQL programozásához a dbt-projektekben.
- Ismerje meg a dbt ajánlott eljárásait.