Share via


Csatlakozás a DBT Cloudba

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 Cloudba a Partner Csatlakozás használatával

Ez a szakasz azt ismerteti, hogyan csatlakoztathat Databricks SQL-tárolót a dbt Cloudhoz a Partner Csatlakozás 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 partner Csatlakozás használatával szeretne csatlakozni a DBT Cloudhoz, kövesse a Csatlakozás lépéseit a partner Csatlakozás használó adat-előkészítési partnerek számára. 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 Csatlakozás 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 Csatlakozás használatával szeretne csatlakozni a DBT Cloudhoz, tegye a következőket:

  1. Csatlakozás a partner Csatlakozás használó adat-előkészítési partnereknek.

  2. 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 Csatlakozás Próbaverzió 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ók Gépház > Projektek elemre, és kattintson a projekt nevére. A kapcsolati beállítások megtekintéséhez kattintson a Csatlakozás ion 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 Csatlakozás próbaverzió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 Csatlakozás csak az alapértelmezett katalógusban engedélyezi a DBT_CLOUD_U Standard kiadás R szolgáltatásnevet. Kövesse ezeket a lépéseket az Azure Databricks-munkaterületen, hogy a DBT_CLOUD_U Standard kiadás R 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 az egyes táblákhoz adjon hozzáférést, amelyekhez az DBT_CLOUD_U Standard kiadás R 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.

  1. Kattintson a Katalógus gombra Katalógus ikonaz oldalsávon.

  2. Válassza ki az SQL Warehouse -t (DBT_CLOUD_ENDPOINT) a jobb felső sarokban található legördülő listában.

    Raktár kiválasztása

    1. A Katalóguskezelőben válassza ki a táblázat adatbázisát tartalmazó katalógust.
    2. Válassza ki a táblát tartalmazó adatbázist.
    3. 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.

    Táblák szűrése

  3. Kattintson az Engedélyek elemre.

  4. Kattintson a Grant gombra.

  5. Ha több felhasználót vagy csoportot szeretne hozzáadni a típushoz, válassza az DBT_CLOUD_U Standard kiadás R lehetőséget. Ez az Azure Databricks szolgáltatásnév, amelyet a Partner Csatlakozás az előző szakaszban létrehozott Önnek.

    Tipp.

    Ha nem jelenik meg a DBT_CLOUD_U Standard kiadás R, 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.

  6. Csak a kijelöléssel és READ METADATAa kijelöléssel adhat olvasási SELECT hozzáférést.

  7. 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.

