Tento dokument popisuje krok za krokem jak kód stáhnout, nachystat na spuštění a spustit.
Výstup předchozího spuštění skriptu (tj. webové logy procesu a dokumentace) jsou dostupné na https://esif-data-cleaning.netlify.app/.
Co je třeba:
viz soubor LICENSE.
Kód je v soukromém git repozitáři na Githubu; k přístupu je potřeba Github účet a zpřístupnění vlatníkem (momentálně Petr Bouchal, pbouchal@gmail.com).
Tyto kroky je potřeba udělat jen jednou.
2 možnosti:
git clone https://github.com/petrbouchal/mmr-esif-clean/
Veškerý kód určený k “ostrému” využití je v branchi master
.
Adresář lze otevřít jako projekt v RStudiu. To lze udělat otevřením souboru mmr-esif-clean.Rproj
.
Bude ale fungovat i v R v příkazové řádce.
Poznámka: všechny adresářové cesty v dokumentaci i kódu jsou relativní k adresáři projektu.
Tyto kroky je potřeba udělat jen jednou po stažení kódu z Githubu
Po otevření projektu v RStudiu, popř. spuštění R v terminálu v adresáři by měla automaticky proběhnout instalace balíku renv
, který udržuje fixované prostředí balíků potřebných pro analýzu ve správných verzích.
Pokud by v tomto kroku došlo k chybě, lze balík nainstalovat příkazem install.packages(renv)
a následně pro jistotu aktualizovat záznam prostředí pro nainstalovanou verzi balíku renv
příkazem renv::upgrade()
.
Následně je třeba v adresáři vytvořit kopii prostředí (sady balíků) potřebného pro spuštění kódu:
renv::restore()
Pokud v této fázi nastane neřešitelná chyba, lze správu prostředí vypnout (renv::deactivate()
) a balíky nainstalovat ručně. Stav balíků při posledním úspěšném buildu lze dovodit ze souboru renv.lock
, popř. v této části webového odrazu dokumentace.
data-input
podadresář, pojmenujte jakkoli a vložte do něj excelové (.xlsx
) soubory - pro každý OP jeden. Název každého souboru by měl být stejný jako v původní sadě, s mezerami, tj. např. "OP Z.xlsx"
data-input/nova_data
) do parametru input_dir
v souboru config.yml
.data-input/CHKONP.xlsx
novým, popř. vložte pod novým názvem a upravte parametr v input_chu_xlsx
Celý proces naráz lze spustit skriptem build-and-render.R
. Tento skript:
.Rmd
souborech a vygeneruje z toho vyplývající webovou prezentaciPro snadnější spuštění z příkazové řádky existuje i skript build-and-render.sh
, která udělá totéž bez nutnosti spouštět R nebo RStudio.
V současném stavu je v datech cca 119 projektů, u kterých jsou uvedeny vnitřně nekonzistentní geografické údaje, např. ukazují realizaci projektu zároveň v kraji a zároveň v obci, která ale není v daném kraji.
U těchto projektů je třeba manuálně rozhodnout, který údaj se použije.
TO DO
Jak na to:
data-output/prj_nehierarchicke.xlsx
vybrat
hodnotu TRUE
nebo jen T
. Ostatní můžete nechat prázdné (tj. netřeba vkládat FALSE
).
TRUE
do sloupce vybrat
, nebo ve všech řádcích vložíte FALSE
), projekt se ve výstupních datech vůbec neobjevídocs/widget.html
nebo na https://esif-data-cleaning.netlify.app/widget.html.data-manual/prj_nehierarchicke-resolved.xlsx
input_resolved_xlsx
v config.yml
)export-excel.R
.Pokud
Celé workflow není centrálně orchestrováno ani cacheováno žádným workflow nástrojem á la make
; jde jednoduše o posloupnost skriptů, které si mezivýstupy předávají přes datové exporty v adresářích data-input
(hrubá externí data) a data-processed
(zpracovaná data). Každý skript poběží sám o sobě, ale předpokládá přítomnost mezivýstupů předchozích skriptů v těchto adresářích.
R skripty zmíněné v build-and-render.R
načítají vlastní ESIF data a externí data a metadata z ČSÚ, ČÚZK a Státní pokladny Ministerstva financí. Jako mezivýstup ukládají stažené datové soubory v data-input
a parquet
/Rds
obraz vstupních ESIF dat a některých metadat v data-processed
.
Explorace, validace i transformace a export dat se dějí v Rmd skriptech, které zároveň provádí datové úkony a exporty a zároveň generují webový výstup. (To není ideální setup pro případné produkční nasazení, ale je funkční pro interaktivní práci s jednotlivými částmi workflow.)
Mezivýstupy se běžně přepisují, tj. při novém spuštění vzniknou nové, ale v několika případech jsou znovuvyužity, pokud existují, aby se ušetříl čas. Zcela čisté spuštění tedy vyžaduje vymazání obsahu adresářů data-input
(s výjimkou adresáře s excelovými vstupy) a adresáře data-processed
.
Celkové pořadí spouštění odpovídá skriptu build-and-render.R
.
Rmd skripty, které společně tvoří webovou prezentaci a zároveň provádějí datovou validaci a transformaci, se společně v abecedním pořadí spustí příkazem rmarkdown::render_site()
(též zahrnut v build-and-render.R
), ale lze je spouštět i samostatně přes rmarkdown::render("xxx.RMd")
nebo tlačítkem Knit
v Rstudiu.
docs
: lze ji otevřít lokálně v prohlížeči poklepáním na soubor index.html
.data-output
data-export
Webovou prezentaci v adresáři docs
lze snadno zveřejnit kdekoli. V souboru .netlify/state.json
je nastavení použitelné pro rychlý deploy na netlify; pokud bude potřeba stránku aktualizovat na Netlify, můžu subdoménu na někoho převést, nebo bude třeba tento soubor smazat a navázat projekt na novou subdoménu na Netlify.
Konfigurace a struktura webové prezentace jsou upraveny v _site.yml
; viz dokumentaci k rmarkdown websites.
Zcela nové spuštění načisto vyžaduje:
data-input
vyjma adresáře se vstupními excelydata-processed
data-output
data-manual
jen pokud nechceme využít předchozí manuální rozřešení nekonzistentních projektůTyto kroky nechávám jako manuální, aby nedocházelo k nechtěnému mazání výstupů nějakým skriptem.