Как использовать параметризованный 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,

Другие вопросы по тегам