Я пытаюсь извлечь данные из API OData служб государственной статистики Уэльса. Подробности об API можно найти здесь , включая пример того, как фильтровать данные.
Однако я, кажется, получаю недетерминированное подмножество данных, то есть каждая попытка приводит к разному количеству возвращаемых записей.
Ниже приведен простой воспроизводимый пример.
Дополнительно я также попробовал:
- с использованием
RJSONIO::fromJSON()
, что дает тот же результат.
- пытается использовать URL
odata.nextLink
, если он возвращается в объекте json, для извлечения дополнительных данных. Опять же, каждая попытка приводит к объекту другого размера.
Любое понимание будет высоко ценится.
## preliminaries
library(jsonlite)
# prepare filters
filter1 <- "Column_ItemName_ENG"
filter1.value <- "Gross%20expenditure"
filter2 <- "Row_ItemName_ENG"
filter2.value <- "Parking%20of%20vehicles"
query <- paste0("http://open.statswales.gov.wales/en-gb/dataset/lgfs0009?$filter=",
filter1, "%20eq%20%27", filter1.value, "%27%20and%20",
filter2, "%20eq%20%27", filter2.value, "%27")
# test 1
test1 <- jsonlite::fromJSON(query)
test1 <- test1[[2]]
# test 2
test2 <- jsonlite::fromJSON(query)
test2 <- test2[[2]]
# test 3
test3 <- jsonlite::fromJSON(query)
test3 <- test3[[2]]
# compare results
nrow(test1)
nrow(test2)
nrow(test3)
PS: этот вопрос перекрестно опубликован RStudio Community , и я обещаю обновить любую публикацию соответствующими решениями, найденными на другой.