Я передаю строку запроса соединению, и результат должен выглядеть следующим образом:
select game_name, month, count(*) as count
from device_metrics.mtu_events
where YEAR = '2019' and month between '07' and '09'
group by game_name, month
order by game_name asc, month asc
Это прекрасно работает, если я передам вышеуказанный блок как одну строку в DBI::dbGetQuery(con, myquery)
Но даты - это переменная в блестящем приложении, поэтому я попытался создать функцию для генерации строки запроса:
my_query <- function(start_date, end_date) {
yr <- year(ymd(start_date))
month_start <- month(ymd(start_date))
month_end <- month(ymd(end_date))
query <- paste0(
"select game_name, month, count(*) as count
from device_metrics.mtu_events
where YEAR = ", yr, " and month between ", month_start, " and ", month_end,
" group by game_name, month
order by game_name asc, month asc")
return(query)
}
Когда я вызываю эту функцию и пытаюсь запросить ее в нашей базе данных, я получаю :
Ошибка клиента Athena AWS. Ошибка Афины: 372, код ответа HTTP: 1, сообщение об ошибке: SYNTAX_ERROR: строка 3:15: «=» нельзя применить к varchar, целое число
Существует ли «правильный» способ сделать это? Как я могу построить строку запроса с переменными и затем перейти к DBI::dbGetQuery()