V minulém článku, který byl věnován seznámení s Mage.ai – nástrojem pro tvorbu a správu ETL procesů jsem na konci sliboval, že si v dalším článku zkusíme vytvořit s Mage.ai pipeline – tedy datový tok. Pokud tento ETL framework neznáte, tak doporučuju proletět úvodní článek.

Zdrojová a cílová databáze pro ETL pipeline

V tomto cvičení budeme mít za úkol vytvořit pomocí Mage.ai ETL proces, který zkopíruje tabulku “Address” z jedné instance na druhou, žádné transformace – prostě jednoduše 1:1. Nejprve se tedy pojďme podívat, odkud kam budeme dělat datovou ETL pumpu.

Zdrojová (Source) tabulka a databáze pro ETL – Adventureworks Azure

Zdrojem pro nás bude veřejně dostupná databáze Adventureworks, kterou provozuje sqlcentralcom. Tato OLTP databáze leží v Azure a obsahuje několik tabulek viz screenshot. Nás bude pro účely ETL pipeline zajímat zatím pouze tabulka

  • Instance: sqlservercentralpublic.database.windows.net
  • Databáze: AdventureWorks
  • Schéma: SalesLT
  • Tabulka: Address

Dodatečné údaje – port klasika 1433, username sqlfamily, password: viz odkaz na sqlcentralcom.

adventure-works-azure-public-verejna

Zdroj tedy známe a máme vše co potřebujeme k tomu, abychom sestavili připojovací řetězec (connection string)

Cílová (Destination) databáze pro ETL – Data Warehouse

Pod cílovou databází si představíme datový sklad – ten je pro ilustrační účely provozován na:

  • Macbook M1 Air 16GB RAM s Windows běžícím přes Parallels
  • SQL server běží přes Docker na iOS
  • Mage.ai instance běží na iOS

SQL Server a mage.is spravujeme ve Windows přes Management studio a prohlížeč.

  • Host: 192.168.XXX.XXX
  • Databáze: AW_FULL_LOAD
  • Port: 1433
  • Cílová tabulka: FL_ADVENTUREWORKS_ADDRESS
  • login integration_account
  • pass *****

etl-mage-destination2

Tak máme vše co potřebujem

Vytvoření ETL pipeline v Mage.ai

Vytvoření ETL se bude skládat z několika kroků, nejprve budeme muset

  • Nakonfigurovat nové datábáze v souboru io_config.yml – hesla mít nechceme v konfiguračním souboru, takže v Mage využijeme funkce pro správu secrets a v konfiguráku na ně odkážeme.
  • Následně vytvoříme novou pipeline a do nové pipeline přidáme 2 bloky
    • data_loader – napojí se na naši zdrojovou databázi a stáhne data
    • data_exporter – napojí se na cílovou databázi a nahraje tam data
  • Celou pipeline spustíme a zkontrolujeme

Toto nastavení budeme muset pochopitelně absolvovat pouze jednou pro nový zdroj nebo cíl dat.

Konfigurace souboru io_config.yml v Mage.ai

Zapneme webserver mage a podíváme se jak soubor vlastně vypadá. Vidíme, že po instalaci Mage.ai jsou v souboru nějaká vzorová nastavení a že tato nastavení jsou pod profilem default

default-io-config-yml-mage

Tento profil je “skladiště templates”. Vyhledáme si sekci MSSQL kterou zkopírujeme a vložíme na konec a úpravou parametrů vytvoříme spojení na naše servery. Vytvoříme si pro každy server nový profil. Vidíme, že jsem založil 2 profily – jeden pro adventureworks a druhy pro data warehouse

mage-connections-config

Možná jste si všimli, že v konfiguračním souboru nemáme hesla – to nikdy nechceme. Šli jsme v aplikaci do Secrets a založili si 2 nové secrets. Na které pak odkážeme v konfiguračním souboru.

mage-ai-secrets

Vytvoření data_loaderu v pipeline

Nejprve půjdeme do sekce pipelines a vytvoříme novou pipeline – typ standard batch. Tu si nějak později vhodně pojmenujeme abychom se v tom vyznali.

mage-new-pipeline

Po založení pipeline nás to vezme do prostředí kde se vytváří bloky – tedy naše data_loadery a data_exportery. Nejprve vytvoříme blok který se připojí na naše zdrojová data.

Klikneme na Data loader – python – databases – MSSQL

data-loader-mage-ai-pipeline

Po založení dataloaderu nás to vezme to definice pipeline a vidíme, že vpravo máme nový blok. Současně se nám otevřelo okno k tomuto bloku s Pythonem. Jak vidíte je ale vše připraveno a je potřeba pouze kód lehce upravit, nemusíme jej psát – to za nás zařídil Mage.ai.

Jediné 2 věci které upravíme je query a config_profile.

data-loader-python-mage-ai

Jako config_profile zvolíme náš profil z konfiguračního souboru: AdventureWorks a do query napíšeme dotaz na naši tabulku

Otestujem, jestli se dat načtou – vypadá to okej

data-loader-success-mage-ai-pipeline

Vytvoření data_exporter v Mage.ai

V předchozím kroku máme blook, který umí naimportovat data. Nyní si musíe připravit blok, který tato data nahraje do naší cílové databáze. To je ještě jednodušší než u data_loaderu. Klikneme na přidat Data exporter a opět lehce editujeme předpřipravený Python skript

data_exporter-mage-ai-pipeline

Data_exporter můžeme spustit a podívat se jestli dojede -vše je ok

mage-data-exporter-ok

ETL Mage.ai pipeline by měla být nastavena a ready to go

Spuštění Mage pipelina a test dat

Je čas na malý test. Zkusíme se spustit Mage pipeline z aplikace a pak se podíváme do cílové destinace v datovém skladu jestli tam jsou data.

Pipeline můžeme spustit například tak, že ji spustíme jednorázově. Další varianta je udelat schedule a v tomto případě se nám pak bude toto ETL spouštět v předem určený čas. My s ji spustíme jednorázově na screenshotu níže – vidíme. že pipeline v úspěšně skončila

mage.ai pipeline completed

V databázi imaginárního datového skladu máme nová data:

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 *