PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Подайте SQL функции във филтърната функция dplyr в базата данни


A "dplyr -only" решението би било това

tbl(my_con, "my_table") %>% 
  filter(batch_name %like% "batch_A_%") %>% 
  collect()

Пълен reprex :

suppressPackageStartupMessages({
  library(dplyr)
  library(dbplyr)
  library(RPostgreSQL)
})

my_con <- 
  dbConnect(
    PostgreSQL(),
    user     = "my_user",
    password = "my_password",
    host     = "my_host",
    dbname   = "my_db"
  )

my_table <- tribble(
  ~batch_name,    ~value,
  "batch_A_1",     1,
  "batch_A_2",     2,
  "batch_A_2",     3,
  "batch_B_1",     8,
  "batch_B_2",     9
)

copy_to(my_con, my_table)

tbl(my_con, "my_table") %>% 
  filter(batch_name %like% "batch_A_%") %>% 
  collect()
#> # A tibble: 3 x 2
#>   batch_name value
#> *      <chr> <dbl>
#> 1  batch_A_1     1
#> 2  batch_A_2     2
#> 3  batch_A_2     3

dbDisconnect(my_con)
#> [1] TRUE

Това работи, защото всички функции, които dplyr не знае как да преведе, ще бъдат предадени така, както са, вижте ?dbplyr::translate\_sql .

Съвет към @PaulRougieux за скорошния му коментартук



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Правилен генератор на идентификатори на Hibernate за колона postgres serial/bigserial?

  2. Как да получите разлика от дни/месеци/години (datediff) между две дати?

  3. Не може да се вмъкне JSON от PostgreSQL към elasticsearch. Получаване на грешка - „Изключение при изпълнение на JDBC заявка“

  4. Postgres оптимизация на заявки (принудително сканиране на индекс)

  5. Заявка с помощта на две стойности на колони за създаване на диапазон