Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Image AddedKeďže sa v SR v súčasnosti rozbieha činnosť dátových kancelárií a dátových kurátorov (viď povedzme 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.

...

Ď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žkaEKS údajčo potrebujem v Python-e resp. neskôr v DBpoznámka
DatumVyhlasenia"21.11.2018 11:48:06"21.11.2018T11:48:06o.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.0o.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"250odstraň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
languagepy
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"