Extrakce dat ze zdrojů a jejich uložení v databázi nebo datovém skladu je prvním krokem v ETL (extract, transform, load) procesu. V dnešní době bývají data rozeseta po mnoha platformách (informace o zákaznících máte možná na Hubspotu, účetnictví v Pohodě, reklamy na Facebooku, Google…), ze kterých je musíme posbírat, abychom získali vše potřebné pro vyhodnocení firemních KPIs, nebo pro provedení nejrůznějších analýz. Naštěstí data mohou být extrahována téměř odkudkoliv - ze strukturovaných i nestrukturovaných zdrojů jako jsou například SQL a NoSQL databáze, CRM a ERP systémy, online dokumenty nebo webové stránky.

Abychom mohli data stahovat a pracovat s nimi v našem ETL, potřebujeme napsat extraktor neboli program, který se bude umět napojit na zdroj, vybrat data, která potřebujeme, a uložit je k nám do datového skladu. Kód extraktoru by měl být psán obecně, aby byl použitelný napříč různými projekty. Speciální nastavení pro každý projekt pak definujeme v konfiguračním souboru, který obsahuje i přístupové tokeny a hesla a specifikaci období, pro které chceme data stahovat.

Mezi nejjednodušší extraktory patří databázové extraktory. Ty se napojují přímo na databázi a stahují data, která nejčastěji filtrujeme přímo pomocí SQL queries. Pro připojení do databáze používáme python knihovny jako Psycopg2 (PostgreSQL) nebo pyODBC (MSSQL).

Spousta webových stránek umožňuje stahovat data pomocí API (Application Programming Interface). API je rozhraní, pomocí kterého náš program komunikuje přímo s webovou stránkou a stahuje, co potřebujeme. Můžeme si jej představit jako číšníka, který od zákazníka nosí objednávky kuchaři. V restauraci máme omezenou možnost, co můžeme po kuchaři žádat, vybíráme si podle jídelního lístku. I když si vybereme správně, může se stát, že kuchař má hodně objednávek, a tak ta naše bude muset počkat. Pokud máme rezervaci na naše jméno, musíme se nějak prokázat. Stejné je to s požadavky přes API. Každé API je jiné a je pro danou službu specifické (rozdílné restaurace). Prvním krokem je proto nastudování API dokumentace (jídelní lístek), způsobu autentifikace a vyhledání endpointů (jídla), které potřebujeme. Endpointy nám umožňují stahovat jen tu část dat, která nás zajímá (seznam uživatelů, reklamní kampaně, náklady…). API nám jako odpověď vrací nejčastěji JSON soubor, který zpracujeme a ukládáme jej jako CSV.

API si vždycky můžeme otestovat ještě před napsáním extraktoru, abychom si ověřili, jestli nám skutečně dává to, co potřebujeme, a jak vypadá výstupní JSON. K tomu slouží programy jako Postman https://www.postman.com/ nebo Insomnia https://insomnia.rest/.

Podrobnější návod v čestině, jak API používat, je hezky popsán zde https://naucse.python.cz/2021/pydata-praha-jaro/pydata/api/ .

Někdy je ale potřeba stahovat data ze stránky, která API nemá. Třeba si potřebujeme ohlídat stránky konkurence, jestli nenabízí podobné zboží za lepší cenu. K tomu slouží web scraping, o kterém jsme psali už dříve https://www.bizztreat.com/blog/k-cemu-nam-v-businessu-pomuze-tzv-web-scraping-mnamka-7 . Pomocí web scrapingu můžeme simulovat procházení jakýchkoliv stránek, vytvoření fiktivních objednávek a pod. Ale na rozdíl od ručního prohledávání stránky to za nás dělá program, který je zvládne procházet daleko rychleji a efektivněji.