Skip to content

Conversation

@sedmar
Copy link

@sedmar sedmar commented Sep 8, 2022

Pridani schopnosti zpracovat pri parsovani ARESu pole predmet cinnost a predmet podnikani. Do vystupniho csv je pridan sloupec "cinnosti" kde v kazdem radku je json dictionary s klici PredmetPodnikaniText a PredmetCinnostiText. Hodnoty u kazdeho klice jsou strednikem oddelene predmety cinnosti pripadne predmety podnikani (muze byt 0 nebo N).

@kokes
Copy link
Owner

kokes commented Sep 8, 2022

Ahoj, díky za PR!

  1. Ten timestamp u csv exportu se mi líbí, často se mi stává, že si přemažu starý exporty. Asi by to mělo být separé PR, ale tady to asi nevadí, protože nemám moc námitek
  2. K těm činnostem... hele, já bych je tam klidně měl, ale nejsem moc fanda hodně složitých datových JSON struktur v rámci jednoho sloupce. a) blbě se to dotazuje (je to samý UNNEST, split na středník a pak zpátky atd.), b) dost to navyšuje velikost řádku a tím pádem cache efficiency při dotazování. Navíc v tomhle případě jde o docela tučný element, takže já bych se vůbec nebránil nové tabulce. Navíc se to pak obejde bez nových funkcí pro extrakci dat. Svůj nástřel dávám zde (chybí tam aktualizace schema.py, ale to je triviální).
diff --git a/data/ares/main.py b/data/ares/main.py
index 8ff002f..9a96cff 100644
--- a/data/ares/main.py
+++ b/data/ares/main.py
@@ -87,10 +87,13 @@ def remote_data(partial):
 def main(outdir: str, partial: bool = False):
     with open(os.path.join(outdir, "firmy.csv"), "w", encoding="utf8") as ud, open(
         os.path.join(outdir, "fosoby.csv"), "w", encoding="utf8"
-    ) as fo, open(os.path.join(outdir, "posoby.csv"), "w", encoding="utf8") as po:
+    ) as fo, open(os.path.join(outdir, "posoby.csv"), "w", encoding="utf8") as po, open(
+        os.path.join(outdir, "cinnosti.csv"), "w", encoding="utf8"
+    ) as co:
         udc = csv.writer(ud, lineterminator="\n")
         foc = csv.writer(fo, lineterminator="\n")
         poc = csv.writer(po, lineterminator="\n")
+        coc = csv.writer(co, lineterminator="\n")
 
         cols = [
             "zdroj",
@@ -133,6 +136,13 @@ def main(outdir: str, partial: bool = False):
                 "adresa",
             ]
         )
+        coc.writerow(
+            [
+                "ico",
+                "typ_cinnosti",
+                "text",
+            ]
+        )
 
         for rw, (el, fl) in enumerate(remote_data(partial)):
             et = lxml.etree.fromstring(fl)
@@ -203,6 +213,13 @@ def main(outdir: str, partial: bool = False):
                 for j in org["posoby"]:
                     poc.writerow(j)
 
+            for txt in vypis.iterfind(
+                ".//are:Cinnosti/*/are:Text", namespaces=et.nsmap
+            ):
+                text = txt.text.strip()
+                ctype = txt.getparent().tag.rpartition("}")[-1]
+                coc.writerow([ico, ctype, text])
+
 
 if __name__ == "__main__":
     main(".")

Celý soubor bez diffu je tady: https://gist.github.com/kokes/c2f155c26a03ac93a50fe7e52e7a15a4

Co myslíš?

@sedmar
Copy link
Author

sedmar commented Sep 13, 2022

Ahoj, sorry za zpozdeni, ted jsem zkousel to tvoje navrhovane reseni a libi se mi vic, z pohledu datovych struktur je to asi i cistsi nez to moje.

@sedmar sedmar mentioned this pull request Feb 26, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants