Megosztás a következőn keresztül:


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:

  1. Csatlakozás adat-előkészítő partnerekhez a Partner Connect használatával.

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

  1. Kattintson Catalog ikonraCatalog az oldalsávon.

  2. Select az SQL Warehouse (DBT_CLOUD_ENDPOINT) a jobb felső list legördülő list.

    Select raktári

    1. Az Catalog Exploreralatt select a catalogadatbázisát tartalmazó table.
    2. Select az adatbázis, amely a table-et tartalmazza.
    3. 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.

    szűrő tables

  3. Kattintson az Engedélyek elemre.

  4. Kattintson a Grantgombra.

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

  6. Csak a Grant olvasható hozzáférése érhető el a SELECT és a READ METADATAkiválasztásával.

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

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ókbeállítások parancsra.
  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. 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:
    1. Kattintson Új kapcsolat hozzáadásagombra.

      A Új kapcsolat hozzáadása varázsló egy új lapon nyílik meg.

    2. Kattintson a Databrickselemre, majd a Továbbgombra kattintson.

      Feljegyzés

      A Databricks dbt-databrickshelyett a Unity Catalogtámogató dbt-sparkhasználatát javasolja . 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.

    3. A Beállítások területen adja meg a kiszolgáló gazdagépneve értékét a követelmények közül.

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

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

    6. Kattintson a Mentésgombra.

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

  6. 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.
  7. 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.
  8. Kattintson a Kapcsolat tesztelése elemre.
  9. 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 diamondstable 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.

  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 syncelemre, írjon be egy véglegesítési üzenetet, majd kattintson Véglegesítésgombra.

  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 tisztaság részleteit választja ki az egyes gyémántok esetében a diamondstable. A config 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 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 a valuescolorscolumndiamonds_four_cs egyedi table elemet választja ki, és az eredményeket betűrendbe rendezi az elsőtől az utolsóig. 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. A default adatbázisban a dbt létrehoz egy table nevű diamonds_four_cs-t, valamint két views-t, amelyeket diamonds_list_colors-nek és diamonds_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
    
  18. 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.

  1. 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 viewszzz_-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     |
    -- +---------+---------------+
    
  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 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
    
  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. A default adatbázisban (a projektbeállításokban megadottak szerint) a dbt létrehoz egy table nevű zzz_game_details és egy zzz_win_loss_recordsnevű 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
    
  11. 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.

  1. A schema tesztek létrehozása: Kattintson az Új fájl létrehozása ikonra (Ú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 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
    
  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 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.

További erőforrások