a dbt Cloud manuális Csatlakozás

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.

  • 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.

  • 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:

    1. Az Azure Databricks-munkaterületen kattintson az Azure Databricks-felhasználónevére a felső sávon, majd válassza Gépház a legördülő menüből.
    2. Kattintson a Fejlesztőeszközök elemre.
    3. Az Access-jogkivonatok mellett kattintson a Kezelés gombra.
    4. Kattintson az Új jogkivonat létrehozása elemre.
    5. (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).
    6. Kattintson a Létrehozás lehetőségre.
    7. 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ő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.

  1. Jelentkezzen be a dbt Cloudba.

  2. Kattintson a beállítások ikonra, majd a Fiók Gépház elemre.

  3. Kattintson a New Project (Új projekt) elemre .

  4. A Név mezőbe írja be a projekt egyedi nevét, majd kattintson a Folytatás gombra.

  5. A Kapcsolat kiválasztása parancsot a Databricks, majd a Tovább gombra kattintva választhatja ki.

  6. A Név mezőben adjon meg egy egyedi nevet ehhez a kapcsolathoz.

  7. Az Adapter kiválasztása beállításhoz kattintson a Databricks (dbt-databricks) elemre.

    Feljegyzés

    A Databricks a dbt-databricksUnity Catalog használatát javasolja a helyett dbt-spark. Alapértelmezés szerint az új projektek használják dbt-databricks. Meglévő projekt dbt-databricksmigrálásához tekintse meg a dbt-sparkról a dbt-databricksre való migrálást a dbt-dokumentációban.

  8. A Gépház alatt adja meg a kiszolgáló gazdagépneve értékét a követelmények közül.

  9. HTTP-elérési út esetén adja meg a HTTP-elérési út értékét a követelményekből.

  10. Ha a munkaterület unitykatalógus-kompatibilis, az Opcionális Gépház területen adja meg a használni kívánt dbt Cloud-katalógus nevét.

  11. 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.

  12. 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áuldefault).

  13. Kattintson a Kapcsolat tesztelése elemre.

  14. 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ók Gépház > 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 .

  1. Ha a projekt meg van nyitva, kattintson a fejlesztés gombra a felhasználói felület tetején.

  2. Kattintson a DBT-projekt inicializálása elemre.

  3. 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.

  4. Kattintson az Ág létrehozása gombra, adja meg az ág nevét, majd kattintson a Küldés gombra.

  5. Az első modell létrehozása: Kattintson az Új fájl létrehozása gombra.

  6. 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. 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.

    {{ config(
      materialized='table',
      file_format='delta'
    ) }}
    
    select carat, cut, color, clarity
    from diamonds
    

    Tipp.

    További config lehetőségek, például a merge növekményes stratégia, lásd a Databricks-konfigurációkat a dbt dokumentációjában.

  7. Kattintson a Mentés másként gombra.

  8. Adja meg models/diamonds_four_cs.sql a fájlnevet, majd kattintson a Létrehozás gombra.

  9. Hozzon létre egy második modellt: Kattintson Új fájl létrehozása ikon az (Új fájl létrehozása) elemre a jobb felső sarokban.

  10. 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 colorsdiamonds_four_cs táblázat oszlopából, és elsőként betűrendbe rendezi az eredményeket. Mivel nincs config 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
    
  11. Kattintson a Mentés másként gombra.

  12. Adja meg models/diamonds_list_colors.sqla fájlnevet, majd kattintson a Létrehozás gombra.

  13. Harmadik modell létrehozása: Kattintson Új fájl létrehozása ikon az (Új fájl létrehozása) elemre a jobb felső sarokban.

  14. 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
    
  15. Kattintson a Mentés másként gombra.

  16. Adja meg models/diamonds_prices.sql a fájlnevet, és kattintson a Létrehozás gombra.

  17. 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 a default dbt létrehoz egy nevű diamonds_four_cs táblát, valamint két nézetet diamonds_list_colors és diamonds_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
    
  18. 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.

  1. 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     |
    -- +---------+---------------+
    
  2. Hozza létre az első modellt: Kattintson Új fájl létrehozása ikon az (Új fájl létrehozása) elemre a jobb felső sarokban.

  3. 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
    
  4. Kattintson a Mentés másként gombra.

  5. Adja meg models/zzz_game_details.sql a fájlnevet, majd kattintson a Létrehozás gombra.

  6. Hozzon létre egy második modellt: Kattintson Új fájl létrehozása ikon az (Új fájl létrehozása) elemre a jobb felső sarokban.

  7. 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
    
  8. Kattintson a Mentés másként gombra.

  9. Adja meg models/zzz_win_loss_records.sql a fájlnevet, majd kattintson a Létrehozás gombra.

  10. 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) a default dbt létrehoz egy táblát és zzz_game_details egy elnevezett nézetet zzz_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
    
  11. 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.

  1. Hozza létre a sémateszteket: Kattintson Új fájl létrehozása ikon az (Új fájl létrehozása) elemre a jobb felső sarokban.

  2. 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
    
  3. Kattintson a Mentés másként gombra.

  4. Adja meg models/schema.ymla fájlnevet, majd kattintson a Létrehozás gombra.

  5. Hozza létre az első adattesztet: Kattintson Új fájl létrehozása ikon az (Új fájl létrehozása) elemre a jobb felső sarokban.

  6. 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'
    
  7. Kattintson a Mentés másként gombra.

  8. Adja meg tests/zzz_game_details_check_dates.sqla fájlnevet, majd kattintson a Létrehozás gombra.

  9. Hozzon létre egy második adattesztet: Kattintson Új fájl létrehozása ikon az (Új fájl létrehozása) elemre a jobb felső sarokban.

  10. 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
    
  11. Kattintson a Mentés másként gombra.

  12. Adja meg tests/zzz_game_details_check_scores.sqla fájlnevet, majd kattintson a Létrehozás gombra.

  13. Hozzon létre egy harmadik adattesztet: Kattintson Új fájl létrehozása ikon az (Új fájl létrehozása) elemre a jobb felső sarokban.

  14. 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
    
  15. Kattintson a Mentés másként gombra.

  16. Adja meg tests/zzz_win_loss_records_check_records.sqla fájlnevet, majd kattintson a Létrehozás gombra.

  17. 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.

További erőforrások