položku "Zriadenie dátovej kancelárie vo verejnej správe" v Národnáňej koncepcii informatizácie verejnej správy (NKIVS)), tak o.i. vyvstala drobná praktická otázka, čo si má čerstvý nový dátový kurátor, alebo laik, predstaviť pod pojmom "čistenie dát"? Pojem to je vlastne veľmi dôležitý, keďže konzument údajov vie málokedy použiť údaje rovno v takej forme, v akej ich získal. Údaje totiž treba takmer vždy skonvertovať, prečistiť, spárovať a pod., aj preto idú mnohé štátne či súkromné investície to tzv. ETL nástrojov (ETL = Extract Transform Load), pričom práve krok "transform" má na starosti o.i. čistenie dát.
Keďže sa v SR v súčasnosti rozbieha činnosť dátových kancelárií a dátových kurátorov (viď povedzme...
Ďalšie dva riadky sú príkladom obsahu. Je v nich však niekoľko položiek, ktoré síce nie sú zlé (sú v súlade so štandardom RFC 4180), ale mierne komplikujú ďalšiu prácu s údajmi (ak ich chcem povedzme spracúvať v Python skripte a neskôr v databáze):
položka | EKS údaj | čo potrebujem v Python-e resp. neskôr v DB | poznámka |
---|---|---|---|
DatumVyhlasenia | "21.11.2018 11:48:06" | 21.11.2018T11:48:06 | o.i. konvertujeme formát dátumu, aby bol dátum v tzv. ISO formáte a teda vedel som ho použiť priamo ako premennú typu 'datetime' (t.j. dátum s časom) |
MnozstvoHodnota | "750,0000" | 750.0 | o.i. konvertujeme čiarku (používaná podľa slovenského pravopisu) na bodku (programátorská konvencia), aby bola hodnota priamo použiteľná ako premenná typu 'float' (t.j. desatinné číslo) |
PocetNotifikovanychDodavatelov | "250" | 250 | odstraňujeme úvodzovky, aby bola hodnota priamo použiteľná ako premenná typu 'integer' (t.j. celé číslo) |
Príklad, ako potom vyzerá reálny (a nie úplne dokonalý) Python skript, ktorý také čistenie robí, možno nájsť tu:
https://github.com/OpenDataSk/eks-od-datastore-pusher/blob/master/datastore_updater.py#L291,L331
Úryvok:
Code Block | ||
---|---|---|
| ||
def convert_date(eks_date): """Convert date used by EKS to ISO date, e.g.: '5.3.2018 9:00:00' -> '2018-03-05T09:00:00' """ if len(eks_date) <= 0: return None date = datetime.datetime.strptime(eks_date, '%d.%m.%Y %H:%M:%S') return date.isoformat() |
(Kód je k dispozícii ako Open Source - BSD licencia, takže ho môžete kľudne použiť ďalej, či už celý alebo po kúskoch.)
...
- používať úvodzovky len keď naozaj treba, t.j. tam, kde sú v hodnote použité čiarky (t.j. nie v číslach a krátkych reťazcoch, a pod.)
- v desatinných číslach používať bodku (nie čiarku) ako oddeľovač desatinných miest
Tip |
---|
Význam toho, ako presne sú údaje publikované stúpa s tým, ako veľmi a ako zložito treba údaje čistiť. Čím je čistenie zložitejšie, tým konzumenti údajov viac uvítajú úpravy zverejňovania, ktoré čistenie eliminujú alebo uľahčia. A tiež, čím viac je konzumentov (čím väčšie vyššie spomenuté X), tým väčší dopad majú aj malé zmeny. |
Toť teda krátke priblíženie pre dátových kurátorov alebo aj laikov, ktorí by neskôr mohli zlepšiť zverejňovanie niektorých otvorených údajov.
...
Peter Hanečák, 19.12.2018
obrázok: NASA: "Goddard Engineers Prepare Hubble's New Batteries"