PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

डेटाबेस पर dplyr फ़िल्टर फ़ंक्शन में SQL फ़ंक्शन पास करें


एक "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. पंडों ने read_sql_table के साथ बहुत अधिक मेमोरी का उपयोग किया

  2. Postgresql में पंक्ति मिलान होने तक चयन करें?

  3. पोस्टग्रेएसक्यूएल तिथि अंतर

  4. Amazon Redshift में NULLS को पहले लागू करना

  5. Powershell का उपयोग करके दूरस्थ PostgreSql डेटाबेस से कनेक्ट करें