robonomist / robonomistClient

https://robonomist.github.io/robonomistClient/
1 stars 0 forks source link

Tullin tilastojen indikaattori-tieto ei toimi #39

Closed pskinnun closed 8 months ago

pskinnun commented 9 months ago

Tullin tilastojen lataamisessa on tapahtunut joku muutos. En tiedä onko tarkoituksella, mutta indikaattori-tietoon tulee jostain syystä ylimääräistä metatietoa. Indikaattori-tietoon tulee tyhjä kohta (kaksi ";" putkeen).


data(
  "tulli/uljas_sitc",
  dl_filter = list(
    "Tavaraluokitus SITC2" = c("00"),
    "Maa" = "AA")) |> 
  pull(Indikaattorit) |> 
  unique()

✔ Requesting data [175ms]
 [1] "Tilastoarvo (euro);;Valitun ajanjakson tilastoarvo (kuukausi, neljännes, vuosi). Viennin tilastoarvoon (FOB-arvo) sisältyy tavaran toimittamisesta aiheutuneet kustannukset (rahti ja vakuutus) Suomen rajalla olevaan vientipaikkaan saakka. Tuonnin tilastoarvoon (CIF-arvo) sisältyy tavaran toimittamisesta aiheutuneet kustannukset (rahti ja vakuutus) Suomen rajalla olevaan ensimmäiseen rajanylityspaikkaan saakka."
 [2] "Muutos%;;Tilastoarvon muutos verrattuna edellisen vuoden vastaavaan ajanjaksoon."                                                                                                                                                                                                                                                                                                                                            
 [3] "Paljous;;Tavaran määrän nettopaljous. Useimmiten kilogrammoina, jos saatavana."  
itkonen commented 8 months ago

Tulli oli yllättäen muuttanut API:n toimintaa. Nykyisessä roboserverin versiossa tämä on korjattu takaisin ennallen.

pskinnun commented 7 months ago

Tässä on vielä vähän jotain epäselvää. Tuolta dl_filteristä indikaattori tieto ei jostain syystä toimi.

# Tämä ei toimi
data(
  "tulli/uljas_sitc",
  dl_filter = list(
    "Tavaraluokitus SITC2" = c("00", "01", "02", "03", "04", "05", "06", "07", "08", "09",
                               "11"),
    "Maa" = "AA",
    "Suunta" = c("Vienti määrämaittain", "Tuonti alkuperämaittain"),
    "Indikaattorit" = "Tilastoarvo (euro)"
  )
) 

→ Request failed in server error:                       
 ! in callr subprocess.
Caused by error in `cache(robonomist_data(private$download_data(id = id, lang = lang, …`:
! Failed to compute and could not find a cache backup.
At key:
List of 9
$ : chr "data"
$ : chr "v1"
$ : chr "tulli"
$ : chr "Tulli"
$ : r_id [1:1] tulli/uljas_sitc
$ : NULL
$ filter:List of 4
$ labels: logi TRUE
$ na.rm : logi FALSE
Caused by error in `map()`:
ℹ In index: 1.
Caused by error:
! lexical error: invalid char in json text.
                                       <error ifile="/DATABASE/01 ULKO
                     (right here) ------^

# Tämä toimii, ilman indikaattori tietoa
data(
  "tulli/uljas_sitc",
  dl_filter = list(
    "Tavaraluokitus SITC2" = c("00", "01", "02", "03", "04", "05", "06", "07", "08", "09",
                               "11"),
    "Maa" = "AA",
    "Suunta" = c("Vienti määrämaittain", "Tuonti alkuperämaittain")
  )
) 
itkonen commented 7 months ago

Helpoin ratkaisu on käyttää filtterissä muuttuja-arvojen koodeja:

data(
  "tulli/uljas_sitc",
  dl_filter = list(
    "Tavaraluokitus SITC2" = c(
      "00", "01", "02", "03", "04", "05", "06", "07", "08", "09",
      "11"
    ),
    "Maa" = "AA",
    "Suunta" = 1:2,
    "Indikaattorit" = "V1"
  )
)

Mutta siis Tullin API-muutos on aiheuttanut hassun tilanteen. Filterissä voi käyttää sekä muuttuja-arvojen koodeja että nimikkeitä, mutta nyt kun nimikkeeseen on lisätty selite, pitäisi laittaa se kokonaisuudessaan. Eli:

data(
  "tulli/uljas_sitc",
  dl_filter = list(
    "Tavaraluokitus SITC2" = c(
      "00", "01", "02", "03", "04", "05", "06", "07", "08", "09",
      "11"
    ),
    "Maa" = "AA",
    "Suunta" = 1:2,
    "Indikaattorit" = "Tilastoarvo (euro);;Valitun ajanjakson tilastoarvo (kuukausi, neljännes, vuosi). Viennin tilastoarvoon (FOB-arvo) sisältyy tavaran toimittamisesta aiheutuneet kustannukset (rahti ja vakuutus) Suomen rajalla olevaan vientipaikkaan saakka. Tuonnin tilastoarvoon (CIF-arvo) sisältyy tavaran toimittamisesta aiheutuneet kustannukset (rahti ja vakuutus) Suomen rajalla olevaan ensimmäiseen rajanylityspaikkaan saakka."
  )
)

Tässä kohtaa helpompaa on siis käyttää koodeja. Koodit saa apista esiin helposti, kun laittaa NA-arvon muuttujan tilalle:

data(
  "tulli/uljas_sitc",
  dl_filter = list(
    "Tavaraluokitus SITC2" = c(
      "00", "01", "02", "03", "04", "05", "06", "07", "08", "09",
      "11"
    ),
    "Maa" = "AA",
    "Suunta" = 1:2,
    "Indikaattorit" = NA
  )
)