Administrativní registr ekonomických subjektů (ARES) je pro mnohé zásadním zdrojem informací o firmách, pro vývojáře šlo ale o až nepřátelský systém z hlediska datové extrakce. Delší dobu se ze všemožných stran lobbovalo za to, aby ministerstvo financí (MFČR, správce systému) vydávalo balíky dat, aby lidé nemuseli bombardovat API jednotlivými dotazy, které navíc byly velmi striktně omezené.
Po letech jsme byli vyslyšeni, byť nepřímo: ARES se totiž vládním nařízením dostal na seznam datových zdrojů, které od první ledna letošního roku musí být otevřeně publikované. Skoro jsme až nevěřili, že se tak stane, ale přeci jen se ledy pohly a k prvnímu lednu jsme spatřili export ze systému ARES. Jak to tedy dopadlo?
Nejdřív k jádru pudla. ARES jako takový není primární databáze, pouze schraňuje větší množství zdrojů a zprostředkovává je uživatelům. Tím nejdůležitějším zdrojem je veřejný rejstřík (znám též jako obchodní), podrobný přehled o firmách, včetně angažovaných osob, výpis, jak jej znáte z webu Justice.cz. Pro zájemce o data po necelé dvě dekády slouží pozvolna vyvíjené API, které vrací jeden až sto záznamů na jeden dotaz.
Naskýtá se otázka, proč vlastně stahovat rejstřík celý. API je koncipováno tak, že se uživatelé dotazují na informace o jednotlivých firmách a jejich návaznostech na další právnické či fyzické osoby. Situace se ale mění, pokud se data používají ve sféře dohledávání potenciálního klientelismu, střetu zájmu, zakrývání majetkové struktury apod. Pro takové dotazy nám nestačí, že firmu A vlastní společníci B a C, potřebujeme se naopak dozvědět, co vše vlastní konkrétní fyzická či právnická osoba. Pro takové dotazy nám bohužel ARES v podobě API a vyhledávače neposlouží.
Chceme-li tedy stáhnout rejstřík jako celek, naskýtá se hned několik problémů:
- Právnických osob ve veřejném rejstříku je necelý milion. I kdybychom se dotazovali přes „hromadný“ endpoint, který vrací až 100 záznamů naráz, musíme API zavolat 10000×. Jenže API bylo významně limitované (o důvodu minulého času níže), takže bylo možné požádat o pouze 6000 záznamů denně (záznamů, nikoliv dotazů). Člověk by tak stahoval celý ARES půl roku.
- Záznamy se mění, takže vedle stahování celého ARES musel člověk záznamy průběžně aktualizovat, což dělalo další nízké tisíce dotazů denně.
- I když člověk všechno tohle chtěl podstoupit, neměl vlastně k dispozici ani kvalitní přehled IČO, podle kterých by se API dotazoval. Existovalo několik různě kvalitních zdrojů, v komunitě otevřených dat jsme náhodně naráželi na různé, s ARESem naprosto nesouvisející datasety, které nám poskytly cenné seznamy identifikačních čísel. Frustrován jsem v jednu chvíli zaplatil i Českému statistickému úřadu, aby mi onen seznam poskytl.
- Když člověk překonal všechny překážky, stál před poměrně komplexním XML souborem. Respektive milionem takových souborů. Pro omladinu, zhýčkanou JSON, CSV a jinými formáty, to byl často boj.
Milion souborů
S prvním lednem nám spousta starostí odpadla. Ministerstvo financí opravdu vydalo balík dat z veřejného rejstříku a také seznam IČO firem, které do balíku patří. Člověk by hádal, že se vytvořil klasický dump databáze, který jde udělat operativně, ale na ministerstvu na to šli jinak. Z technických důvodů, kdy o exportovaných datech rozhoduje tlustá vrstva aplikační logiky nad zdrojovými datasety, není možné udělat klasický dump. Vznikl tedy nový API endpoint, který pak využívá samo ministerstvo. Toto API dotazuje firmu po firmě, podobně jako by činil běžný vývojář. Výsledek tohoto snažení pak uloží do balíku a zveřejní jako ucelený dataset. Z časových otisků prvního zveřejněného balíku je vidno, že byl generován jeden celý týden. I proto bude frekvence aktualizací měsíční.
Právě způsob sběru a ukládání dat – co subjekt, to XML soubor – může vést k problémům při zpracování. Stahujete totiž sice jeden balík dat, je to ale tar.gz archiv, který v sobě skrývá skoro milion malinkých souborů. V závislosti na systému, disku a souborovém systému může rozbalení tohoto souboru vést ke značnému mrzení.
Pokud chce člověk publikovat takhle velký počet komplexních dat v otevřeném formátu, nemá bohužel příliš možností, jak to udělat, aniž by na vývojáře kladl nějaké požadavky, co se týče nástrojů nutných k použití dat. Řešení MF není ideální, ale dá se s ním pracovat. Doporučuji balík celý nerozbalovat a programaticky z něj číst jednotlivé soubory, aniž by se dotkly disku v původní podobě. Využil bych pak nějaký key-value store či klasickou relační databázi. Já šel ještě jinou cestou, kdy jsem za letu konvertoval data do mně bližšího formátu (tabulární, později materializován v CSV souborech a SQL databázi, kód je k dispozici).
Co chybí a co přibylo
Jakmile se dostaneme k jednotlivým souborům, můžeme začít řešit obsah samotný. Podívejme se nejprve na technické hledisko. Kdo již pracoval s ARES XML soubory, nebude příliš překvapen, a pokud ano, tak příjemně. Struktura dat z nového endpointu je oproti klasickému výpisu z veřejného rejstříku zjednodušena, zejména co se týče angažovaných osob. V původním endpointu musel člověk rozklíčovat jednotlivé funkce (společníci, jednatelé, prokuristé atd.) s různou úrovní zanoření. Nový endpoint má prostý seznam všech statutárních a jiných orgánů daného subjektu s jasným rozlišením fyzických a právnických osob.
Z obsahového hlediska to už tak růžové není. Výše zmíněné vládní nařízení přesně určuje informace, které musí ministerstvo poskytnout, a vypadá to, že se úřad od definice nepohnul ani o píď. Využil třeba toho, že nemusel uvést data narození fyzických osob, což prakticky znemožňuje párování osob z jiných datasetů. Například pány Babiše nebo Okamuru dále napárujete díky relativní unikátnosti jejich jmen, ale pokud bude politik s příjmením Černý či Novák, bude nyní značně těžší dohledat jeho vazby na soukromou sféru.
Další ořezání se týká historizace polí. Když poptáváme data z veřejného rejstříku, můžeme chtít aktuální výpis či plnou historii (opět shodně jako na webu Justice.cz). A právě z rejstříku jsme zvyklí, že se historizuje vše, včetně názvu společnosti (příklad). V novém API se bohužel verzují jen angažované osoby, takže zapomeňte na bývalá sídla, bývalé názvy společností, změny základního kapitálu nebo činnosti. Toto omezení má opět praktický dopad, zvlášť absence historie názvu. Stačí, aby se firma přejmenovala, a pokud nemáte její IČO, v novém datasetu ji nedohledáte. Může jít třeba o vazby firem jako Haguess (nyní Hickstead) nebo RWE (nyní innogy).
Zaniklé subjekty
Posledním větším obsahovým zádrhelem je samotný zdroj dat. Ačkoliv dostáváme skoro kompletní veřejný rejstřík, při analýze otevřených dat se často používají i další zdroje ze systému ARES. Například Registr ekonomických subjektů (RES) od Českého statistického úřadu je velmi hodnotný zdroj informací, má totiž oproti veřejnému rejstříku pár informací navíc:
- Obory působnosti podle standardních kategorií NACE, pro snadnou klasifikaci podniku do mezinárodně používaných kategorií.
- Právní forma a institucionální sektor (čímž se dají do určité míry oddělit soukromé a veřejné subjekty).
- Přibližný počet zaměstnanců, čímž se dá aproximovat velikost podniku.
- Obsahuje i subjekty mimo veřejný rejstřík, např. ministerstva, Úřad vlády ČR, města a další veřejné subjekty (ne však všechny – subjekty zřízené jinými veřejnými subjekty již v rejstříku nenalezneme).
Zejména poslední bod je klíčový. Nejedna analýza výdajů veřejných prostředků začíná provázáním dat nejprve s RES pro získání základních informací a až posléze člověk kombinuje data s veřejným rejstříkem. Pokud by šel člověk rovnou do rejstříku, mohl by omylem vyloučit nemálo dat k veřejným subjektům, které by v rámci párování kvůli jejich absenci ve veřejném rejstříku vynechal.
Z obsahových pozitiv vítám fakt, že v balíku jsou i zaniklé subjekty. Ty byly ve všech API v systému ARES, ale například přes hledání na webu ARES se k nim nedostanete, přístup k nim byl omezen na základě podnětu od ÚOOÚ, jsou ale stále viditelné ve zdrojových rejstřících.
Pro koho by byl dataset nedostatečný – zejména co se týče dat narození či historizace některých polí – může nyní snadněji stáhnout celý veřejný rejstřík. Nejenže má nyní konečně seznam relevantních IČO, ale MFČR navýšilo nově limity svých API a denně je možné požádat až o 60 000 záznamů. Doba potřebná ke stažení celého datasetu se tak zkrátí na 16 dní, případně na měsíc, pokud by člověk chtěl i dataset RES.
Lepší časy?
Celkově vzato je nový dump části systému ARES pozitivní zprávou. Analytici získávají datový zdroj, který potřebují pro zpracování vlastnických struktur, „shora“. Je otázka, na kolik MFČR ulehčí svým serverům, které doposud museli lidé bombardovat dotazy na jejich API – pro mnohé totiž může být nabízený dataset nedostatečný, takže ve svých praktikách stahování z API budou pokračovat. Čas ukáže.
Uvítal bych, kdyby se mezi dumpy dostal i RES nebo RŽP (Živnostenský rejstřík), ale jelikož tyto zdroje nejsou uvedené v onom vládním nařízení, nejspíš se nedočkám. Z obsahového hlediska bude nový dataset dle mého soudu spoustě analytiků vyhovovat, nemálo z nich ale narazí na absenci dat narození, která jsou zkrátka nezbytná pro jakoukoli pokročilejší analýzu vlastnických vztahů.
Když vzpomenu na všechen ten čas strávený stahováním a parsováním dat z ARES, jsem celkem rád, že noví uživatelé to budou mít o poznání snazší. Celý tento datový extrakt však ukazuje na to, že ministerstvo šlo cestou nejmenšího odporu a nenabídlo konzumentům obsahu ani o píď navíc oproti specifikaci z vlády. Buďme ale rádi i za to, co jsme obdrželi, a vyčkejme: třeba se blýská na lepší časy.