Minulý článek byl zaměřen na instalaci dbt do prostředí Mage.ai anebo samostatně a následnou inicializaci projektu nazvaného mage_dbt – Instalace Dbt (pip/conda) a inicializace projektu. Máme tedy nainstalovaný environment mage-ai do kterého jsme nainstalovali dbt-sqlserver. Následně jsme otestovali, že vidíme založenou souborovou strukturu projektu. Dneska se podíváme na to, jak provést konfiguraci a nastavení Dbt.

Zkoušel jsem nastavení na OS Windows přes Parallels (viz návod) a na Macbook M1. U macbooku jsem se bohužel zadrhnul na tom, že se mi nepodařilo nainstalovat správne ODBC drivery (17,18) a tím pádem mi padal dbt debug (test připojení) a po cca hodině zkoušení jsem to vzdal. Na Windowsech všechno v pohodě.

Souborová struktura Dbt

Než se vrhneme na nastavení dbt a připojení k databázi, tak se podíváme na to, jak je dbt strukturováno. K tomu využijeme Mage.ai webserver, který jsme si vytvořili v prvním článku.

dbt-files

Pozornost věnujeme pouze adresáři dbt. Ostatní složky se týkají mage.ai. Vidíme, že ve složce dbt jsme inicializovali projekt mage_dbt a tento projekt obsahuje další složky, zejména:

  • dbt_project.yml: Tento soubor obsahuje hlavní konfiguraci vašeho DBT projektu, včetně připojení k databázi, konfigurace profilů a dalšího základního nastavení. Je to klíčový soubor pro správu celého projektu.
  • profiles.yml: Soubor obsahuje konfigurace pro připojení k různým databázím a prostředím. Je důležitý pro definování připojení k databázím, které budou použity v projektu.
  • models: Tato složka obsahuje SQL soubory definující DBT modely. Modely jsou jádrem našeho projektu a zpracovávají data.
  • seeds: Tato složka může obsahovat vstupní data nebo soubory, které budou zpracovávány vašimi DBT modely. Je to základní zdroj dat pro váš projekt.
  • ostatní: pro tuto chvíli nepodstatné

Dnes nás budou zajímat zejména soubor profiles.yml a dbt_project.yml kam nastavíme naši databázi SQL Server běžící na localhostu. Zatím nebudeme konfigurovat vývojové (dev) a produkční (prod) prostředí, to si nechám na další článek.

Dbt debug – nastavení databáze (profiles.yml) a gitu

a) Otevřeme si terminál nebo příkazovou řádku a aktivujeme náš environment (v mém případě mage-ai) a zadáme cestu k našemu dbt projektu

b) Nyní si zkusíme spustit příkaz, který otestuje konfiguraci našeho prostředí. To se dělá přes dbt debug (více informací viz. dokumentace). Vidíme, že výsledkem je chyba – to je ale v pohodě, protože nemáme nakonfigurovány soubory.

dbt-debug-fail

Instalace git pro dbt

Z chybového screensotu výše vidíme, že jeden z fail checků je git. Takže si git stáhněte a nainstalujte. Po instalaci vlezem do příkazové řádky a napíšeme “git –version“. Pokud je výsledkem verze gitu tak je vše OK, ale pokud je výsledkem chyba dole tak to musíme opravit a poračujte na trubleshooting kapitolu:

(mage-ai) C:\Users\janzednicek\OneDrive\Prace\Jan_Zednicek\mage-docker\mage-ai\dbt\mage_dbt>git –version
‘git’ is not recognized as an internal or external command,
operable program or batch file.

Troubleshooting – Instalace git selhala – ‘git’ is not recognized as an internal or external command

Pokud příkazová řádka nevrací zpět verzi gitu tak je pravděpodobně problém buď ve šatné instalaci nebo environment nezná cestu na git executable.

