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.
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.
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.
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.
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.
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é:
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
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.
Vše vypadá v pořádku a data dorazila do databáze.