Připojení ke službě dbt Cloud
dbt (Data Build Tool) je vývojové prostředí, které umožňuje datovým analytikům a datovým inženýrům transformovat data jednoduchým zápisem příkazů select. dbt zpracovává přeměnu těchto příkazů select na tabulky a zobrazení. dbt zkompiluje váš kód do nezpracovaného SQL a potom tento kód spustí v zadané databázi v Azure Databricks. dbt podporuje vzory kódování na základě spolupráce a osvědčené postupy, jako je správa verzí, dokumentace a modularita.
dbt neextrahuje ani nenačítá data. Dbt se zaměřuje pouze na krok transformace s využitím architektury transformace po načtení. dbt předpokládá, že už máte kopii dat v databázi.
Tento článek se zaměřuje na dbt Cloud. dbt Cloud je vybaven podporou na klíč pro plánování úloh, CI/CD, obsluhou dokumentace, monitorováním a upozorňováním a integrovaným vývojovým prostředím (IDE).
K dispozici je také místní verze dbt s názvem dbt Core. dbt Core umožňuje psát kód dbt v textovém editoru nebo integrovaném vývojovém prostředí podle vašeho výběru na místním vývojovém počítači a pak spustit dbt z příkazového řádku. dbt Core obsahuje rozhraní příkazového řádku dbt (CLI). Rozhraní dbt CLI je zdarma a open-source. Další informace najdete v tématu Připojení k dbt Core.
Protože dbt Cloud a dbt Core můžou používat hostovaná úložiště Git (například na GitHubu, GitLabu nebo BitBucketu), můžete pomocí dbt Cloudu vytvořit projekt dbt a pak ho zpřístupnit uživatelům dbt Cloud a dbt Core. Další informace naleznete v tématu Vytvoření projektu dbt a Použití existujícího projektu na webu dbt.
Obecný přehled dbt najdete v následujícím videu YouTube (26 minut).
Připojení k dbt Cloudu pomocí Partnerského připojení
Tato část popisuje, jak připojit Databricks SQL Warehouse ke službě Dbt Cloud pomocí Partnerského připojení a pak udělit ke svým datům přístup ke čtení dbt Cloudu.
Rozdíly mezi standardními připojeními a dbt Cloud
Pokud se chcete připojit ke cloudu dbt pomocí Partnerského připojení, postupujte podle kroků v části Připojení k partnerům pro přípravu dat pomocí Partner Connect. Připojení dbt Cloud se liší od standardních připojení pro přípravu a transformaci dat následujícími způsoby:
- Kromě instančního objektu a osobního přístupového tokenu vytvoří Partner Connect ve výchozím nastavení SQL Warehouse (dříve koncový bod SQL) s názvem DBT_CLOUD_ENDPOINT .
Postup připojení
Pokud se chcete připojit ke službě dbt Cloud pomocí Partnerského připojení, postupujte takto:
Připojte se k partnerům přípravy dat pomocí Partner Connect.
Po připojení k dbt Cloudu se zobrazí řídicí panel dbt Cloud. Pokud chcete prozkoumat projekt dbt Cloud, vyberte v řádku nabídek vedle loga dbt název účtu dbt v prvním rozevíracím seznamu, pokud se nezobrazí, a pak v druhé rozevírací nabídce vyberte projekt Zkušební verze Partnerského připojení Databricks, pokud se nezobrazí.
Tip
Pokud chcete zobrazit nastavení projektu, klikněte na nabídku Tři pruhy nebo hamburger, klikněte na Projekty nastavení > účtu a klikněte na název projektu. Chcete-li zobrazit nastavení připojení, klikněte na odkaz vedle připojení. Chcete-li změnit nastavení, klepněte na tlačítko Upravit.
Pokud chcete zobrazit informace o tokenu pat accessu Azure Databricks pro tento projekt, klikněte na ikonu osoba na řádku nabídek, klikněte na Možnost Profilovat > přihlašovací údaje > databricks Partner Connect Trial a klikněte na název projektu. Pokud chcete provést změnu, klikněte na Upravit.
Postup poskytnutí přístupu ke čtení dat dbt Cloud
Partner Connect poskytuje oprávnění pouze k vytvoření DBT_CLOUD_USER instančnímu objektu pouze ve výchozím katalogu. Postupujte podle těchto kroků v pracovním prostoru Azure Databricks a udělte DBT_CLOUD_USER instančnímu objektu přístup ke čtení dat, která zvolíte.
Upozorňující
Tyto kroky můžete přizpůsobit tak, aby dbt Cloud získal další přístup mezi katalogy, databázemi a tabulkami v rámci vašeho pracovního prostoru. Jako osvědčený postup zabezpečení však Databricks důrazně doporučuje udělit přístup pouze k jednotlivým tabulkám, které potřebujete , aby instanční objekt DBT_CLOUD_USER fungoval s těmito tabulkami a jen pro čtení těchto tabulek.
Na bočním panelu klikněte na Katalog.
V rozevíracím seznamu v pravém horním rohu vyberte SQL Warehouse (DBT_CLOUD_ENDPOINT).
- V části Průzkumník katalogu vyberte katalog, který obsahuje databázi pro vaši tabulku.
- Vyberte databázi, která obsahuje vaši tabulku.
- Vyberte svou tabulku.
Tip
Pokud v seznamu nevidíte katalog, databázi nebo tabulku, zadejte do polí Vybrat katalog, Vybrat databázi nebo Filtrovat tabulky , abyste seznam zúžili.
Klikněte na Oprávnění.
Klikněte na Udělit.
Pokud chcete přidat více uživatelů nebo skupin, vyberte DBT_CLOUD_USER. Toto je instanční objekt Azure Databricks, který pro vás partner Connect vytvořil v předchozí části.
Tip
Pokud DBT_CLOUD_USER nevidíte, začněte psát
DBT_CLOUD_USER
do pole Typ, abyste přidali více uživatelů nebo skupin, dokud se nezobrazí v seznamu, a pak ho vyberte.Udělení přístupu pro čtení pouze výběrem
SELECT
aREAD METADATA
.Klikněte na OK.
Opakujte kroky 4 až 9 pro každou další tabulku, ke které chcete udělit přístup ke čtení dbt Cloudu.
Řešení potíží s připojením dbt Cloud
Pokud někdo odstraní projekt v dbt Cloudu pro tento účet a vy kliknete na dlaždici dbt , zobrazí se chybová zpráva s oznámením, že projekt nebyl nalezen. Chcete-li tento problém vyřešit, klepněte na tlačítko Odstranit připojení a potom začněte od začátku tohoto postupu vytvořit připojení znovu.
Ruční připojení ke službě dbt Cloud
Tato část popisuje, jak připojit cluster Azure Databricks nebo databricks SQL Warehouse v pracovním prostoru Azure Databricks ke službě Dbt Cloud.
Důležité
Databricks doporučuje připojení ke službě SQL Warehouse. Pokud nemáte nárok na přístup k Sql Databricks nebo pokud chcete spouštět modely Pythonu, můžete se místo toho připojit ke clusteru.
Požadavky
Cluster nebo SQL Warehouse v pracovním prostoru Azure Databricks
- Referenční informace ke konfiguraci výpočetních prostředků
- Vytvořte SQL Warehouse.
Podrobnosti o připojení pro váš cluster nebo SQL Warehouse, konkrétně název hostitele serveru, port a hodnoty cesty HTTP.
- Získejte podrobnosti o připojení pro výpočetní prostředek Azure Databricks.
Osobní přístupový token Azure Databricks nebo token Microsoft Entra ID (dříve Azure Active Directory). Pokud chcete vytvořit osobní přístupový token, postupujte takto:
- V pracovním prostoru Azure Databricks klikněte na své uživatelské jméno Azure Databricks v horním panelu a pak v rozevíracím seznamu vyberte Nastavení .
- Klikněte na Vývojář.
- Vedle přístupových tokenů klikněte na Spravovat.
- Klikněte na Vygenerovat nový token.
- (Volitelné) Zadejte komentář, který vám pomůže identifikovat tento token v budoucnu a změnit výchozí životnost tokenu na 90 dnů. Pokud chcete vytvořit token bez životnosti (nedoporučuje se), nechte pole Životnost (dny) prázdné (prázdné).
- Klikněte na Vygenerovat.
- Zkopírujte zobrazený token do zabezpečeného umístění a klikněte na tlačítko Hotovo.
Poznámka:
Nezapomeňte zkopírovaný token uložit do zabezpečeného umístění. Nesdílejte svůj zkopírovaný token s ostatními. Pokud ztratíte zkopírovaný token, nemůžete tento úplně stejný token znovu vygenerovat. Místo toho musíte tento postup zopakovat, abyste vytvořili nový token. Pokud ztratíte zkopírovaný token nebo se domníváte, že došlo k ohrožení zabezpečení tokenu, databricks důrazně doporučuje tento token okamžitě odstranit z pracovního prostoru kliknutím na ikonu koše (Odvolat) vedle tokenu na stránce Přístupové tokeny .
Pokud v pracovním prostoru nemůžete vytvářet nebo používat tokeny, může to být proto, že správce pracovního prostoru zakázal tokeny nebo vám neudělil oprávnění k vytváření nebo používání tokenů. Projděte si správce pracovního prostoru nebo následující témata:
Poznámka:
Osvědčeným postupem při ověřování pomocí automatizovaných nástrojů, systémů, skriptů a aplikací doporučuje Databricks místo uživatelů pracovního prostoru používat tokeny patního přístupu, které patří instančním objektům . Pokud chcete vytvořit tokeny pro instanční objekty, přečtěte si téma Správa tokenů instančního objektu.
Pokud chcete připojit dbt Cloud k datům spravovaným katalogem Unity, dbt verze 1.1 nebo vyšší.
Kroky v tomto článku vytvoří nové prostředí, které používá nejnovější verzi dbt. Informace o upgradu verze dbt pro existující prostředí najdete v dokumentaci k upgradu na nejnovější verzi dbt v cloudu .
Krok 1: Registrace do dbt Cloudu
Přejděte do dbt Cloudu – Zaregistrujte se a zadejte svůj e-mail, jméno a informace o společnosti. Vytvořte heslo a klikněte na Vytvořit můj účet.
Krok 2: Vytvoření projektu dbt
V tomto kroku vytvoříte projekt dbt, který obsahuje připojení ke clusteru Azure Databricks nebo SQL Warehouse, úložišti, které obsahuje váš zdrojový kód, a jedno nebo více prostředí (například testovací a produkční prostředí).
Klikněte na ikonu nastavení a potom klikněte na Nastavení účtu.
Klikněte na tlačítko Nový projekt.
Do pole Název zadejte jedinečný název projektu a klikněte na tlačítko Pokračovat.
Chcete-li zvolit připojení, klepněte na tlačítko Databricks a potom klepněte na tlačítko Další.
Do pole Název zadejte jedinečný název tohoto připojení.
V části Vybrat adaptér klikněte na Databricks (dbt-databricks).
Poznámka:
Databricks doporučuje používat
dbt-databricks
, který podporuje Unity Catalog místodbt-spark
. Ve výchozím nastavení používajídbt-databricks
nové projekty . Pokud chcete migrovat existující projekt dodbt-databricks
, přečtěte si téma Migrace z dbt-spark do dbt-databricks v dokumentaci dbt.V části Nastavení pro název hostitele serveru zadejte hodnotu názvu hostitele serveru z požadavků.
Do pole Cesta HTTP zadejte hodnotu cesty HTTP z požadavků.
Pokud je váš pracovní prostor povolený katalog Unity, zadejte v části Nepovinná nastavení název katalogu, který má dbt Cloud použít.
V části Přihlašovací údaje pro vývoj zadejte pro token osobní přístupový token nebo token Microsoft Entra ID z požadavků.
Jako schéma zadejte název schématu, ve kterém chcete, aby dbt Cloud vytvořily tabulky a zobrazení (například
default
).Klikněte na Otestovat připojení.
Pokud je test úspěšný, klikněte na Tlačítko Další.
Další informace naleznete v tématu Připojení k rozhraní DATAbricks ODBC na webu dbt.
Tip
Chcete-li zobrazit nebo změnit nastavení pro tento projekt nebo úplně odstranit projekt, klikněte na ikonu nastavení, klikněte na položku Projekty nastavení > účtu a klikněte na název projektu. Chcete-li změnit nastavení, klepněte na tlačítko Upravit. Chcete-li projekt odstranit, klepněte na tlačítko Upravit > odstranit projekt.
Pokud chcete zobrazit nebo změnit hodnotu osobního přístupového tokenu Azure Databricks pro tento projekt, klikněte na ikonu Osoba, klikněte na Přihlašovací údaje profilu > a klikněte na název projektu. Pokud chcete provést změnu, klikněte na Upravit.
Po připojení ke clusteru Azure Databricks nebo službě Databricks SQL Warehouse postupujte podle pokynů na obrazovce a nastavte úložiště a potom klikněte na Pokračovat.
Po nastavení úložiště postupujte podle pokynů na obrazovce a pozvěte uživatele a klikněte na Tlačítko Dokončit. Nebo klikněte na Přeskočit a dokončit.
Kurz
V této části použijete projekt dbt Cloud k práci s některými ukázkovými daty. V této části se předpokládá, že jste projekt už vytvořili a máte otevřené integrované vývojové prostředí dbt Cloud pro tento projekt.
Krok 1: Vytvoření a spuštění modelů
V tomto kroku použijete prostředí DBT Cloud IDE k vytvoření a spuštění modelů, což jsou select
příkazy, které vytvoří nové zobrazení (výchozí) nebo novou tabulku v databázi na základě existujících dat ve stejné databázi. Tento postup vytvoří model založený na ukázkové diamonds
tabulce z ukázkových datových sad.
K vytvoření této tabulky použijte následující kód.
DROP TABLE IF EXISTS diamonds;
CREATE TABLE diamonds USING CSV OPTIONS (path "/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv", header "true")
Tento postup předpokládá, že tato tabulka již byla vytvořena v databázi vašeho pracovního prostoru default
.
Otevřete projekt a v horní části uživatelského rozhraní klikněte na Vývoj .
Klikněte na Inicializovat projekt dbt.
Klikněte na Commit and sync, enter a commit message, and then click Commit.
Klikněte na Vytvořit větev, zadejte název větve a potom klikněte na Odeslat.
Vytvořte první model: Klikněte na Vytvořit nový soubor.
V textovém editoru zadejte následující příkaz SQL. Tento příkaz vybere pouze karat, řez, barvu a přehlednost jednotlivých kosočtverců z
diamonds
tabulky. Blokconfig
dává dbt pokyn k vytvoření tabulky v databázi na základě tohoto příkazu.{{ config( materialized='table', file_format='delta' ) }}
select carat, cut, color, clarity from diamonds
Tip
Další
config
možnosti, jakomerge
je přírůstková strategie, najdete v dokumentaci k databázi v konfiguraci Databricks.Klikněte na Uložit jako.
Jako název souboru zadejte
models/diamonds_four_cs.sql
a klepněte na tlačítko Vytvořit.Vytvoření druhého modelu: Klikněte (Vytvořit nový soubor) v pravém horním rohu.
V textovém editoru zadejte následující příkaz SQL. Tento příkaz vybere jedinečné hodnoty ze
colors
sloupce vdiamonds_four_cs
tabulce a seřadí výsledky podle abecedy jako první po poslední. Vzhledem k tomu, že neexistuje žádnýconfig
blok, tento model dává dbt pokyn k vytvoření zobrazení v databázi na základě tohoto příkazu.select distinct color from diamonds_four_cs sort by color asc
Klikněte na Uložit jako.
Jako název souboru zadejte
models/diamonds_list_colors.sql
a klepněte na tlačítko Vytvořit.Vytvoření třetího modelu: Klikněte (Vytvořit nový soubor) v pravém horním rohu.
V textovém editoru zadejte následující příkaz SQL. Tento výpis zprůměruje ceny diamantů podle barvy a výsledky seřadí podle průměrné ceny od nejvyšší po nejnižší. Tento model dává dbt pokyn k vytvoření zobrazení v databázi na základě tohoto příkazu.
select color, avg(price) as price from diamonds group by color order by price desc
Klikněte na Uložit jako.
Jako název souboru zadejte
models/diamonds_prices.sql
a klikněte na Vytvořit.Spusťte modely: Na příkazovém řádku spusťte
dbt run
příkaz s cestami ke třem předchozím souborům.default
V databázi dbt vytvoří jednu tabulku s názvemdiamonds_four_cs
a dvě zobrazení s názvemdiamonds_list_colors
adiamonds_prices
. Dbt získá tyto názvy zobrazení a tabulky z jejich souvisejících.sql
názvů souborů.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
Spuštěním následujícího kódu SQL zobrazte informace o nových zobrazeních a vyberte všechny řádky z tabulky a zobrazení.
Pokud se připojujete ke clusteru, můžete tento kód SQL spustit z poznámkového bloku připojeného ke clusteru a zadat SQL jako výchozí jazyk poznámkového bloku. Pokud se připojujete ke službě SQL Warehouse, můžete tento kód SQL spustit z dotazu.
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 | +-------+---------+ ...
Krok 2: Vytvoření a spuštění složitějších modelů
V tomto kroku vytvoříte složitější modely pro sadu souvisejících tabulek dat. Tyto datové tabulky obsahují informace o fiktivní sportovní lize tří týmů, které hrají sezónu šesti her. Tento postup vytvoří tabulky dat, vytvoří modely a spustí modely.
Spuštěním následujícího kódu SQL vytvořte potřebné tabulky dat.
Pokud se připojujete ke clusteru, můžete tento kód SQL spustit z poznámkového bloku připojeného ke clusteru a zadat SQL jako výchozí jazyk poznámkového bloku. Pokud se připojujete ke službě SQL Warehouse, můžete tento kód SQL spustit z dotazu.
Tabulky a zobrazení v tomto kroku začínají tím
zzz_
, že je v tomto příkladu identifikují. Tento vzor nemusíte dodržovat pro vlastní tabulky a zobrazení.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 | -- +---------+---------------+
Vytvořte první model: Klikněte (Vytvořit nový soubor) v pravém horním rohu.
V textovém editoru zadejte následující příkaz SQL. Tento příkaz vytvoří tabulku, která obsahuje podrobnosti o jednotlivých hrách, jako jsou názvy týmů a skóre. Blok
config
dává dbt pokyn k vytvoření tabulky v databázi na základě tohoto příkazu.-- 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
Klikněte na Uložit jako.
Jako název souboru zadejte
models/zzz_game_details.sql
a klepněte na tlačítko Vytvořit.Vytvoření druhého modelu: Klikněte (Vytvořit nový soubor) v pravém horním rohu.
V textovém editoru zadejte následující příkaz SQL. Tento příkaz vytvoří zobrazení se seznamem záznamů o výhrách týmu pro sezónu.
-- 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
Klikněte na Uložit jako.
Jako název souboru zadejte
models/zzz_win_loss_records.sql
a klepněte na tlačítko Vytvořit.Spusťte modely: Na příkazovém řádku spusťte
dbt run
příkaz s cestami ke dvěma předchozím souborům.default
V databázi (jak je uvedeno v nastavení projektu), dbt vytvoří jednu tabulku s názvemzzz_game_details
a jedno zobrazení s názvemzzz_win_loss_records
. Dbt získá tyto názvy zobrazení a tabulky z jejich souvisejících.sql
názvů souborů.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
Spuštěním následujícího kódu SQL zobrazte informace o novém zobrazení a vyberte všechny řádky z tabulky a zobrazení.
Pokud se připojujete ke clusteru, můžete tento kód SQL spustit z poznámkového bloku připojeného ke clusteru a zadat SQL jako výchozí jazyk poznámkového bloku. Pokud se připojujete ke službě SQL Warehouse, můžete tento kód SQL spustit z dotazu.
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 | +---------------+------+--------+
Krok 3: Vytvoření a spuštění testů
V tomto kroku vytvoříte testy, což jsou kontrolní výrazy, které vytvoříte pro své modely. Když tyto testy spustíte, dbt vám řekne, jestli každý test v projektu projde nebo selže.
Existují dva typy testů. Testy schématu napsané v YAML vrací počet záznamů, které nepřecházejí kontrolní výraz. Pokud je toto číslo nula, všechny záznamy projdou, a proto testy projdou. Datové testy jsou specifické dotazy, které musí vrátit nulové záznamy, které se mají předat.
Vytvořte testy schématu: V pravém horním rohu klikněte na (Vytvořit nový soubor).
V textovém editoru zadejte následující obsah. Tento soubor obsahuje testy schématu, které určují, zda zadané sloupce mají jedinečné hodnoty, nemají hodnotu null, mají pouze zadané hodnoty nebo kombinaci.
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
Klikněte na Uložit jako.
Jako název souboru zadejte
models/schema.yml
a klepněte na tlačítko Vytvořit.Vytvoření prvního testu dat: Klikněte (Vytvořit nový soubor) v pravém horním rohu.
V textovém editoru zadejte následující příkaz SQL. Tento soubor obsahuje datový test, který určuje, jestli se některé hry nestaly mimo pravidelnou sezónu.
-- 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'
Klikněte na Uložit jako.
Jako název souboru zadejte
tests/zzz_game_details_check_dates.sql
a klepněte na tlačítko Vytvořit.Vytvoření druhého testu dat: Klikněte (Vytvořit nový soubor) v pravém horním rohu.
V textovém editoru zadejte následující příkaz SQL. Tento soubor obsahuje datový test, který určuje, jestli byly nějaké skóre záporné nebo jakékoli hry byly svázané.
-- 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
Klikněte na Uložit jako.
Jako název souboru zadejte
tests/zzz_game_details_check_scores.sql
a klepněte na tlačítko Vytvořit.Vytvoření třetího testu dat: Klikněte (Vytvořit nový soubor) v pravém horním rohu.
V textovém editoru zadejte následující příkaz SQL. Tento soubor obsahuje datový test, který určuje, jestli některé týmy měly negativní záznamy o výhrách nebo ztrátách, měly více záznamů o výhrách nebo ztrátách než hry, nebo hrály více her, než bylo povoleno.
-- 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
Klikněte na Uložit jako.
Jako název souboru zadejte
tests/zzz_win_loss_records_check_records.sql
a klepněte na tlačítko Vytvořit.Spusťte testy: Na příkazovém řádku spusťte
dbt test
příkaz.
Krok 4: Vyčištění
Tabulky a zobrazení, které jste vytvořili v tomto příkladu, můžete odstranit spuštěním následujícího kódu SQL.
Pokud se připojujete ke clusteru, můžete tento kód SQL spustit z poznámkového bloku připojeného ke clusteru a zadat SQL jako výchozí jazyk poznámkového bloku. Pokud se připojujete ke službě SQL Warehouse, můžete tento kód SQL spustit z dotazu.
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;
Další kroky
- Přečtěte si další informace o modelech dbt.
- Naučte se testovat projekty dbt.
- Naučte se používat jinja , jazyk šablon, pro programování SQL v projektech dbt.
- Seznamte se s osvědčenými postupy dbt.