pttry / pttrobo

Automation of PTT data
https://pttry.github.io/pttrobo/
Other
1 stars 0 forks source link

Tullin (ja EKP:n) tiedot yaml:muodossa #7

Closed jhuovari closed 2 years ago

jhuovari commented 2 years ago

Mitenkä Tullin haut olisi järkevä koodata yaml:iin, kun pelkkä id ei riitä. @itkonen

jhuovari commented 2 years ago

Me tarvitaan kuitenkin ainakin tullista dl_filterin kautta tietoja. yaml:ssahan voisi olalla tiedot: -kohdan sijaan olla dl_filter, jolloin tiedot haettaisiin sen kautta.

Vai onko helpompi tehdä tidy-taulukot? Meillä on sekä metsä että maatalouspuolella joitain tietoja, jossa tuotteet haetaan CN8 tasolta. @itkonen

itkonen commented 2 years ago

Nyt kun tulli-datoissa on uusi api, joka hoitaa hakujen palastelut, tuon voisi hoitaa suhteellisen helposti myös yaml_to_excel funktiossa. Voin kirjoitaa funktion niin, että tulli-datan tapauksessa tiedot syötetään filteröinnin sijaan data-funktioon.

Jos esimerkiksi haette CN8 listauksen koodit komennolla

data("tulli/uljas_cn", dl_filter = list(
  `Tavaraluokitus CN8` = NA
))

niin siitä pääse katsomaan, missä muodossa koodit pitää syöttää data-funktiolle. (Kun dl_filterin listaan laittaa nimetyn NA-arvon, funktio palauttaa tuon nimisen luokituksen kaikki vaihtoehdot). Jos haluatte käyttää useampia CN-luokituksen tasoja samassa haussa, vaihtoehtoiset koodit saa vastaavasti komennolla:

data("tulli/uljas_cn", dl_filter = list(
  `Tavaraluokitus CN` = NA
)) $`Tavaraluokitus CN` |> View()

Varsinaista data-hakua varten filteriin voi sitten syöttää vektorina luokitusten koodit. dl_filteriin on hyvä syöttää samalla myös muita rajoitteita, sillä tietomäärä ja latausaika paisuu helposti, jos hakee kaikki kombinaatiot.

data("tulli/uljas_cn", dl_filter = list(
  `Tavaraluokitus CN` = c("0101", "010231"),
  Maa = "AA",
  Suunta = 1:2,
  Indikaattorit = "V1"
))

Vaihtoehtoisesti voin toki kirjoittaa näitä hakuja tidy_scripteiksi, jolloin käyttö on paljon helpompaa, mutta toisaaltaa hakujen muuttaminen on vaikeampaa.

jhuovari commented 2 years ago

Joo, kuulostaa hyvältä, ehkä se on helpompaa, että voi hakea dl_filterin avulla kuin, että ovat tidy:na.

Niistä ulkomaankauppa tidy:sta puuttui muuten frekvenssi-atribuutti, joten datan koonti ei niille toimi.

itkonen commented 2 years ago

Joo, lisään frekvenssin mukaan. Se vaatii vähän kikkailua, kun tullin api kerro sitä suoraan. Yritän lisätä tämän ominaisuuden huomiseksi.

itkonen commented 2 years ago

Nyt tullidatan mukana tulee frekvenssi-metatieto.

Muutin myös yaml_to_excel-funktion ehdolliseksi niin, että yamlin tiedot kenttä menee tullidatan kohdalla dl_filteriin. Eli yammeliin voi kirjoittaa suodattimet tuttuun tyyliin.

jhuovari commented 2 years ago

Hyvä kiitos. Pitäisikö se kuitenkin olla niin, että täytyy määrittää dl_filter? ECB:n tiedothan menee myös sen kautta, vai onko ne vaan poikkeustapauksia, joten ne voi vaan olettaa lähteen perusteella?

jhuovari commented 2 years ago

ptt_update_ennustedata("MAdata_Tulli", start_year = 2012) ei toimi Error in UseMethod("filter") : no applicable method for 'filter' applied to an object of class "c('robonomist_data', 'list')"

itkonen commented 2 years ago

Ehdotan, että tehdään koodiin poikkeustapaus myös ECB:lle, jos on tarpeen. Näin loppukäyttäjän ei tarvitse muistaa, mikä toimii mitenkin. Backendia voi sitten tarvittaesssa johdonmukaistaa myöhemmin.

Tullin API:ssa näyttäisi olevan bugi, jonka johdosta kaikki erikoismerkit eivät kelpaa syötteeksi. Jonkin verran olen näitä jo aiemmin paikkaillut meidän koodissa, mutta lisäsin pari uutta workaroundia. Testailen vielä hieman ja vien sitten paikkauksen teidän palvelimelle.

itkonen commented 2 years ago

Kokeiles nyt. Päivitin serveriä ja pttrobo-pakettia.

jhuovari commented 2 years ago

Näyttäisi toimivat, kiitos