Я могу успешно запрашивать данные из Localytics, используя R, например, в следующем примере:
r <- POST(url = "https://api.localytics.com/v1/query,
body=list(app_id=<APP_ID>,
metrics=c("occurrences","users"),
dimensions=c('a:URI'),
conditions=list(day = c("between", "2020-02-11", "2020-03-12"),
event_name = "Content Viewed",
"a:Item URI" = "testing")
),
encode="json",
authenticate(Key,Secret),
accept("application/json"),
content_type("application/json"))
stop_for_status(r)
Но я хотел бы создать функцию, чтобы я мог делать это быстро и не копировать / вставить данные.
Проблема, с которой я сталкиваюсь, связана со строкой "a:Item URI" = "testing"
, где я фильтрую все поиски по URI элемента, где все они равны "testing"
, но иногда я не хочу включать фильтр оператор, поэтому я просто полностью удаляю эту строку.
Когда я писал свою функцию, я пробовал что-то вроде следующего:
get_localytics <- function(appID, metrics, dimensions, from = Sys.Date()-30,
to = Sys.Date(), eventName = "Content Viewed",
Key, Secret, filterDim = NULL, filterCriteria = NULL){
r <- httr::POST(url = "https://api.localytics.com/v1/query",
body = list(app_id = appID,
metrics = metrics,
dimensions = dimensions,
conditions = list(day = c("between", as.character(from), as.character(to)),
event_name = eventName,
filterDim = filterCriteria)
),
encode="json",
authenticate(Key, Secret),
accept("application/json"),
content_type("application/json"))
stop_for_status(r)
result <- paste(rawToChar(r$content),collapse = "")
document <- fromJSON(result)
df <- document$results
return(df)
}
Но моя попытка добавить filterDim
и filterCriteria
выдает только ошибку Unprocessable Entity
. (Имейте в виду, что существует множество переменных, по которым я могу фильтровать, а не только "a:Item URI"
, поэтому мне нужно иметь возможность также манипулировать этим.
Как мне включить утверждение, где, если мне нужно фильтр, я могу включить эту строку, но если мне не нужно фильтровать, эта строка не включается?