Csatlakozás a DBT Cloudhoz
a dbt (data build tool) egy olyan fejlesztési környezet, amely lehetővé teszi az adatelemzők és adatmérnökök számára, hogy az adatokat egyszerűen select utasítások írásával alakítsák át. a dbt kezeli a select utasítások táblázatokká és nézetekké 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.
A standard kapcsolatok és a 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 kapcsolatoktól 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éma melletti menüsávon válassza ki a dbt-fiók nevét az első legördülő menüből, ha nem jelenik meg, majd válassza ki 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 "személy" ikonra, kattintson a Profil > hitelesítő adatai > Databricks Partner Connect próbaverziójára, és kattintson 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 az alapértelmezett katalógusban engedélyezi a DBT_CLOUD_USER szolgáltatásnevet. 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 katalógusaihoz, adatbázisaihoz és tábláihoz. Biztonsági ajánlott eljárásként azonban a Databricks határozottan azt javasolja, hogy csak azokhoz a táblákhoz adjon hozzáférést, amelyekhez a DBT_CLOUD_USER szolgáltatásnévre van szüksége ahhoz, hogy működjön, és csak olvasási hozzáférést kapjon ezekhez a táblákhoz.
Kattintson a Katalógus gombra az oldalsávon.
Válassza ki az SQL Warehouse -t (DBT_CLOUD_ENDPOINT) a jobb felső sarokban található legördülő listában.
- A Katalóguskezelőben válassza ki a táblázat adatbázisát tartalmazó katalógust.
- Válassza ki a táblát tartalmazó adatbázist.
- Válassza ki a táblázatot.
Tipp.
Ha nem látja a katalógust, adatbázist vagy táblázatot a listában, a lista szűkítéséhez adja meg a név bármely részét a Katalógus kiválasztása, az Adatbázis kiválasztása vagy a Szűrőtáblák mezőben.
Kattintson az Engedélyek elemre.
Kattintson a Grant gombra.
Ha több felhasználót vagy csoportot szeretne hozzáadni a típushoz, válassza a DBT_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
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ában, majd jelölje ki.Csak a kijelöléssel és
READ METADATA
a kijelöléssel adhat olvasásiSELECT
hozzáférést.Kattintson az OK gombra.
Ismételje meg a 4–9. lépést minden olyan további tábla esetében, 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ó állomásneve, a port és a HTTP-elérési út értékei.
- Az Azure Databricks számítási erőforrás kapcsolati adatainak lekérése.
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 tegye a következőket:
- Az Azure Databricks-munkaterületen kattintson az Azure Databricks-felhasználónevére a felső sávon, majd válassza a legördülő menü Beállítások elemét .
- Kattintson a Fejlesztőeszközök elemre.
- Az Access-jogkivonatok mellett kattintson a Kezelés gombra.
- Kattintson az Új jogkivonat létrehozása elemre.
- (Nem kötelező) Írjon be egy megjegyzést, amely segít azonosítani a jogkivonatot a jövőben, és módosíthatja a jogkivonat alapértelmezett 90 napos élettartamát. Élettartam nélküli (nem ajánlott) jogkivonat létrehozásához hagyja üresen az Élettartam (nap) mezőt (üres).
- Kattintson a Létrehozás lehetőségre.
- Másolja a megjelenített jogkivonatot egy biztonságos helyre, majd kattintson a Kész gombra.
Feljegyzés
Ügyeljen arra, hogy a másolt jogkivonatot biztonságos helyre mentse. Ne ossza meg másokkal a másolt jogkivonatot. Ha elveszíti a másolt jogkivonatot, nem tudja pontosan ugyanazt a jogkivonatot újragenerálni. Ehelyett meg kell ismételnie ezt az eljárást egy új jogkivonat létrehozásához. Ha elveszíti a másolt jogkivonatot, vagy úgy véli, hogy a jogkivonat sérült, a Databricks határozottan javasolja, hogy azonnal törölje a jogkivonatot a munkaterületről az Access-jogkivonatok lapon a jogkivonat melletti kuka (Visszavonás) ikonra kattintva.
Ha nem tud jogkivonatokat létrehozni vagy használni a munkaterületen, ennek az lehet az oka, hogy a munkaterület rendszergazdája letiltotta a jogkivonatokat, vagy nem adott engedélyt a jogkivonatok létrehozására vagy használatára. Tekintse meg a munkaterület rendszergazdáját vagy a következő témaköröket:
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 a Unity Catalog által kezelt adatokhoz való csatlakoztatásához a DBT 1.1-es vagy újabb verziója.
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.
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.
A Kapcsolat kiválasztása parancsot a Databricks, majd a Tovább gombra kattintva választhatja ki.
A Név mezőben adjon meg egy egyedi nevet ehhez a kapcsolathoz.
Az Adapter kiválasztása beállításhoz kattintson a Databricks (dbt-databricks) elemre.
Feljegyzés
A Databricks a
dbt-databricks
Unity Catalog használatát javasolja a helyettdbt-spark
. 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ület unitykatalógus-kompatibilis, a Választható beállítások területen adja meg a használni kívánt adatbázis-felhő katalógusának nevét.
A fejlesztési hitelesítő adatok területen a tokenhez adja meg a személyes hozzáférési jogkivonatot vagy a Microsoft Entra-azonosító jogkivonatot a követelményekből.
Séma esetén adja meg annak a sémának a nevét, amelyben a dbt Cloud létrehozza a táblákat és nézeteket (például
default
).Kattintson a Kapcsolat tesztelése elemre.
Ha a teszt sikeres, kattintson a Tovább gombra.
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 a Projekt 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 > hitelesítő adatai elemre, é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.
Az adattár beállítása után kövesse a képernyőn megjelenő utasításokat a felhasználók meghívásához, majd kattintson a Kész gombra. 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 olyan utasítások, amelyek select
egy új nézetet (alapértelmezett) vagy egy új táblát hoznak létre egy adatbázisban, ugyanazon adatbázis meglévő adatai alapján. Ez az eljárás létrehoz egy modellt a mintaadatkészletekből származó mintatábla diamonds
alapján.
A tábla létrehozásához használja az alábbi kódot.
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 tábla már létrejött a munkaterület adatbázisában default
.
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 szinkronizálás gombra, írjon be egy véglegesítési üzenetet, majd kattintson a Véglegesítés gombra.
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 világosság részleteit választja ki az egyes rombuszokhoz a
diamonds
táblázatból. Aconfig
blokk arra utasítja a dbt-et, hogy hozzon létre egy táblát az adatbázisban ezen utasítás alapján.{{ 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 egyedi értékeket választ ki a
colors
diamonds_four_cs
táblázat oszlopából, és elsőként betűrendbe rendezi az eredményeket. 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. Az adatbázisban adefault
dbt létrehoz egy nevűdiamonds_four_cs
táblát, valamint két nézetetdiamonds_list_colors
ésdiamonds_prices
. A dbt lekéri ezeket a nézet- és táblaneveket a kapcsolódó.sql
fájlnevekből.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 az alábbi SQL-kódot az új nézetek adatainak listázásához, valamint a tábla és nézetek összes sorának kijelöléséhez.
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ó adattáblák halmazához. Ezek az adattáblák információkat tartalmaznak egy fiktív sportliga három csapat játszik egy szezonban hat játék. Ez az eljárás létrehozza az adattáblákat, létrehozza a modelleket, és futtatja a modelleket.
Futtassa a következő SQL-kódot a szükséges adattáblák 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ő táblák és nézetek a példa részeként történő azonosításukra szolgálnak
zzz_
. Ezt a mintát nem kell követnie a saját tábláihoz és nézeteihez.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 táblázatot, amely minden játék részleteit tartalmazza, például a csapatneveket és a pontszámokat. A
config
blokk arra utasítja a dbt-et, hogy hozzon létre egy táblát az adatbázisban ezen utasítás alapján.-- 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. Az adatbázisban (a projektbeállításokban megadottaknak megfelelően) adefault
dbt létrehoz egy táblát észzz_game_details
egy elnevezett nézetetzzz_win_loss_records
. A dbt lekéri ezeket a nézet- és táblaneveket a kapcsolódó.sql
fájlnevekből.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 az alábbi SQL-kódot az új nézet adatainak listázásához, valamint a tábla és nézet összes sorának kijelöléséhez.
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. A YAML-ben írt sématesztek az olyan 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.
Hozza létre a sémateszteket: 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 sémateszteket tartalmaz, amelyek meghatározzák, hogy a megadott oszlopok egyedi értékekkel rendelkeznek-e, nem null értékűek, csak a megadott értékekkel vagy kombinációkkal rendelkeznek- 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 táblákat és nézeteket 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.