V mém případě se stalo, že environment mage-ai nezná cestu ke gitu nainstalovanému na C:\Program Files\Git. Řešením je přidat do složky s environmentem (v mém případě C:\Users\janzednicek\anaconda3\envs\mage-ai\etc\conda\activate.d) activate.bat soubor, který cestu nastaví. Založíme tedy soubor “activate.bat” a vložíme do něj: set “PATH=%PATH%;C:\Program Files\Git\bin”. Poté by konzole měla vrátit verzi gitu.

Pokud pustíme dbt debug, tak vidíme že jednu chybu se nám podařilo odstřelit.

dbt-git.fail

Konfigurace profiles.yml a nastavení cesty na soubor

Zbývá nám ještě nastavit konfigurační soubory na databázi.

Krok 1 – umístění souboru profiles.yml – U souboru profiles.yml dbt po instalaci očekává, že bude uložen v umístění C:\Users\(vaše username)\.dbt ale nemusíte to tak mít když nechcete

Takže u prvního kroku máte na výběr

  • buď folder .dbt vytvoříte v daném umístění nebo
  • nastavíme další výjimku do našeho souboru activate.bat z předchozího kroku

Já bych chtěl mít soubor profiles.yml uložen v souboru s mým mage.ai projektem. Takže přidávám do activate.bat další řádek: set “DBT_PROFILES_DIR=C:\Users\janzednicek\OneDrive\Prace\Jan_Zednicek\mage-docker\mage-ai\dbt”

Krok 2 – konfigurace profiles.yml – pro mě bude cílová databáze SQL server a budu se přihlašovat metodou SQL authentication takže edituji soubor a vyplňuji viz níže.

mage_dbt:
  outputs:
    mac-dev:
      type: sqlserver
      driver: ‘ODBC Driver 17 for SQL Server’ # (The ODBC Driver installed on your system)
      server: localhost
      port: 1433
      database: Temp
      schema: dbo
      user: sa
      password: password
      trust_cert: true
      encrypt: false
  target: mac-dev

Pokud by vás zajímalo, jaké možnosti konfigurace je možné přes dbt udělat, tak dávám odkaz na dokumentaci. Najdete tam, jak se připojit přes windows auth nebo třeba AAD.

Krok 3 – konfigurace dbt_project.yml – tady toho není potřeba až tolik nastavovat, je potřeba pohlídat, že tento souor odkazuje na správný profil z předchozího kroku. V mém případě na mage_dbt.

dbt-project-yml

Testování dbt po instalaci a první spuštění dbt run

Doufám, že se vám poštěstilo a dostali jsme všichni do stavu, kdy nám dbt debug příkaz vrací všechno zelené:

dbt-success-check

Když se podíváme do složky models, tak tu máme 2 testovací skripty, které bychom si rovnou mohli v rámci dbt spustit a tím celé řešení otestovat

my_first_dbt_model.sql

Dbt projekt spustíme  pomocí příkazu “dbt run” – pokud máme vývojové a produkční prostředí, tak navíc přidáváme parametr — target pomocí kterého řekneme nad kterým prostředím dbt pouštíme. My máme ale jen 1 prostředí tak je to jedno.

dbt-run-success

Vše vypadá v pořádku a data dorazila do databáze.

dbt-run-success-sql-server

5/5 - (1 vote)

Ing. Jan Zedníček - Data Engineer & Controlling

Jmenuji se Honza Zedníček a působím jako freelancer. Pracoval jsem dříve také jako BI developer, finanční controller a analytik. Vše pro společnosti z oblasti IT, bankovnictví, consultingu a výroby. Po práci si rád zahraju tenis, volejbal, šachy, zajdu do posilovny a občas neúspěšně odpálím pár balónků v golfu 🏌️

Již cca 10 let zapisuji na tento web různé návody určené zejména odborné veřejnosti, studentům a zájemcům o informace z oblastí Business intelligence, korporátních financí a reportingu.

🔥 Přihlašte se do naší Excel facebook skupiny (2.4k+ členů), kde si pomáháme Excel CZ/SK diskuse »

Leave a Reply

Your email address will not be published. Required fields are marked *