Как использовать параметризованный SQL с dplyr?
Я пытаюсь выполнить SQL-запрос с помощью dplyr на SQL Server:
tbl(con, sql(sqlQuery))
Запрос генерируется динамически с использованием sprintf("SELECT ... WHERE a = '%s')
, Это плохая практика, потому что ее можно использовать для внедрения SQL, но я не могу найти документацию или рабочий пример для параметризованных запросов в dplyr. Это можно сделать, как?
Связь (con
) использует DBI, библиотеку odbc и драйвер ODBC для {SQL Server Native Client 11.0}:
con <- DBI::dbConnect(odbc::odbc(),
Driver = "{SQL Server Native Client 11.0}",
1 ответ
В зависимости от того, для чего вам нужны ваши параметры, на основе вашего примера это выглядит так: WHERE
утверждение, вы можете просто определить параметр в R, а затем использовать его ваши глаголы dplyr.
my_param <- "FILTER_VALUE" #create param
my_table <- tbl(con, "TABLE_NAME") #create ref tibble
my_table <- my_table %>% filter( a == my_param ) # filter by param
my_table <- my_table %>% collect() # execute query
На все, что вы назначаете в R, можно ссылаться в filter
или же mutate
,